about_Arrays
Kort beskrivning
Beskriver matriser, som är datastrukturer som är utformade för att lagra samlingar av objekt.
Lång beskrivning
En matris är en datastruktur som är utformad för att lagra en samling objekt. Objekten kan vara av samma typ eller olika typer.
Från och med Windows PowerShell 3.0 har en samling med noll eller ett objekt vissa egenskaper för matriser.
Skapa och initiera en matris
Om du vill skapa och initiera en matris tilldelar du flera värden till en variabel. Värdena som lagras i matrisen avgränsas med ett kommatecken och avgränsas från variabelnamnet av tilldelningsoperatorn (=
).
Om du till exempel vill skapa en matris med namnet $A
som innehåller de sju numeriska värdena (heltal) på 22, 5, 10, 8, 12, 9 och 80 skriver du:
$A = 22,5,10,8,12,9,80
Kommatecknet kan också användas för att initiera en enskild objektmatris genom att placera kommatecknet före det enskilda objektet.
Om du till exempel vill skapa en matris med ett objekt med namnet $B
som innehåller det enskilda värdet 7 skriver du:
$B = ,7
Du kan också skapa och initiera en matris med hjälp av intervalloperatorn (..
).
I följande exempel skapas en matris som innehåller värdena 5 till och med 8.
$C = 5..8
Därför $C
innehåller fyra värden: 5, 6, 7 och 8.
När ingen datatyp har angetts skapar PowerShell varje matris som en objektmatris (System.Object[]). Använd metoden för att fastställa datatypen för en matris GetType()
. Till exempel:
$A.GetType()
Om du vill skapa en starkt skriven matris, det vill: en matris som bara kan innehålla värden av en viss typ, omvandlar du variabeln som en matristyp, till exempel sträng[], long[]eller int32[]. Om du vill omvandla en matris föregår du variabelnamnet med en matristyp inom hakparenteser. Till exempel:
[int32[]]$ia = 1500, 2230, 3350, 4000
Därför kan matrisen $ia
endast innehålla heltal.
Du kan skapa matriser som är gjutna till valfri typ som stöds i .NET. De objekt som Get-Process
hämtas för att representera processer är till exempel av typen System.Diagnostics.Process . Om du vill skapa en starkt skriven matris med processobjekt anger du följande kommando:
[Diagnostics.Process[]]$zz = Get-Process
Matrisens underuttrycksoperator
Matrisens underuttrycksoperator skapar en matris från -uttrycken inuti den. Oavsett vad -instruktionen i operatorn producerar placerar operatorn den i en matris. Även om det finns noll eller ett objekt.
Syntaxen för matrisoperatorn är följande:
@( ... )
Du kan använda matrisoperatorn för att skapa en matris med noll eller ett objekt. Till exempel:
$a = @("Hello World")
$a.Count
1
$b = @()
$b.Count
0
Matrisoperatorn är användbar i skript när du hämtar objekt, men vet inte hur många du kan förvänta dig. Till exempel:
$p = @(Get-Process Notepad)
Mer information om matrisens underuttrycksoperator finns i about_Operators.
Komma åt och använda matriselement
Läsa en matris
Du kan referera till en matris med dess variabelnamn. Om du vill visa alla element i matrisen anropar du matrisnamnet. Till exempel $a
är en matris med talen 0 till och med 9:
$a
0
1
2
3
4
5
6
7
8
9
Du kan referera till elementen i en matris med hjälp av ett index. Omslut indexnumret inom hakparenteser. Indexvärden börjar vid 0
. Om du till exempel vill visa elementet first i matrisen $a
skriver du:
$a[0]
0
Om du vill visa det tredje elementet i matrisen $a
skriver du:
$a[2]
2
Du kan hämta en del av matrisen med hjälp av en intervalloperator för indexet. Om du till exempel vill hämta det andra till femte elementet i matrisen skriver du:
$a[1..4]
1
2
3
4
Negativa tal count från slutet av matrisen. Till exempel -1
refererar till -elementet last i matrisen. Om du vill visa de last tre elementen i matrisen skriver du i indexstigande ordning:
$a = 0 .. 9
$a[-3..-1]
7
8
9
Om du skriver negativa index i fallande ordning ändras dina utdata.
$a = 0 .. 9
$a[-1..-3]
9
8
7
Var dock försiktig när du använder den här notationen. Notationen växlar från slutgränsen till början av matrisen.
$a = 0 .. 9
$a[2..-2]
2
1
0
9
8
Dessutom är ett vanligt misstag att anta $a[0..-2]
refererar till alla element i matrisen, förutom den last . Den refererar till elementen first, lastoch second-to-last i matrisen.
Du kan använda plusoperatorn (+
) för att kombinera ett intervall med en lista över element i en matris. Om du till exempel vill visa elementen vid indexpositionerna 0, 2 och 4 till och med 6 skriver du:
$a = 0 .. 9
$a[0,2+4..6]
0
2
4
5
6
Om du vill visa en lista över flera intervall och enskilda element kan du också använda plusoperatorn. Om du till exempel vill visa elementen noll till två, fyra till sex och elementet vid den åttonde positionstypen:
$a = 0..9
$a[+0..2+4..6+8]
0
1
2
4
5
6
8
Iterationer över matriselement
Du kan också använda loopningskonstruktioner, till exempel foreach
, for
och while
loopar, för att referera till elementen i en matris. Om du till exempel vill använda en foreach
loop för att visa elementen i matrisen $a
skriver du:
$a = 0..9
foreach ($element in $a) {
$element
}
0
1
2
3
4
5
6
7
8
9
Loopen foreach
itererar genom matrisen och returnerar varje värde i matrisen until som når slutet av matrisen.
Loopen for
är användbar när du ökar räknarna när du undersöker elementen i en matris. Om du till exempel vill använda en for
loop för att returnera alla andra värden i en matris skriver du:
$a = 0..9
for ($i = 0; $i -le ($a.length - 1); $i += 2) {
$a[$i]
}
0
2
4
6
8
Du kan använda en while
loop för att visa elementen i en matris until som ett definierat villkor inte längre är sant. Om du till exempel vill visa elementen i matrisen $a
medan matrisindexet är mindre än 4 skriver du:
$a = 0..9
$i=0
while($i -lt 4) {
$a[$i]
$i++
}
0
1
2
3
Egenskaper för matriser
Counteller LengthLongLength
Om du vill ta reda på hur många objekt som finns i en matris använder du Length egenskapen eller dess Count alias. Longlength är användbart om matrisen innehåller fler än 2 147 483 647 element.
$a = 0..9
$a.Count
$a.Length
10
10
Rank
Returnerar antalet dimensioner i matrisen. De flesta matriser i PowerShell har bara en dimension. Även när du tror att du skapar en flerdimensionell matris som i följande exempel:
$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)"
I det här exemplet skapar du en endimensionell matris som innehåller andra matriser. Detta kallas även för en ojämn matris. Egenskapen Rank visade att detta är endimensionellt. För att komma åt objekt i en ojämn matris måste indexen vara inom separata hakparenteser ([]
).
$a rank: 1
$a length: 3
$a[2] length: 348
Process $a[2][1]: AcroRd32
Flerdimensionella matriser lagras i rad-större ordning. I följande exempel visas hur du skapar en verkligt flerdimensionell matris.
[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
Om du vill komma åt objekt i en flerdimensionell matris separerar du indexen med ett kommatecken (,
) inom en enda uppsättning hakparenteser ([]
).
Vissa åtgärder på en flerdimensionell matris, till exempel replikering och sammanfogning, kräver att matrisen plattas ut. Utplattande omvandlar matrisen till en 1-dimensionell matris av obegränsad typ. Den resulterande matrisen tar på sig alla element i rad-större ordning. Ta följande som exempel:
$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
Utdata visar att är $c
en 1-dimensionell matris som innehåller objekten från $a
och $b
i rad-större ordning.
Object[]
Int32[,]
Object[]
red
True
10
20
30
40
Matrismetoder
Clear
Anger alla elementvärden till default värdet för matrisens elementtyp. Metoden Clear()
återställer inte matrisens storlek.
I följande exempel $a
finns en matris med objekt.
$a = 1, 2, 3
$a.Clear()
$a | % { $null -eq $_ }
True
True
True
I det här exemplet $intA
skrivs uttryckligen för att innehålla heltal.
[int[]] $intA = 1, 2, 3
$intA.Clear()
$intA
0
0
0
ForEach()
Gör det möjligt att iterera över alla element i matrisen och utföra en viss åtgärd för varje element i matrisen.
Metoden ForEach()
har flera överlagringar som utför olika åtgärder.
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-uttryck)
ForEach(scriptblock-uttryck, objekt[] argument)
Den här metoden lades till i PowerShell v4.
Kommentar
Syntaxen kräver användning av ett skriptblock. Parenteser är valfria om scriptblock är den enda parametern. Dessutom får det inte finnas något utrymme mellan metoden och den inledande parentesen eller klammerparentesen.
I följande exempel visas hur du använder ForEach()
metoden. I det här fallet är avsikten att generera kvadratvärdet för elementen i matrisen.
$a = @(0 .. 3)
$a.ForEach({ $_ * $_})
0
1
4
9
Precis som parametern ForEach-Object
ArgumentList i tillåter parametern arguments
att en matris med argument skickas till ett skriptblock som har konfigurerats för att acceptera dem.
Mer information om beteendet för ArgumentList finns i about_Splatting.
ForEach(skriv convertToType)
Metoden ForEach()
kan användas för att omvandla elementen till en annan typ. I följande exempel visas hur du konverterar en lista med strängdatum till [DateTime]
typ.
("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 propertyName)
ForEach(string propertyName, object[] newValue)
Metoden ForEach()
kan också användas för att hämta eller ange egenskapsvärden för varje objekt i samlingen.
# 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 methodName)
ForEach(string methodName, object[] arguments)
Slutligen ForEach()
kan metoder användas för att köra en metod på varje objekt i samlingen.
("one", "two", "three").ForEach("ToUpper")
ONE
TWO
THREE
Precis som parametern ForEach-Object
ArgumentList i tillåter parametern arguments
att en matris med värden skickas till ett skriptblock som har konfigurerats för att acceptera dem.
Kommentar
Från och med att Windows PowerShell 3.0 hämtar egenskaper och kör metoder för varje objekt i en samling kan även utföras med hjälp av "Metoder för skalära objekt och samlingar". Du kan läsa mer om det här about_Methods.
Where()
Tillåter att du filtrerar eller väljer elementen i matrisen. Skriptet måste utvärderas till något annat än: noll (0), tom sträng $false
eller $null
för att elementet ska visas efter Where()
. Mer information om boolesk utvärdering finns i about_Booleans.
Det finns en definition för Where()
metoden.
Where(scriptblock expression[, WhereOperatorSelectionMode mode
[, int numberToReturn]])
Kommentar
Syntaxen kräver användning av ett skriptblock. Parenteser är valfria om scriptblock är den enda parametern. Dessutom får det inte finnas något utrymme mellan metoden och den inledande parentesen eller klammerparentesen.
Expression
är en skriptblockering som krävs för filtrering, det mode
valfria argumentet tillåter ytterligare urvalsfunktioner och det numberToReturn
valfria argumentet gör det möjligt att begränsa hur många objekt som returneras från filtret.
Värdet mode
för måste vara ett WhereOperatorSelectionMode-uppräkningsvärde :
Default
(0
) – Returnera alla objektFirst
(1
) – Returnera objektet firstLast
(2
) – Returnera objektet lastSkipUntil
(3
) – Villkoret Hoppa över objekt until är sant, returnera alla återstående objekt (inklusive det first objekt som villkoret är sant för)Until
(4
) – Returvillkoret för alla objekt until är santSplit
(5
) – Returnera en matris med två element- Elementet first innehåller matchande objekt
- Det andra elementet innehåller de återstående objekten
I följande exempel visas hur du väljer alla udda tal från matrisen.
(0..9).Where{ $_ % 2 }
1
3
5
7
9
I nästa exempel visas hur du väljer alla icke-tomma strängar.
('hi', '', 'there').Where{ $_ }
hi
there
Default
Läget Default
filtrerar objekt med hjälp av Expression
scriptblock.
Om en numberToReturn
anges anger den det maximala antalet objekt som ska returneras.
# 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)
Kommentar
Default
Både läget och First
läget returnerar (numberToReturn
) objekten first och kan användas utbytbart.
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
Läget SkipUntil
hoppar över alla objekt i en samling until som ett objekt skickar skriptblockuttrycksfiltret. Den returnerar sedan ALLA återstående samlingsobjekt utan att testa dem. Endast ett objekt som skickas testas.
Det innebär att den returnerade samlingen innehåller både skickande och icke-skickande objekt som INTE har testats.
Antalet returnerade objekt kan begränsas genom att ett värde skickas numberToReturn
till argumentet.
$computers = "Server01", "Server02", "Server03", "localhost", "Server04"
# Find the first available online server.
$computers.Where({ Test-Connection $_ }, 'SkipUntil', 1)
localhost
Until
Läget Until
inverteras i SkipUntil
läget. Den returnerar ALLA objekt i en samling until som ett objekt skickar skriptblockuttrycket. När ett objekt skickar skriptblocksuttrycket Where()
slutar metoden att bearbeta objekt.
Det innebär att du får uppsättningen first med objekt som inte skickas Where()
från metoden. När ett objekt har passerat testas eller returneras inte resten.
Antalet returnerade objekt kan begränsas genom att ett värde skickas numberToReturn
till argumentet.
# 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
Kommentar
Både Until
och SkipUntil
fungerar under förutsättningen att INTE testa en batch med objekt.
Until
returnerar objekten firstFÖRE PASS. SkipUntil
returnerar alla objekt EFTER passetfirst, inklusive det first skickande objektet.
Split
Läget Split
delar upp eller grupperar samlingsobjekt i två separata samlingar. De som skickar skriptblocksuttrycket och de som inte gör det.
Om en numberToReturn
anges first innehåller samlingen de objekt som skickas , inte för att överskrida det angivna värdet.
De återstående objekten, även de som SKICKAR uttrycksfiltret, returneras i den andra samlingen.
$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
...
Kommentar
Både ForEach()
och Where()
metoder är inbyggda medlemmar. Mer information om inbyggda medlemmar finns i about_Intrinsic_Members.
Hämta medlemmar i en matris
Om du vill hämta egenskaperna och metoderna för en matris, till exempel Length egenskapen och metoden SetValue , använder du parametern InputObject för cmdleten Get-Member
.
När du skickar en matris till Get-Member
skickar PowerShell objekten en i taget och Get-Member
returnerar typen av varje objekt i matrisen (ignorerar dubbletter).
När du använder parametern Get-Member
InputObject returnerar medlemmarna i matrisen.
Följande kommando hämtar till exempel medlemmarna i $a
matrisvariabeln.
Get-Member -InputObject $a
Du kan också hämta medlemmar i en matris genom att skriva ett kommatecken (,
) före det värde som skickas till cmdleten Get-Member
. Kommatecknet gör matrisen till det andra objektet i en matris med matriser. PowerShell rör matriserna en i taget och Get-Member
returnerar medlemmarna i matrisen. Som de två följande exemplen.
,$a | Get-Member
,(1,2,3) | Get-Member
Manipulera en matris
Du kan ändra elementen i en matris, lägga till ett element i en matris och kombinera värdena från två matriser till en tredje matris.
Om du vill ändra värdet för ett visst element i en matris anger du matrisnamnet och indexet för det element som du vill ändra och använder sedan tilldelningsoperatorn (=
) för att ange ett nytt värde för elementet. Om du till exempel vill ändra värdet för det andra objektet i matrisen $a
(indexposition 1) till 10 skriver du:
$a[1] = 10
Du kan också använda metoden SetValue för en matris för att ändra ett värde. I följande exempel ändras det andra värdet (indexposition 1) för matrisen $a
till 500:
$a.SetValue(500,1)
Du kan använda operatorn +=
för att lägga till ett element i en matris. I följande exempel visas hur du lägger till ett element i matrisen $a
.
$a = @(0..4)
$a += 5
Kommentar
När du använder operatorn +=
skapar PowerShell faktiskt en ny matris med värdena för den ursprungliga matrisen och det extra värdet. Detta kan orsaka prestandaproblem om åtgärden upprepas flera gånger eller om matrisens storlek är för stor.
Det är inte lätt att ta bort element från en matris, men du kan skapa en ny matris som endast innehåller valda element i en befintlig matris. Om du till exempel vill skapa matrisen $t
med alla element i matrisen $a
förutom värdet vid indexposition 2 skriver du:
$t = $a[0,1 + 3..($a.length - 1)]
Om du vill kombinera två matriser i en enda matris använder du plusoperatorn (+
). Följande exempel skapar två matriser, kombinerar dem och visar sedan den resulterande kombinerade matrisen.
$x = 1,3
$y = 5,9
$z = $x + $y
Därför innehåller matrisen $z
1, 3, 5 och 9.
Om du vill ta bort en matris tilldelar du matrisen ett värde $null
. Följande kommando tar bort matrisen i variabeln $a
.
$a = $null
Du kan också använda cmdleten Remove-Item
, men det går snabbare att tilldela ett värde $null
, särskilt för stora matriser.
Matriser med noll eller en
Från och med Windows PowerShell 3.0 har Count en samling med noll eller ett objekt egenskaperna och Length . Du kan också indexera till en matris med ett objekt. Den här funktionen hjälper dig att undvika skriptfel som uppstår när ett kommando som förväntar sig att en samling får färre än två objekt.
Kommentar
I Windows PowerShell har objekt som skapats genom att en Hashtable skapas för att [pscustomobject]
inte ha Length egenskaperna eller Count .
Om du försöker komma åt dessa medlemmar returneras $null
.
I följande exempel visas att en variabel som inte innehåller några objekt har en Count och Length på 0.
PS> $a = $null
PS> $a.Count
0
PS> $a.Length
0
I följande exempel visas att en variabel som innehåller ett objekt har ett Count och Length av 1. Du kan också använda matrisindexering för att komma åt objektets värde.
PS> $a = 4
PS> $a.Count
1
PS> $a.Length
1
PS> $a[0]
4
PS> $a[-1]
4
När du kör ett kommando som kan returnera en samling eller ett enskilt objekt kan du använda matrisindexering för att komma åt objektets värde utan att behöva testa Count egenskaperna eller Length . Men om resultatet är ett enskilt objekt (singleton) och objektet har en eller Length -Countegenskap, tillhör värdet för dessa egenskaper singleton-objektet och representerar inte antalet objekt i samlingen.
I följande exempel returnerar kommandot ett enda strängobjekt. Strängen Length är 4
.
PS> $result = 'one','two','three','four' | Where-Object {$_ -like 'f*'}
PS> $result.GetType().FullName
System.String
PS> $result
four
PS> $result.Count
1
PS❯ $result.Length
4
Om du vill $result
vara en matris med strängar måste du deklarera variabeln som en matris.
I det här exemplet $result
är en matris med strängar. Matrisens Count och Length är 1
, och Length elementets first är 4
.
PS> [string[]]$result = 'one','two','three','four' |
Where-Object {$_ -like 'f*'}
PS> $result.GetType().FullName
System.String[]
PS> $result
four
PS> $result.Count
1
PS> $result.Length
1
PS> $result[0].Length
4
Indexera .NET-typer som implementerar IDictionary<TKey, TValue>
PowerShell anropar inte en typs sanna indexerare för typer som implementerar det allmänna IDictionary<TKey, TValue>
gränssnittet. När du får en nyckel testar PowerShell i stället om det finns en nyckel med hjälp TryGetValue()
av , som returnerar $null
när nyckeln inte finns.
Om du däremot anropar typens sanna indexerare med , Item(<key>)
utlöser metoden ett undantag när nyckeln inte finns.
I följande exempel visas skillnaden.
PS> [Collections.Generic.Dictionary[string, int]]::new()['nosuchkey']
# No output ($null)
PS> [Collections.Generic.Dictionary[string, int]]::new().Item('nosuchkey')
Exception getting "Item": "The given key 'nosuchkey' was not present in the dictionary."
At line:1 char:1
+ [Collections.Generic.Dictionary[string, int]]::new().Item('nosuchkey' ...
+ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+ CategoryInfo : NotSpecified: (:) [], GetValueInvocationException
+ FullyQualifiedErrorId : ExceptionWhenGetting
Uppräkning av medlemsåtkomst
Från och med PowerShell 3.0, när du använder operatorn för medlemsåtkomst för att komma åt en medlem som inte finns i en listsamling, räknar PowerShell automatiskt upp objekten i samlingen och försöker komma åt den angivna medlemmen för varje objekt. Mer information finns i about_Member-Access_Enumeration.
Exempel
I följande exempel skapas två nya filer och resulterande objekt lagras i matrisvariabeln $files
. Eftersom matrisobjektet inte har LastWriteTime-medlemmen returneras värdet för LastWriteTime för varje objekt i matrisen.
$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
Med uppräkning av medlemsåtkomst kan du hämta värden från objekt i en samling, men inte ange värden för objekt i en samling. Till exempel:
$files.LastWriteTime = (Get-Date).AddDays(-1)
The property 'LastWriteTime' cannot be found on this object. Verify that the
property exists and can be set.
At line:1 char:1
+ $files.LastWriteTime = (Get-Date).AddDays(-1)
+ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+ CategoryInfo : InvalidOperation: (:) [], RuntimeException
+ FullyQualifiedErrorId : PropertyAssignmentException
Om du vill ange värdena måste du använda en metod.
$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
Metoden set_LastWriteTime()
är en dold medlem i FileInfo-objektet . I följande exempel visas hur du hittar dolda set
metoder.
$files | Get-Member -Force -Name 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;}
Varning
Eftersom metoden körs för varje objekt i samlingen bör du vara försiktig när du anropar metoder med medlemsuppräkning.