Notitie
Voor toegang tot deze pagina is autorisatie vereist. U kunt proberen u aan te melden of de directory te wijzigen.
Voor toegang tot deze pagina is autorisatie vereist. U kunt proberen de mappen te wijzigen.
Korte beschrijving
Beschrijft matrices, dit zijn gegevensstructuren die zijn ontworpen om verzamelingen items op te slaan.
Lange beschrijving
Een matrix is een gegevensstructuur die is ontworpen om een verzameling items op te slaan. De artikelen kunnen van hetzelfde type of verschillende typen zijn.
Vanaf Windows PowerShell 3.0 heeft een verzameling van nul of één object enkele eigenschappen van matrices.
Een matrix maken en initialiseren
Als u een matrix wilt maken en initialiseren, wijst u meerdere waarden toe aan een variabele. De waarden die in de matrix zijn opgeslagen, worden gescheiden door een komma en gescheiden van de naam van de variabele door de toewijzingsoperator (=).
Als u bijvoorbeeld een matrix met de naam $A wilt maken die de zeven numerieke (int) waarden 22, 5, 10, 8, 12, 9 en 80 bevat, typt u:
$A = 22,5,10,8,12,9,80
De komma kan ook worden gebruikt om een matrix met één item te initialiseren door de komma voor het enkele item te plaatsen.
Als u bijvoorbeeld een matrix met één item wilt maken met de naam $B die de enkele waarde 7 bevat, typt u:
$B = ,7
U kunt ook een matrix maken en initialiseren met behulp van de bereikoperator (..).
In het volgende voorbeeld wordt een matrix gemaakt met de waarden 5 tot en met 8.
$C = 5..8
Als gevolg hiervan $C bevat het vier waarden: 5, 6, 7 en 8.
Als er geen gegevenstype is opgegeven, maakt PowerShell elke matrix als een objectmatrix (System.Object[]). Als u het gegevenstype van een matrix wilt bepalen, gebruikt u de methode GetType( ). Als u bijvoorbeeld het gegevenstype van de $A matrix wilt bepalen, typt u:
$A.GetType()
Als u een sterk getypeerde matrix wilt maken, dat wil zeggen een matrix die alleen waarden van een bepaald type kan bevatten, cast u de variabele als een matrixtype, zoals string[], long[], of int32[]. Als u een matrix wilt casten, laat u de naam van de variabele voorafgaan door een matrixtype tussen haakjes. Als u bijvoorbeeld een matrix met 32-bits gehele getallen wilt maken met de naam $ia vier gehele getallen (1500, 2230, 3350 en 4000), typt u:
[int32[]]$ia = 1500,2230,3350,4000
Als gevolg hiervan kan de $ia matrix alleen gehele getallen bevatten.
U kunt matrices maken die worden gecast naar elk ondersteund type in .NET. De objecten die Get-Process worden opgehaald om processen weer te geven, zijn bijvoorbeeld van het type System.Diagnostics.Process . Als u een sterk getypeerde matrix van procesobjecten wilt maken, voert u de volgende opdracht in:
[Diagnostics.Process[]]$zz = Get-Process
De operator voor matrixsubexpressies
De operator voor matrixsubexpressies maakt een matrix op basis van de instructies in de matrix. Wat de verklaring in de operator ook produceert, de operator zal deze in een array plaatsen. Zelfs als er nul of één object is.
De syntaxis van de matrixoperator is als volgt:
@( ... )
U kunt de matrixoperator gebruiken om een matrix van nul of één object te maken. Voorbeeld:
$a = @("Hello World")
$a.Count
1
$b = @()
$b.Count
0
De matrixoperator is handig in scripts wanneer u objecten ophaalt, maar niet weet hoeveel objecten u krijgt. Voorbeeld:
$p = @(Get-Process Notepad)
Zie about_Operators voor meer informatie over de operator voor matrixsubexpressies.
Toegang tot en gebruik van matrixelementen
Een matrix lezen
U kunt naar een matrix verwijzen door de naam van de variabele te gebruiken. Als u alle elementen in de matrix wilt weergeven, typt u de naam van de matrix. Bijvoorbeeld, veronderstellend $a is een array met gehele getallen 0, 1, 2, tot 9; typt:
$a
0
1
2
3
4
5
6
7
8
9
U kunt naar de elementen in een matrix verwijzen met behulp van een index, beginnend op positie 0. Plaats het indexnummer tussen haakjes. Als u bijvoorbeeld het eerste element in de $a matrix wilt weergeven, typt u:
$a[0]
0
Als u het derde element in de $a matrix wilt weergeven, typt u:
$a[2]
2
U kunt een deel van de matrix ophalen met behulp van een bereikoperator voor de index. Als u bijvoorbeeld het tweede tot en met vijfde element van de matrix wilt ophalen, typt u:
$a[1..4]
1
2
3
4
Negatieve getallen tellen vanaf het einde van de matrix. "-1" verwijst bijvoorbeeld naar het laatste element van de matrix. Als u de laatste drie elementen van de matrix wilt weergeven, typt u in oplopende indexvolgorde:
$a = 0 .. 9
$a[-3..-1]
7
8
9
Als u negatieve indexen in aflopende volgorde typt, verandert uw uitvoer.
$a = 0 .. 9
$a[-1..-3]
9
8
7
Wees echter voorzichtig bij het gebruik van deze notatie. De notatie loopt van de eindgrens tot het begin van de array.
$a = 0 .. 9
$a[2..-2]
2
1
0
9
8
Een veelvoorkomende fout is om ervan uit te gaan dat $a[0..-2] verwijst naar alle elementen van de matrix, met uitzondering van de laatste. Deze verwijst naar de eerste, laatste en tweede naar laatste elementen in de matrix.
U kunt de plusoperator () gebruiken om een bereik te+ combineren met een lijst met elementen in een matrix. Als u bijvoorbeeld de elementen op de indexposities 0, 2 en 4 tot en met 6 wilt weergeven, typt u:
$a = 0 .. 9
$a[0,2+4..6]
0
2
4
5
6
Om meerdere bereiken en afzonderlijke elementen weer te geven, kunt u ook de plus-operator gebruiken. Bijvoorbeeld, om de elementen nul tot en met twee, vier tot zes en het element op het achtste positionele type op te sommen:
$a = 0..9
$a[+0..2+4..6+8]
0
1
2
4
5
6
8
Iteraties over matrixelementen
U kunt ook looping-constructies gebruiken, zoals ForEach, For, en While loops, om naar de elementen in een matrix te verwijzen. Als u bijvoorbeeld een ForEach lus wilt gebruiken om de elementen in de $a matrix weer te geven, typt u:
$a = 0..9
foreach ($element in $a) {
$element
}
0
1
2
3
4
5
6
7
8
9
De Foreach lus doorloopt de matrix en retourneert elke waarde in de matrix totdat het einde van de matrix wordt bereikt.
De For lus is handig wanneer u tellers verhoogt terwijl u de elementen in een array onderzoekt. Als u bijvoorbeeld een For lus wilt gebruiken om elke andere waarde in een matrix terug te geven, typt u:
$a = 0..9
for ($i = 0; $i -le ($a.length - 1); $i += 2) {
$a[$i]
}
0
2
4
6
8
U kunt een While lus gebruiken om de elementen in een matrix weer te geven totdat een gedefinieerde voorwaarde niet meer waar is. Als u bijvoorbeeld de elementen in de $a matrix wilt weergeven terwijl de matrixindex kleiner is dan 4, typt u:
$a = 0..9
$i=0
while($i -lt 4) {
$a[$i]
$i++
}
0
1
2
3
Eigenschappen van arrays
Countof LengthLongLength
Als u wilt bepalen hoeveel items een matrix bevat, gebruikt u de eigenschap of de Length alias ervan Count . Lange lengte is handig als de matrix meer dan 2.147.483.647 elementen bevat.
$a = 0..9
$a.Count
$a.Length
10
10
Rank
Berekent het aantal dimensies in de matrix. De meeste matrices in PowerShell hebben slechts één dimensie. Zelfs als u denkt dat u een multidimensionale matrix aan het bouwen bent, zoals in het volgende voorbeeld:
$a = @(
@(0,1),
@("b", "c"),
@(Get-Process)
)
"`$a rank: $($a.Rank)"
"`$a length: $($a.Length)"
"`$a[2] length: $($a[2].Length)"
"Process `$a[2][1]: $($a[2][1].ProcessName)"
In dit voorbeeld maakt u een enkeldimensionale matrix die andere matrices bevat. Dit wordt ook wel een gekartelde array genoemd. De Rank eigenschap bewees dat dit eendimensionaal is. Als u toegang wilt krijgen tot items in een gekartelde matrix, moeten de indexen tussen afzonderlijke haakjes staan ([]).
$a rank: 1
$a length: 3
$a[2] length: 348
Process $a[2][1]: AcroRd32
Multidimensionale matrices worden opgeslagen in volgorde van rij-hoofd. In het volgende voorbeeld ziet u hoe u een echt multidimensionale matrix maakt.
[string[,]]$rank2 = [string[,]]::New(3,2)
$rank2.rank
$rank2.Length
$rank2[0,0] = 'a'
$rank2[0,1] = 'b'
$rank2[1,0] = 'c'
$rank2[1,1] = 'd'
$rank2[2,0] = 'e'
$rank2[2,1] = 'f'
$rank2[1,1]
2
6
d
Als u toegang wilt krijgen tot items in een multidimensionale matrix, scheidt u de indexen met behulp van een komma (,) binnen een enkele set haakjes ([]).
Voor sommige bewerkingen op een multidimensionale matrix, zoals replicatie en aaneenschakeling, moet die matrix worden afgevlakt. Door af te vlakken verandert de matrix in een 1-dimensionale matrix van het onbeperkte type. De resulterende matrix neemt alle elementen in rij-primaire volgorde over. Bekijk het volgende voorbeeld:
$a = "red",$true
$b = (New-Object 'int[,]' 2,2)
$b[0,0] = 10
$b[0,1] = 20
$b[1,0] = 30
$b[1,1] = 40
$c = $a + $b
$a.GetType().Name
$b.GetType().Name
$c.GetType().Name
$c
De uitvoer laat zien dat $c dit een 1-dimensionale matrix is met de items van $a en $b in rij-hoofdvolgorde.
Object[]
Int32[,]
Object[]
red
True
10
20
30
40
Methoden van arrays
Clear
Hiermee stelt u alle elementwaarden in op de standaardwaarde van het elementtype van de matrix.
De Clear() methode stelt de grootte van de array niet opnieuw in.
In het volgende voorbeeld $a ziet u een matrix met objecten.
$a = 1, 2, 3
$a.Clear()
$a | % { $null -eq $_ }
True
True
True
In dit voorbeeld $intA wordt expliciet getypt om gehele getallen te bevatten.
[int[]] $intA = 1, 2, 3
$intA.Clear()
$intA
0
0
0
ForEach
Maakt het mogelijk om alle elementen in de matrix te herhalen en een bepaalde bewerking uit te voeren voor elk element van de array.
De ForEach methode heeft verschillende overbelastingen die verschillende bewerkingen uitvoeren.
ForEach(scriptblock expression)
ForEach(scriptblock expression, object[] arguments)
ForEach(type convertToType)
ForEach(string propertyName)
ForEach(string propertyName, object[] newValue)
ForEach(string methodName)
ForEach(string methodName, object[] arguments)
ForEach(scriptblock expressie)
ForEach(scriptblock expressie, object[] argumenten)
Deze methode is toegevoegd in PowerShell v4.
Opmerking
De syntaxis vereist het gebruik van een scriptblok. Haakjes zijn optioneel als het scriptblok de enige parameter is. Er mag ook geen spatie zijn tussen de methode en het haakje of de beugel openen.
In het volgende voorbeeld ziet u hoe u de ForEach methode gebruikt. In dit geval is het de bedoeling om de kwadratische waarde van de elementen in de array te genereren.
$a = @(0 .. 3)
$a.ForEach({ $_ * $_})
0
1
4
9
Net als de -ArgumentList parameter van ForEach-Objectstaat de arguments parameter toe dat een array van argumenten wordt doorgegeven aan een scriptblok dat is geconfigureerd om ze te accepteren.
Zie about_Splattingvoor meer informatie over het gedrag van ArgumentList.
ForEach(typ convertToType)
De ForEach methode kan worden gebruikt om de elementen snel naar een ander type te gieten; het volgende voorbeeld laat zien hoe u een lijst met tekenreeksdatums [DateTime] naar type converteert.
@("1/1/2017", "2/1/2017", "3/1/2017").ForEach([datetime])
Sunday, January 1, 2017 12:00:00 AM
Wednesday, February 1, 2017 12:00:00 AM
Wednesday, March 1, 2017 12:00:00 AM
ForEach(string eigenschapNaam)
ForEach(string propertyName, object[] newValue)
De ForEach methode kan ook worden gebruikt om snel eigenschapswaarden op te halen of in te stellen voor elk item in de collectie.
# Set all LastAccessTime properties of files to the current date.
(dir 'C:\Temp').ForEach('LastAccessTime', (Get-Date))
# View the newly set LastAccessTime of all items, and find Unique entries.
(dir 'C:\Temp').ForEach('LastAccessTime') | Get-Unique
Wednesday, June 20, 2018 9:21:57 AM
ForEach(string methodeNaam)
ForEach(string methodName, object[] argumenten)
ForEach Ten slotte kunnen methoden worden gebruikt om een methode uit te voeren op elk item in de collectie.
("one", "two", "three").ForEach("ToUpper")
ONE
TWO
THREE
Net als de -ArgumentList parameter van ForEach-Objectstaat de Arguments parameter het toe om een matrix van waarden door te geven aan een scriptblok dat is geconfigureerd om ze te accepteren.
Opmerking
Vanaf Windows PowerShell 3.0 kunnen het ophalen van eigenschappen en het uitvoeren van methoden voor elk item in een verzameling ook worden bereikt met behulp van "Methoden van scalaire objecten en verzamelingen". Daar lees je hier meer over about_methods.
Waar
Maakt het mogelijk om de elementen van de array te filteren of te selecteren. Het script moet evalueren naar iets anders dan: nul (0), lege tekenreeks, $false of $null voor het element om te worden weergegeven na de Where. Zie about_Booleans voor meer informatie over booleaanse evaluatie.
Er is één definitie voor de Where methode.
Where(scriptblock expression[, WhereOperatorSelectionMode mode
[, int numberToReturn]])
Opmerking
De syntaxis vereist het gebruik van een scriptblok. Haakjes zijn optioneel als het scriptblok de enige parameter is. Er mag ook geen spatie zijn tussen de methode en het haakje of de beugel openen.
Het Expression is scriptblok dat nodig is voor filteren, het mode optionele argument biedt extra selectiemogelijkheden en het numberToReturn optionele argument biedt de mogelijkheid om te beperken hoeveel items worden geretourneerd door het filter.
De acceptabele waarden voor mode zijn:
- Default (0) - Retourneer alle artikelen
- First (1) - Retourneer het eerste artikel
- Last (2) - Retourneer het laatste artikel
- SkipUntil (3) - Sla artikelen over totdat de staat waar is, retourneer alle resterende artikelen (inclusief het eerste artikel waarvoor de voorwaarde geldt)
- Until (4) - Retourneer alle artikelen totdat de staat waar is
-
Split (5) - Retourneer een array van twee elementen
- Het eerste element bevat overeenkomende items
- Het tweede element bevat de overige items
In het volgende voorbeeld ziet u hoe u alle oneven getallen uit de matrix selecteert.
(0..9).Where{ $_ % 2 }
1
3
5
7
9
In dit voorbeeld ziet u hoe u de tekenreeksen selecteert die niet leeg zijn.
('hi', '', 'there').Where({$_.Length})
hi
there
Default
De Default modus filtert items met behulp van het Expression scriptblok.
Als er een numberToReturn wordt verstrekt, wordt het maximale aantal artikelen gespecificeerd dat moet worden geretourneerd.
# Get the zip files in the current users profile, sorted by LastAccessTime.
$Zips = dir $env:userprofile -Recurse '*.zip' | Sort-Object LastAccessTime
# Get the least accessed file over 100MB
$Zips.Where({$_.Length -gt 100MB}, 'Default', 1)
Opmerking
Zowel de Default-modus als de First modus retourneren de eerste (numberToReturn) items en kunnen door elkaar worden gebruikt.
Last
$h = (Get-Date).AddHours(-1)
$logs = dir 'C:\' -Recurse '*.log' | Sort-Object CreationTime
# Find the last 5 log files created in the past hour.
$logs.Where({$_.CreationTime -gt $h}, 'Last', 5)
SkipUntil
De SkipUntil-modus slaat alle objecten in een verzameling over totdat een object het expressiefilter van een scriptblok doorgeeft. Vervolgens retourneert het ALLE resterende collectiestukken zonder ze te testen.
Slechts één geslaagd item wordt getest.
Dit betekent dat de geretourneerde collectie zowel passerende als niet-passerende items bevat die NIET zijn getest.
Het aantal geretourneerde artikelen kan worden beperkt door een waarde door te geven aan het numberToReturn argument.
$computers = "Server01", "Server02", "Server03", "localhost", "Server04"
# Find the first available online server.
$computers.Where({ Test-Connection $_ }, 'SkipUntil', 1)
localhost
Until
De Until modus keert de SkipUntil modus om. Het retourneert ALLE items in een verzameling totdat een item voldoet aan de scriptblokexpressie. Zodra een item de scriptblokexpressie doorstaat , stopt de methode met het Where verwerken van items.
Dit betekent dat u de eerste set niet-geslaagde items ontvangt van de Where methode.
Nadat een artikel is geslaagd, wordt de rest NIET getest of geretourneerd.
Het aantal geretourneerde artikelen kan worden beperkt door een waarde door te geven aan het numberToReturn argument.
# Retrieve the first set of numbers less than or equal to 10.
(1..50).Where({$_ -gt 10}, 'Until')
# This would perform the same operation.
(1..50).Where({$_ -le 10})
1
2
3
4
5
6
7
8
9
10
Opmerking
Beide Until en SkipUntil werken onder het uitgangspunt van het NIET testen van een batch items.
Until retourneert de artikelen VOOR de eerste pas.
SkipUntil retourneert alle items NA de eerste pass, inclusief het eerste passerende item.
Split
De Split modus splitst of groepeert verzamelitems in twee afzonderlijke verzamelingen. Degenen die de scriptblock-expressie doorgeven en degenen die dat niet doen.
Als er een numberToReturn is opgegeven, bevat de eerste verzameling de met items, zonder de opgegeven waarde te overschrijden.
De overige objecten, zelfs de objecten die door het expressiefilter komen , worden geretourneerd in de tweede verzameling.
$running, $stopped = (Get-Service).Where({$_.Status -eq 'Running'}, 'Split')
$running
Status Name DisplayName
------ ---- -----------
Running Appinfo Application Information
Running AudioEndpointBu... Windows Audio Endpoint Builder
Running Audiosrv Windows Audio
...
$stopped
Status Name DisplayName
------ ---- -----------
Stopped AJRouter AllJoyn Router Service
Stopped ALG Application Layer Gateway Service
Stopped AppIDSvc Application Identity
...
Opmerking
Beide foreach en where methoden zijn intrinsieke leden. Voor meer informatie over intrinsieke leden, zie about_Instrinsic_Members
Haal de leden van een array op
Als u de eigenschappen en methoden van een matrix wilt ophalen, zoals de Length eigenschap en de SetValue-methode , gebruikt u de parameter InputObject van de Get-Member cmdlet.
Wanneer u een matrix doorsluist naar Get-Member, worden de items één voor één verzonden en Get-Member wordt het type van elk item in de matrix geretourneerd (duplicaten worden genegeerd).
Wanneer u de parameter InputObject gebruikt, Get-Member worden de leden van de matrix geretourneerd.
Met de volgende opdracht worden bijvoorbeeld de leden van de $a matrixvariabele opgehaald.
Get-Member -InputObject $a
U kunt ook de leden van een matrix ophalen door een komma (,) te typen voor de waarde die naar de Get-Member cmdlet wordt geleid. De komma maakt de matrix het tweede item in een matrix met matrices. PowerShell pipet de arrays één voor één en Get-Member retourneert de leden van de array. Zoals de volgende twee voorbeelden.
,$a | Get-Member
,(1,2,3) | Get-Member
Een matrix bewerken
U kunt de elementen in een matrix wijzigen, een element aan een matrix toevoegen en de waarden van twee matrices combineren tot een derde matrice.
Als u de waarde van een bepaald element in een matrix wilt wijzigen, geeft u de matrixnaam en de index op van het element dat u wilt wijzigen en gebruikt u vervolgens de toewijzingsoperator (=) om een nieuwe waarde voor het element op te geven. Als u bijvoorbeeld de waarde van het tweede item in de $a matrix (indexpositie 1) wilt wijzigen in 10, typt u:
$a[1] = 10
U kunt ook de methode SetValue van een matrix gebruiken om een waarde te wijzigen. In het volgende voorbeeld wordt de tweede waarde (indexpositie 1) van de $a matrix gewijzigd in 500:
$a.SetValue(500,1)
U kunt de += operator gebruiken om een element aan een matrix toe te voegen. In het volgende voorbeeld ziet u hoe u een element aan de $a matrix toevoegt.
$a = @(0..4)
$a += 5
Opmerking
Wanneer u de += operator gebruikt, maakt PowerShell in feite een nieuwe matrix met de waarden van de oorspronkelijke matrix en de toegevoegde waarde. Dit kan prestatieproblemen veroorzaken als de bewerking meerdere keren wordt herhaald of als de grootte van de array te groot is.
Het is niet eenvoudig om elementen uit een matrix te verwijderen, maar u kunt een nieuwe matrix maken die alleen geselecteerde elementen van een bestaande matrix bevat. Als u bijvoorbeeld de $t matrix wilt maken met alle elementen in de $a matrix, behalve de waarde op indexpositie 2, typt u:
$t = $a[0,1 + 3..($a.length - 1)]
Als u twee matrices wilt combineren tot één matrice, gebruikt u de plusoperator (+). In het volgende voorbeeld worden twee matrices gemaakt, worden deze gecombineerd en wordt vervolgens de resulterende gecombineerde matrix weergegeven.
$x = 1,3
$y = 5,9
$z = $x + $y
Als gevolg hiervan bevat de $z matrix 1, 3, 5 en 9.
Als u een matrix wilt verwijderen, wijst u de waarde van $null toe aan de matrix. Met de volgende opdracht verwijdert u de matrix in de $a variabele.
$a = $null
U kunt ook de Remove-Item cmdlet gebruiken, maar het toewijzen van een waarde van $null is sneller, vooral voor grote matrices.
Arrays van nul of één
Vanaf Windows PowerShell 3.0 heeft een verzameling van nul of één object de Count eigenschappen en Length . U kunt ook indexeren in een matrix van één object. Deze functie helpt u scriptfouten te voorkomen die optreden wanneer een opdracht die een verzameling verwacht, minder dan twee items krijgt.
In de volgende voorbeelden wordt deze functie gedemonstreerd.
Nul objecten
$a = $null
$a.Count
$a.Length
0
0
Eén object
$a = 4
$a.Count
$a.Length
$a[0]
$a[-1]
1
1
4
4
Ondersteuning voor indexering voor systeem.Tuple Objecten
PowerShell 6.1 voegde de ondersteuning toe voor geïndexeerde toegang van Tuple objecten, vergelijkbaar met matrices. Voorbeeld:
PS> $tuple = [Tuple]::Create(1, 'test')
PS> $tuple[0]
1
PS> $tuple[1]
test
PS> $tuple[0..1]
1
test
PS> $tuple[-1]
test
In tegenstelling tot matrices en andere verzamelingsobjecten, Tuple worden objecten behandeld als één object wanneer ze door de pijplijn worden doorgegeven of door parameters die matrices van objecten ondersteunen.
Voor meer informatie, zie Systeem.Tuple.
Opsomming van toegang voor leden
Vanaf PowerShell 3.0 wordt de operator voor ledentoegang gebruikt om toegang te krijgen tot een lid dat niet bestaat in een lijstverzameling, worden in PowerShell automatisch de items in de verzameling opgesomd en wordt geprobeerd toegang te krijgen tot het opgegeven lid voor elk item. Zie about_Member-Access_Enumeration voor meer informatie.
Voorbeelden
In het volgende voorbeeld worden twee nieuwe bestanden gemaakt en worden de resulterende objecten opgeslagen in de matrixvariabele $files. Aangezien het matrixobject niet het LastWriteTime-lid heeft, wordt de waarde van LastWriteTime geretourneerd voor elk item in de matrix.
$files = (New-Item -Type File -Force '/temp/t1.txt'),
(New-Item -Force -Type File '/temp/t2.txt')
$files.LastWriteTime
Friday, June 25, 2021 1:21:17 PM
Friday, June 25, 2021 1:21:17 PM
Met opsomming via ledentoegang kunt u waarden ophalen uit items in een verzameling, maar niet uit het instellen van waarden op items in een verzameling. Voorbeeld:
$files.LastWriteTime = (Get-Date).AddDays(-1)
InvalidOperation: The property 'LastWriteTime' cannot be found on this object.
Verify that the property exists and can be set.
Om de waarden in te stellen, moet u een methode gebruiken.
$files.set_LastWriteTime((Get-Date).AddDays(-1))
$files.LastWriteTime
Thursday, June 24, 2021 1:23:30 PM
Thursday, June 24, 2021 1:23:30 PM
De set_LastWriteTime() methode is een verborgen lid van het FileInfo object. In het volgende voorbeeld ziet u hoe u leden kunt vinden die een verborgenset methode hebben.
$files | Get-Member | Where-Object Definition -like '*set;*'
TypeName: System.IO.FileInfo
Name MemberType Definition
---- ---------- ----------
Attributes Property System.IO.FileAttributes Attributes {get;set;}
CreationTime Property datetime CreationTime {get;set;}
CreationTimeUtc Property datetime CreationTimeUtc {get;set;}
IsReadOnly Property bool IsReadOnly {get;set;}
LastAccessTime Property datetime LastAccessTime {get;set;}
LastAccessTimeUtc Property datetime LastAccessTimeUtc {get;set;}
LastWriteTime Property datetime LastWriteTime {get;set;}
LastWriteTimeUtc Property datetime LastWriteTimeUtc {get;set;}
Waarschuwing
Aangezien de methode wordt uitgevoerd voor elk item in de verzameling, moet voorzichtig worden omgegaan met het aanroepen van methoden met behulp van ledenopsomming.