about_Arrays

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 olyan adatstruktúra, amely elemek gyűjteményének tárolására szolgál. Az elemek lehetnek azonos vagy különböző típusúak.

A Windows PowerShell 3.0-tól kezdődően egy nulla vagy egy objektumból álló gyűjtemény tömbök néhány tulajdonságával rendelkezik.

Tömb létrehozása és inicializálása

Tömb létrehozásához és inicializálásához rendeljen több értéket egy változóhoz. A tömbben tárolt értékek vesszővel vannak elválasztva a változó nevétől a hozzárendelési operátorral (=).

Ha például egy nevű tömböt $A szeretne létrehozni, amely a 22, 5, 10, 8, 12, 9 és 80 hét numerikus (egész) értékét tartalmazza, írja be a következőt:

$A = 22,5,10,8,12,9,80

A vesszővel egyetlen elemtömb inicializálható úgy is, hogy a vesszőt az egyetlen elem elé helyezi.

Ha például egy 7-es értéket tartalmazó nevű $B elemtömböt szeretne létrehozni, írja be a következőt:

$B = ,7

Tömböt a tartományoperátor (..) használatával 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 $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[]). Egy tömb adattípusának meghatározásához használja a metódust GetType() . Például:

$A.GetType()

Erősen beírt tömb létrehozásához, azaz egy olyan tömbhöz, amely csak egy adott típusú értékeket tartalmazhat, tömbtípusként (például sztring[], long[] vagy int32[]) adhatja meg a változót. Tömböt úgy alakíthat ki, hogy a változó nevét szögletes zárójelek közé zárt tömbtípussal előzi meg. Például:

