Megjegyzés
Az oldalhoz való hozzáféréshez engedély szükséges. Megpróbálhat bejelentkezni vagy módosítani a címtárat.
Az oldalhoz való hozzáféréshez engedély szükséges. Megpróbálhatja módosítani a címtárat.
Rövid leírás
A tömböket ismerteti, amelyek olyan adatstruktúrák, amelyeket elemek gyűjteményeinek tárolására terveztek.
Hosszú leírás
A tömb egy olyan adatstruktúra, amely elemek gyűjteményének tárolására szolgál. Az elemek lehetnek azonosak vagy különbözőek.
A Windows PowerShell 3.0-tól kezdve egy nulla vagy egy objektumból álló gyűjtemény tömbök bizonyos tulajdonságaival rendelkezik.
Tömb létrehozása és inicializálása
Tömb létrehozásához és inicializálásához rendeljen hozzá több értéket egy változóhoz. A tömbben tárolt értékek vesszővel vannak elválasztva egymástól, és a változó nevétől a hozzárendelési operátor (=) választja el őket.
Ha például olyan tömböt $A szeretne létrehozni, amely a 22, 5, 10, 8, 12, 9 és 80 numerikus (int) értéket tartalmazza, írja be a következőt:
$A = 22,5,10,8,12,9,80
A vesszővel inicializálhat egy elemtömböt úgy is, hogy a vesszőt az egyetlen elem elé helyezi.
Ha például egy $B nevű elemtömböt szeretne létrehozni, amely egyetlen 7 értéket tartalmaz, írja be a következőt:
$B = ,7
Tömböket a range operátorral ().. is létrehozhat és inicializálhat.
Az alábbi példa egy 5–8 értéket tartalmazó tömböt hoz létre.
$C = 5..8
Ennek eredményeként a $C négy értéket tartalmaz: 5, 6, 7 és 8.
Ha nincs megadva adattípus, a PowerShell minden tömböt objektumtömbként hoz létre (System.Object[]). A tömb adattípusának meghatározásához használja a GetType() metódust. A tömb adattípusának $A meghatározásához például írja be a következőt:
$A.GetType()
Erősen típusos tömb létrehozásához, azaz egy olyan tömbhöz, amely csak egy adott típusú értéket tartalmazhat, alakítsa át a változót tömbtípusként, például string[], long[]vagy int32[]. Tömb beírásához a változó nevét zárójelek közé zárt tömbtípussal előzze meg. Ha például egy 32 bites egész tömböt szeretne létrehozni, amely $ia négy egész számot tartalmaz (1500, 2230, 3350 és 4000), írja be a következőt:
[int32[]]$ia = 1500,2230,3350,4000
Ennek eredményeképpen a $ia tömb csak egész számokat tartalmazhat.
Létrehozhat olyan tömböket, amelyek bármelyik támogatott típusra át vannak alakítva a .NET-ben. Például a Get-Process által lekérdezett objektumok, amelyek a folyamatok reprezentálására szolgálnak, a System.Diagnostics.Process típusúak. A folyamatobjektumok erősen típusos tömbjének létrehozásához írja be a következő parancsot:
[Diagnostics.Process[]]$zz = Get-Process
A tömb rész-kifejezés operátora
A tömb alkifejezés-operátora létrehoz egy tömböt a benne lévő utasításokból. Bármit is állít elő az operátoron belüli utasítás, az operátor egy tömbbe helyezi. Még akkor is, ha nulla vagy egy objektum van.
A tömb operátor szintaxisa a következő:
@( ... )
A tömb operátorral nullából vagy egy objektumból álló tömböt hozhat létre. Például:
$a = @("Hello World")
$a.Count
1
$b = @()
$b.Count
0
A tömboperátor akkor hasznos, ha objektumokat kap, de nem tudja, hány objektumot kap. Például:
$p = @(Get-Process Notepad)
A tömb al-kifejezés operátorával kapcsolatos további információkért lásd about_Operators.
Tömbelemek elérése és használata
Tömb olvasása
A tömbökre a változó nevével hivatkozhat. A tömb összes elemének megjelenítéséhez írja be a tömb nevét. Tegyük $a fel például, hogy egy tömb, amely 0, 1, 2, 9-ig egész számokat tartalmaz; beírva:
$a
0
1
2
3
4
5
6
7
8
9
A tömb elemeire indexet használhat, a 0. pozíciótól kezdve. Az indexszámot szögletes zárójelek közé kell foglalni. Ha például a $a tömb első elemét szeretné megjeleníteni, írja be a következőt:
$a[0]
0
A $a tömb harmadik elemének megjelenítéséhez írja be a következőt:
$a[2]
2
A tömb egy részét lekérheti az index tartományoperátorával. A tömb második-ötödik elemeinek lekéréséhez például a következőt kell beírnia:
$a[1..4]
1
2
3
4
A negatív számok a tömb végétől számítanak. A "-1" például a tömb utolsó elemére utal. A tömb utolsó három elemének megjelenítéséhez az index növekvő sorrendjében írja be a következőt:
$a = 0 .. 9
$a[-3..-1]
7
8
9
Ha csökkenő sorrendbe írja be a negatív indexeket, a kimenet megváltozik.
$a = 0 .. 9
$a[-1..-3]
9
8
7
Ennek a jelölésnek a használatakor azonban legyen óvatos. A jelölési ciklusok a véghatártól a tömb elejéig terjednek.
$a = 0 .. 9
$a[2..-2]
2
1
0
9
8
Az is gyakori hiba, ha feltételezzük, hogy $a[0..-2] a tömb minden elemére vonatkozik, kivéve az utolsót. A tömb első, utolsó és utolsó előtti elemére hivatkozik.
A plusz operátor (+) használatával egyesíthet egy tartományt egy tömb elemeinek listájával. Ha például a 0, 2 és 4–6 indexpozícióban szeretné megjeleníteni az elemeket, írja be a következőt:
$a = 0 .. 9
$a[0,2+4..6]
0
2
4
5
6
Emellett több tartomány és egyedi elem listázásához használhatja a plusz operátort is. Például az elemek nullától kettőig, négytől hatig, és az elem a nyolcadik pozícióban:
$a = 0..9
$a[+0..2+4..6+8]
0
1
2
4
5
6
8
Tömbelemek iterálása
A tömb elemeire hivatkozhat ismétlődő struktúrák, például a ForEach, Forés While ciklusok használatával is. Ha például egy ForEach hurkot szeretne használni a $a tömb elemeinek megjelenítéséhez, írja be a következőt:
$a = 0..9
foreach ($element in $a) {
$element
}
0
1
2
3
4
5
6
7
8
9
A Foreach hurok végighalad a tömbön, és a tömb minden értékét visszaadja, amíg el nem éri a tömb végét.
A For hurok akkor hasznos, ha számlálókat növektet egy tömb elemeinek vizsgálata során. Ha például egy For ciklust szeretne használni egy tömb minden más értékének visszaadásához, írja be a következőt:
$a = 0..9
for ($i = 0; $i -le ($a.length - 1); $i += 2) {
$a[$i]
}
0
2
4
6
8
Egy While hurok használatával megjelenítheti a tömb elemeit, amíg egy megadott feltétel már nem igaz. Ha például meg szeretné jeleníteni az elemeket a $a tömbben, amíg a tömbindex 4-nél kisebb, írja be a következőt:
$a = 0..9
$i=0
while($i -lt 4) {
$a[$i]
$i++
}
0
1
2
3
Tömbök tulajdonságai
Count, Length vagy LongLength
Annak meghatározásához, hogy hány elem van egy tömbben, használja a tulajdonságot Length vagy annak Count aliasát. A Longlength akkor hasznos, ha a tömb több mint 2 147 483 647 elemet tartalmaz.
$a = 0..9
$a.Count
$a.Length
10
10
Rank
A tömbben lévő dimenziók számát adja vissza. A PowerShell legtöbb tömbje csak egy dimenzióval rendelkezik. Még akkor is, ha úgy gondolja, hogy többdimenziós tömböt hoz létre, mint az alábbi példa:
$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)"
Ebben a példában egy olyan egydimenziós tömböt hoz létre, amely más tömböket tartalmaz. Ez más néven egy szaggatott tömb. A Rank tulajdonság bebizonyította, hogy ez egydimenziós. A szaggatott tömb elemeinek eléréséhez az indexeknek külön zárójelben kell lenniük ([]).
$a rank: 1
$a length: 3
$a[2] length: 348
Process $a[2][1]: AcroRd32
A többdimenziós tömbök sor-fő sorrendben vannak tárolva. Az alábbi példa bemutatja, hogyan hozhat létre egy valóban többdimenziós tömböt.
[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
Ha többdimenziós tömb elemeihez szeretne hozzáférni, az indexeket vesszővel (,) kell elválasztani egyetlen zárójelen ([]) belül.
A többdimenziós tömbök egyes műveletei, például a replikáció és az összefűzés megkövetelik, hogy a tömb összeolvadjon. Az összesimítás a tömböt nem korlátozott típusú, egydimenziós tömbté alakítja. Az eredményként kapott tömb sorszintű sorrendben veszi fel az összes elemet. Vegye figyelembe a következő példát:
$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
A kimenet azt mutatja, hogy a $c egy 1 dimenziós tömb, amely az $a és $b sor-fő sorrendben lévő elemeit tartalmazza.
Object[]
Int32[,]
Object[]
red
True
10
20
30
40
Tömbök metódusai
Clear
Az összes elemértéket a tömb elemtípusának Clear() metódus nem állítja vissza a tömb méretét.
Az alábbi példában $a egy objektumtömb.
$a = 1, 2, 3
$a.Clear()
$a | % { $null -eq $_ }
True
True
True
Ebben a példában a $intA kifejezetten egész számokat tartalmaz.
[int[]] $intA = 1, 2, 3
$intA.Clear()
$intA
0
0
0
ForEach
Lehetővé teszi a tömb minden elemének iterálását, és adott műveletet hajthat végre a tömb minden eleméhez.
A ForEach metódus több túlterhelést is alkalmaz, amelyek különböző műveleteket hajtanak végre.
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 kifejezés)
ForEach(scriptblock kifejezés, objektum[] argumentumok)
Ez a metódus a PowerShell 4-ben lett hozzáadva.
Megjegyzés:
A szintaxis használatához szkriptblokk szükséges. A zárójelek megadása nem kötelező, ha a szkriptblokk az egyetlen paraméter. A metódus és a nyitó zárójel között nem lehet szóköz.
Az alábbi példa a ForEach metódus használatát mutatja be. Ebben az esetben a szándék a tömb elemeinek négyzetértékének generálása.
$a = @(0 .. 3)
$a.ForEach({ $_ * $_})
0
1
4
9
Csakúgy, mint a -ArgumentList paraméter, ForEach-Objecta arguments paraméter lehetővé teszi az argumentumok tömbjének átadását egy szkriptblokknak, amely úgy van konfigurálva, hogy elfogadja őket.
Az ArgumentListviselkedésével kapcsolatos további információkért lásd: about_Splatting.
ForEach(írja be a convertToType típust)
A ForEach metódus segítségével az elemek gyorsan átalakíthatók egy másik típusra; a következő példa bemutatja, hogyan lehet a karakterlánc-dátumok listáját [DateTime] típusra konvertálni.
@("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(karakterlánc tulajdonságNév)
ForEach(karakterlánc tulajdonságNév, objektum[] újÉrték)
A ForEach metódus a gyűjtemény minden elemének tulajdonságértékeinek gyors lekérésére vagy beállítására is használható.
# 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(karakterláncmetódus neve)
ForEach(string methodName, objektumok[] argumentumok)
Végül ForEach metódusok használatával a gyűjtemény minden elemén végrehajthat egy metódust.
("one", "two", "three").ForEach("ToUpper")
ONE
TWO
THREE
Csakúgy, mint a -ArgumentList paraméter, ForEach-Objecta Arguments paraméter lehetővé teszi az értékek tömbjének átadását egy szkriptblokknak, amely úgy van konfigurálva, hogy elfogadja őket.
Megjegyzés:
A Windows PowerShell 3.0-tól kezdve a tulajdonságok lekérése és a metódusok végrehajtása a gyűjtemény minden eleméhez "Skaláris objektumok és gyűjtemények metódusai" használatával is elvégezhető. Erről bővebben itt olvashat about_methods.
Hol
Lehetővé teszi a tömb elemeinek szűrését vagy kijelölését. A szkriptnek más értékekre kell kiértékelnie, mint: nulla (0), üres sztring, $false vagy $null, hogy az elem megjelenjen a Whereután. A logikai értékeléssel kapcsolatos további információkért lásd a about_Booleansrészt.
A Where metódusnak egy definíciója van.
Where(scriptblock expression[, WhereOperatorSelectionMode mode
[, int numberToReturn]])
Megjegyzés:
A szintaxis használatához szkriptblokk szükséges. A zárójelek megadása nem kötelező, ha a szkriptblokk az egyetlen paraméter. A metódus és a nyitó zárójel között nem lehet szóköz.
A Expression szűréshez szükséges szkriptblokk, a mode választható argumentum további kiválasztási képességeket tesz lehetővé, a numberToReturn választható argumentum pedig lehetővé teszi a szűrő által visszaadott elemek számának korlátozását.
Az elfogadható értékek mode a következők:
- Default (0) - Az összes elem visszaküldése
- First (1) - Az első elem visszaküldése
- Last (2) - Az utolsó elem visszaküldése
- SkipUntil (3) - Elemek kihagyása, amíg a feltétel teljesül, az összes fennmaradó elem visszaadása (beleértve az első elemet is, amelyre a feltétel igaz)
- Until (4) - Az összes elem visszaadása, amíg a feltétel nem teljesül
-
Split (5) - Két elemből álló tömb visszaadása
- Az első elem egyező elemeket tartalmaz
- A második elem a fennmaradó elemeket tartalmazza
Az alábbi példa bemutatja, hogyan választhatja ki az összes páratlan számot a tömbből.
(0..9).Where{ $_ % 2 }
1
3
5
7
9
Ez a példa bemutatja, hogyan választhatja ki a nem üres sztringeket.
('hi', '', 'there').Where({$_.Length})
hi
there
Default
A Default mód a Expression szkriptblokk használatával szűri az elemeket.
Ha egy numberToReturn van megadva, a visszaadandó elemek maximális számát adja meg.
# 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)
Megjegyzés:
Mind a Default mód, mind a First mód az első (numberToReturn) elemet adja vissza, és felcserélhető.
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
A SkipUntil mód kihagyja a gyűjtemény összes objektumát, amíg egy objektum át nem adja a szkriptblokk kifejezésszűrőt. Ezután visszaadja az összes fennmaradó gyűjteményelemet tesztelés nélkül.
Csak egy átadott elem van tesztelve.
Ez azt jelenti, hogy a visszaadott gyűjtemény olyan átmenő és nem átmenő elemeket is tartalmaz, amelyek NEM lettek tesztelve.
A visszaadott elemek száma korlátozható, ha értéket ad át a numberToReturn argumentumnak.
$computers = "Server01", "Server02", "Server03", "localhost", "Server04"
# Find the first available online server.
$computers.Where({ Test-Connection $_ }, 'SkipUntil', 1)
localhost
Until
A Until mód megfordítja a SkipUntil módot. Visszaadja összes elemet egy gyűjteményben, amíg egy elem nem felel meg a szkriptblokk kifejezésének. Miután egy elem átadja a szkriptblokk kifejezés, a Where metódus leállítja az elemek feldolgozását.
Ez azt jelenti, hogy a sikertelen elemek első készletét kapja meg a Where módszerből.
Miután egy tétel átment, a többit NEM tesztelik vagy küldik vissza.
A visszaadott elemek száma korlátozható, ha értéket ad át a numberToReturn argumentumnak.
# 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
Megjegyzés:
Mind a Until, mind a SkipUntil annak az elvnek alapján működik, hogy egy tételt nem tesztelnek.
Untilvisszaadja az elemeket az első lépésELŐTT.
SkipUntilaz első lépésUTÁN az összes elemet visszaadja, beleértve az első átadott elemet is.
Split
A Split mód két különálló gyűjteményre bontja vagy csoportosítja a gyűjteményelemeket. Azok, amelyek megfelelnek a scriptblock kifejezésnek, és azok, amelyek nem.
Ha egy numberToReturn van megadva, az első gyűjtemény tartalmazza az -t, amely elemeket ad át, és a megadott értéket nem haladja meg.
A többi objektum, még azok is, amelyek PASS a kifejezésszűrőt, a második gyűjteményben lesznek visszaadva.
$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
...
Megjegyzés:
A foreach és where metódusok is belső tagok. További információ a belső tagokról: about_Instrinsic_Members
Tömb tagjainak lekérése
Egy tömb tulajdonságainak és metódusainak (például a Length tulajdonságnak és a SetValue metódusnak) lekéréséhez használja a parancsmag Get-Member paraméterét.
Ha egy tömböt Get-Membercsövez, a PowerShell egyenként küldi el az elemeket, és Get-Member a tömb egyes elemeinek típusát adja vissza (figyelmen kívül hagyva az ismétlődéseket).
Az InputObject paraméter használatakor Get-Member a tömb tagjait adja vissza.
Például az alábbi parancs lekéri a $a tömbváltozó tagjait.
Get-Member -InputObject $a
A tömb tagjait úgy is lekérheti, hogy vesszőt (,) ír be a Get-Member parancsmagba átirányított érték elé. A vessző a tömböt egy olyan tömbökből álló tömb második elemévé teszi. A PowerShell egyenként csövezi a tömböket, és Get-Member visszaadja a tömb tagjait. Mint a következő két példa.
,$a | Get-Member
,(1,2,3) | Get-Member
Egy tömb manipulálása
Módosíthatja a tömb elemeit, hozzáadhat egy elemet egy tömbhöz, és összevonhatja a két tömb értékeit egy harmadik tömbbe.
Egy tömb adott elemének értékének módosításához adja meg a módosítani kívánt elem tömbnevét és indexét, majd a hozzárendelési operátor (=) használatával adjon meg egy új értéket az elemhez. Ha például a $a tömb második elemének értékét (1. indexpozíció) 10-esre szeretné módosítani, írja be a következőt:
$a[1] = 10
Egy tömb SetValue metódusával is módosíthatja az értékeket. Az alábbi példa a $a tömb második értékét (1. indexpozícióját) 500-ra módosítja:
$a.SetValue(500,1)
A += operátorral elemet adhat hozzá egy tömbhöz. Az alábbi példa bemutatja, hogyan adhat hozzá elemet a $a tömbhöz.
$a = @(0..4)
$a += 5
Megjegyzés:
A += operátor használatakor a PowerShell ténylegesen létrehoz egy új tömböt az eredeti tömb értékeivel és a hozzáadott értékkel. Ez teljesítményproblémákat okozhat, ha a művelet többször ismétlődik, vagy a tömb mérete túl nagy.
Nem könnyű elemeket törölni egy tömbből, de létrehozhat egy új tömböt, amely csak egy meglévő tömb kiválasztott elemeit tartalmazza. Ha például a $t tömböt a $a tömb összes elemével szeretné létrehozni, kivéve a 2. indexpozícióban lévő értéket, írja be a következőt:
$t = $a[0,1 + 3..($a.length - 1)]
Ha két tömböt egyetlen tömbbe szeretne egyesíteni, használja a plusz operátort (+). Az alábbi példa két tömböt hoz létre, egyesíti őket, majd megjeleníti az eredményül kapott egyesített tömböt.
$x = 1,3
$y = 5,9
$z = $x + $y
Ennek eredményeként a $z tömb 1, 3, 5 és 9 értéket tartalmaz.
Tömb törléséhez rendeljen hozzá egy $null értéket a tömbhöz. Az alábbi parancs törli a tömböt a $a változóban.
$a = $null
Használhatja a Remove-Item parancsmagot is, de a $null értékének hozzárendelése gyorsabb, különösen nagy tömbök esetén.
Nulla vagy egy elemet tartalmazó tömbök
A Windows PowerShell 3.0-tól kezdődően egy nulla vagy egy objektum gyűjteménye rendelkezik a és tulajdonságokkal CountLength . Emellett egy objektum tömbjébe is indexelhet. Ez a funkció segít elkerülni azokat a szkriptelési hibákat, amelyek akkor fordulnak elő, ha egy gyűjteményre számított parancs kettőnél kevesebb elemet kap.
Az alábbi példák ezt a funkciót mutatják be.
Nulla objektum
$a = $null
$a.Count
$a.Length
0
0
Egy objektum
$a = 4
$a.Count
$a.Length
$a[0]
$a[-1]
1
1
4
4
A System.Tuple objektumok indexelési támogatása.
A PowerShell 6.1 a tömbökhöz hasonlóan hozzáadta Tuple objektumok indexelt hozzáférésének támogatását. Például:
PS> $tuple = [Tuple]::Create(1, 'test')
PS> $tuple[0]
1
PS> $tuple[1]
test
PS> $tuple[0..1]
1
test
PS> $tuple[-1]
test
A tömböktől és más gyűjteményobjektumoktól eltérően a Tuple objektumok egyetlen objektumként lesznek kezelve, amikor a csatornán keresztül haladnak, vagy olyan paraméterek által, amelyek támogatják az objektumtömböket.
További információ: rendszer.Tuple.
Taghozzáférés felsorolása
A PowerShell 3.0-tól kezdődően, amikor a tag-hozzáférés operátorral olyan taghoz fér hozzá, amely nem létezik egy listagyűjteményben, a PowerShell automatikusan számba veszi a gyűjtemény elemeit, és megpróbálja elérni a megadott tagot az egyes elemeken. További információ: about_Member-Access_Enumeration.
Példák
Az alábbi példa két új fájlt hoz létre, és az eredményként kapott objektumokat a $filestömbváltozóban tárolja. Mivel a tömbobjektum nem rendelkezik a LastWriteTime taggal, a rendszer a LastWriteTime értékét adja vissza a tömb minden eleméhez.
$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
A taghozzáférés-számbavétel lehetővé teszi értékek lekérését egy gyűjtemény elemeiből, de nem értékeket beállítani egy gyűjtemény elemein. Például:
$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.
Az értékek beállításához egy metódust kell használnia.
$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
A set metódussal rendelkező tagokat.
$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;}
Figyelmeztetés
Mivel a metódus a gyűjtemény minden elemén végrehajtásra kerül, ügyelni kell, amikor olyan metódusokat hívunk meg, amelyek a tagok felsorolását használják.