[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 a .NET bármely támogatott típusára át vannak vetve. A folyamatok ábrázolására lekért objektumok Get-Process például System.Diagnostics.Process típusúak. A folyamatobjektumok erősen beírt tömbjének létrehozásához írja be a következő parancsot:

[Diagnostics.Process[]]$zz = Get-Process

A tömb alkifejezé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 eredményez 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ömboperátor szintaxisa a következő:

@( ... )

A tömboperátor használatával nulla 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 szkriptekben, ha objektumokat kap, de nem tudja, hogy hányra számíthat. Például:

$p = @(Get-Process Notepad)

A tömb alkifejezé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ömbre a változó nevével hivatkozhat. A tömb összes elemének megjelenítéséhez hívja meg a tömb nevét. Például $a a 0 és 9 közé tartozó számok tömbje:

$a
0
1
2
3
4
5
6
7
8
9

A tömb elemeire index használatával hivatkozhat. Az indexszámot szögletes zárójelek közé kell foglalni. Az indexértékek kezdete: 0. A tömb első elemének megjelenítéséhez például írja be a $a következőt:

$a[0]
0

A tömb harmadik elemének megjelenítéséhez írja be a $a következőt:

$a[2]
2

A tömb egy részét az index tartományoperátorával kérdezheti le. Ha például a tömb második és ötödik elemét szeretné lekérni, írja be a következőt:

$a[1..4]
1
2
3
4

Negatív számok száma a tömb végéről. Például a -1 tömb utolsó elemére hivatkozik. 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ő sorrendben írja be a negatív indexeket, a kimenet megváltozik.

$a = 0 .. 9
$a[-1..-3]
9
8
7

Azonban legyen óvatos, ha ezt a jelölést használja. 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 egyik gyakori hiba azt feltételezni $a[0..-2] , hogy a tömb minden elemére hivatkozik, kivéve az utolsót. A tömb első, utolsó és második-az-utolsó elemére hivatkozik.

A plusz operátorral (+) kombinálhat tartományokat egy tömb elemeinek listájával. Ha például az elemeket a 0, 2 és 4–6 indexpozícióban szeretné megjeleníteni, í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 különálló elem listázásához használhatja a plusz operátort. Például a nullától a kettőig, a négytől a hatig és a nyolcadik pozíciótípusú elemek listázásához:

$a = 0..9
$a[+0..2+4..6+8]
0
1
2
4
5
6
8

Iterációk tömbelemeken keresztül

A tömb elemeire hivatkozhat hurkos szerkezetekkel is, például foreach, forés while hurkokkal. Ha például hurkot foreach szeretne használni a tömb elemeinek megjelenítéséhez, írja be a $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 hurkot szeretne használni egy for 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

Hurok használatával while megjelenítheti a tömb elemeit, amíg egy megadott feltétel már nem teljesül. Ha például a tömb elemeit $a szeretné megjeleníteni, miközben 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

Countvagy LengthLongLength

Ha meg szeretné állapítani, hogy hány elem található egy tömbben, használja a tulajdonságot vagy annak Length aliasát Count . A longlength függvény 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 eredményül. 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 az alábbi példához hasonlóan:

$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. Ezt szaggatott tömbnek is nevezik. A Rank tulajdonság bizonyította, hogy ez egydimenziós. A szaggatott tömb elemeinek eléréséhez az indexeknek külön szögletes 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 elemeit szeretné elérni, az indexeket vesszővel (,) kell elválasztani egyetlen szögletes 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 egybesimuljon. Az egybesimítás a tömböt nem korlátozott típusú, egydimenziós tömbté alakítja. Az eredményként kapott tömb sor-fő sorrendben veszi fel az összes elemet. Tekintse meg 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 $c egy egydimenziós tömb, amely sor-fő sorrendben tartalmazza $b az elemeket$a.

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 alapértelmezett értékére állítja be. A Clear() metódus nem állítja vissza a tömb méretét.

Az alábbi példában $a egy objektumtömb látható.

$a = 1, 2, 3
$a.Clear()
$a | % { $null -eq $_ }
True
True
True

Ebben a példában $intA a függvény explicit módon egész számokat tartalmaz.

[int[]] $intA = 1, 2, 3
$intA.Clear()
$intA
0
0
0

ForEach()

Lehetővé teszi a tömb összes elemének iterálását, és végrehajthat egy adott műveletet a tömb minden eleméhez.

A ForEach() metódus számos olyan túlterheléssel rendelkezik, 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 v4-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. Emellett nem lehet szóköz a metódus és a nyitó zárójel vagy kapcsos zárójel között.

Az alábbi példa bemutatja, hogyan használja a metódust ForEach() . Ebben az esetben a szándék a tömb elemeinek négyzetértékének létrehozása.

$a = @(0 .. 3)
$a.ForEach({ $_ * $_})
0
1
4
9

A paraméter argumentumlista paraméteréhez ForEach-Objecthasonlóan a arguments paraméter lehetővé teszi argumentumok tömbjének átadását egy olyan szkriptblokknak, amely az elfogadásukra konfigurálva van.

Az Argumentumlista működésével kapcsolatos további információkért lásd: about_Splatting.

ForEach(írja be a convertToType kifejezést)

A ForEach() metódussal az elemeket egy másik típusra állíthatja. Az alábbi példa bemutatja, hogyan alakítható a sztringdátumok listája típussá [DateTime] .

("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)

A ForEach() metódus használható a gyűjtemény minden eleméhez tartozó tulajdonságértékek lekérésére vagy beállítására is.

# 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[] argumentumok)

Lastly, ForEach() metódusok használhatók a metódusok végrehajtására a gyűjtemény minden elemén.

("one", "two", "three").ForEach("ToUpper")
ONE
TWO
THREE

A paraméter argumentumlistás paraméteréhez ForEach-Objecthasonlóan a arguments paraméter lehetővé teszi egy értéktömb átadását az elfogadásra konfigurált szkriptblokknak.

Megjegyzés

A Windows PowerShell 3.0-s verziójától kezdődően a gyűjtemények egyes elemeinek tulajdonságainak és végrehajtási módszereinek lekérése a "Skaláris objektumok és gyűjtemények metódusai" használatával is elvégezhető. Erről itt about_Methods olvashat bővebben.

Hol()

Lehetővé teszi a tömb elemeinek szűrését vagy kijelölését. A szkriptnek a következőtől eltérő értékre kell kiértékelnie: nulla (0), üres sztring, vagy $null ahhoz, $false hogy az elem a Where()következő után jelenjen meg: . A logikai kiértékelésről további információt a about_Booleans című témakörben talál.

A metódusnak egy definíciója Where() 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. Emellett nem lehet szóköz a metódus és a nyitó zárójel vagy kapcsos zárójel között.

Ez Expression egy szkriptblokk, amely a szűréshez szükséges, az mode opcionális argumentum további kijelölési képességeket tesz lehetővé, az numberToReturn opcionális argumentum pedig lehetővé teszi, hogy korlátozza a szűrőből visszaadott elemek számát.

A értéknek WhereOperatorSelectionMode enumerálási mode értéknek kell lennie:

  • Default (0) – Az összes elem visszaadása
  • First (1) – Az első elem visszaadása
  • Last (2) – Az utolsó elem visszaadása
  • SkipUntil (3) – Hagyja ki az elemeket, amíg a feltétel nem teljesül, adja vissza az összes többi elemet (beleértve az első elemet is, amelyre a feltétel igaz)
  • Until (4) – Adja vissza az összes elemet, 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 többi elemet 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 szkriptblokk használatával szűri az Expression elemeket.

numberToReturn Ha a meg van adva, meghatározza a visszaadni kívánt elemek maximális számát.

# 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

A mód és First a Default mód is az első (numberToReturn) elemet adja vissza, és felcserélhetően használható.

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 az ÖSSZES fennmaradó gyűjteményelemet visszaadja tesztelés nélkül. A rendszer csak egy átadott elemet tesztel.

Ez azt jelenti, hogy a visszaadott gyűjtemény a NEM tesztelt átmenő és nem átadott elemeket is tartalmazza.

A visszaadott elemek száma korlátozható, ha értéket ad át az 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. A gyűjtemény összes elemét visszaadja, amíg egy elem át nem adja a szkriptblokk kifejezését. Miután egy elem átadta a scriptblock kifejezést, a metódus leállítja az Where() elemek feldolgozását.

Ez azt jelenti, hogy a metódusból megkapja a nem átadott elemek első készletét Where() . Ha egy elem megfelel, a többi nem lesz tesztelve vagy visszaadva.

A visszaadott elemek száma korlátozható, ha értéket ad át az 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 tételtSkipUntil, mind Until pedig az adott tételt nem tesztelő helyszínen működik.

Untilaz első PASSelőtt visszaadja az elemeket. SkipUntilaz első lépésután az összes elemet visszaadja, beleértve az első átadott elemet is.

Split

A Split mód a gyűjteményelemeket két különálló gyűjteményre osztja vagy csoportosítja. Azok, akik átengedik a scriptblock kifejezést, és azok, akik nem.

Ha egy numberToReturn meg van adva, az első gyűjtemény tartalmazza az átadott elemeket, hogy ne lépje túl a megadott értéket.

A többi objektum, még azok is, amelyek PASS a kifejezésszűrő, 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

Mind ForEach() a Where() metódusok 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 tulajdonságnak és a LengthSetValue metódusnak) lekéréséhez használja a Get-Member parancsmag InputObject paraméterét.

Amikor egy tömböt a következőre Get-Membercsövez, a PowerShell egyenként küldi el az elemeket, és Get-Member visszaadja a tömb egyes elemeinek típusát (figyelmen kívül hagyva az ismétlődéseket).

Az InputObject paraméter Get-Member használatakor a tömb tagjait adja vissza.

A következő parancs például lekéri a tömbváltozó tagjait $a .

Get-Member -InputObject $a

A tömb tagjait úgy is lekérheti, hogy beír egy vesszőt (,) a parancsmagba Get-Member beírt érték elé. A vessző a tömböt tömbök második elemé 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

Tömbök 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átorral (=) adjon meg egy új értéket az elemhez. Ha például a tömb második elemének (1. indexpozíció) értékét 10-esre szeretné módosítani, írja be a $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 tömb második értékét (1. indexpozíció) 500-ra módosítja $a :

$a.SetValue(500,1)

Az 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

Az operátor használatakor a += PowerShell 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űveletet többször is megismételik, vagy ha 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 kijelölt elemeit tartalmazza. Ha például a tömböt a $t tömb összes elemével szeretné létrehozni, $a 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 értéket $null a tömbhöz. A következő parancs törli a változóban lévő tömböt $a .

$a = $null

A parancsmagot is használhatja Remove-Item , de az érték hozzárendelése $null gyorsabb, különösen nagy tömbök esetén.

Nulla vagy egy tömb

A Windows PowerShell 3.0-tól kezdődően egy nulla vagy egy objektumból álló gyűjtemény rendelkezik a és Length a Count tulajdonságokkal. Emellett indexelhet egy objektumból álló tömböt is. 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 rendszer indexelésének támogatása.Tuple Objektumok

A PowerShell 6.1 hozzáadta az objektumok indexelt hozzáférésének Tuple támogatását, hasonlóan a tömbökhöz. 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 Tuple eltérően az objektumok egyetlen objektumként lesznek kezelve, amikor áthaladnak a folyamaton, vagy olyan paraméterekkel, amelyek támogatják az objektumtömböket.

További információ: System.Tuple.

Implementáló .NET-típusok indexelése IDictionary<TKey, TValue>

A PowerShell nem hívja meg egy típus valódi indexelőjét az általános IDictionary<TKey, TValue> felületet implementáló típusok esetében. Ehelyett, ha egy kulcsot ad meg, a PowerShell teszteli a kulcs meglétét a használatával TryGetValue(), amely akkor ad vissza $null , ha a kulcs nem létezik.

Ezzel szemben, ha a típus valódi indexelőjét hívja meg a használatával Item(<key>), a metódus kivételt jelez, ha a kulcs nem létezik.

Az alábbi példa a különbséget szemlélteti.

PS> [Collections.Generic.Dictionary[string, int]]::new()['nosuchkey']
# No output ($null)

PS> [Collections.Generic.Dictionary[string, int]]::new().Item('nosuchkey')
GetValueInvocationException: Exception getting "Item": "The given key 'nosuchkey'
 was not present in the dictionary."

Taghozzáférés enumerálása

A PowerShell 3.0-tól kezdve, amikor a taghozzáférési operátort használja egy olyan tag eléréséhez, 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 tömbváltozóban $filestárolja. Mivel a tömbobjektum nem rendelkezik WriteTime-taggalLast, a rendszer a WriteTime értéketLast 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 enumerálása lehetővé teszi, hogy értékeket szerezzen be egy gyűjtemény elemeiből, de nem állíthat be értékeket a 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_LastWriteTime() metódus a FileInfo objektum rejtett tagja. Az alábbi példa bemutatja, hogyan kereshet rejtettset 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;}

Figyelemfelhívás

Mivel a metódust a rendszer a gyűjtemény minden eleméhez végrehajtja, ügyelni kell arra, hogy a metódusokat tag-enumerálással hívja meg.

Lásd még