about_Arrays

Krótki opis

Opisuje tablice, które są strukturami danych przeznaczonymi do przechowywania kolekcji elementów.

Długi opis

Tablica to struktura danych przeznaczona do przechowywania kolekcji elementów. Elementy mogą być tego samego typu lub różnych typów.

Począwszy od Windows PowerShell 3.0, kolekcja zera lub jednego obiektu ma pewne właściwości tablic.

Tworzenie i inicjowanie tablicy

Aby utworzyć i zainicjować tablicę, przypisz wiele wartości do zmiennej. Wartości przechowywane w tablicy są rozdzielane przecinkami i oddzielone od nazwy zmiennej przez operatora przypisania (=).

Aby na przykład utworzyć tablicę o nazwie $A zawierającą siedem wartości liczbowych (int) 22, 5, 10, 8, 12, 9 i 80, wpisz:

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

Przecinek może również służyć do inicjowania pojedynczej tablicy elementów przez umieszczenie przecinka przed pojedynczym elementem.

Aby na przykład utworzyć tablicę pojedynczego elementu o nazwie $B zawierającej pojedynczą wartość 7, wpisz:

$B = ,7

Można również utworzyć i zainicjować tablicę przy użyciu operatora zakresu (..). Poniższy przykład tworzy tablicę zawierającą wartości od 5 do 8.

$C = 5..8

W rezultacie $C zawiera cztery wartości: 5, 6, 7 i 8.

Jeśli nie określono typu danych, program PowerShell tworzy każdą tablicę jako tablicę obiektów (System.Object[]). Aby określić typ danych tablicy, użyj metody GetType(). Aby na przykład określić typ $A danych tablicy, wpisz:

$A.GetType()

Aby utworzyć silnie typizowana tablica, czyli tablica, która może zawierać tylko wartości określonego typu, rzutować zmienną jako typ tablicy, na przykład ciąg[], long[]lub int32[]. Aby rzutować tablicę, poprzedzaj nazwę zmiennej typem tablicy ujętej w nawiasy. Aby na przykład utworzyć 32-bitową tablicę całkowitą o nazwie $ia zawierającą cztery liczby całkowite (1500, 2230, 3350 i 4000), wpisz:

[int32[]]$ia = 1500,2230,3350,4000

W rezultacie tablica $ia może zawierać tylko liczby całkowite.

Tablice rzutowane do dowolnego obsługiwanego typu można utworzyć na platformie .NET. Na przykład obiekty pobierane Get-Process do reprezentowania procesów są typu System.Diagnostics.Process . Aby utworzyć silnie typizowana tablicę obiektów procesu, wprowadź następujące polecenie:

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

Operator wyrażenia podrzędnego tablicy

Operator wyrażenia podrzędnego tablicy tworzy tablicę z instrukcji wewnątrz niej. Niezależnie od instrukcji wewnątrz operatora, operator umieści go w tablicy. Nawet jeśli istnieje zero lub jeden obiekt.

Składnia operatora tablicy jest następująca:

@( ... )

Możesz użyć operatora tablicy, aby utworzyć tablicę zero lub jeden obiekt. Przykład:

$a = @("Hello World")
$a.Count
1
$b = @()
$b.Count
0

Operator tablicy jest przydatny w skryptach podczas pobierania obiektów, ale nie wiem, ile obiektów otrzymujesz. Przykład:

$p = @(Get-Process Notepad)

Aby uzyskać więcej informacji na temat operatora wyrażenia podrzędnego tablicy, zobacz about_Operators.

Uzyskiwanie dostępu do elementów tablicy i używanie ich

Odczytywanie tablicy

Możesz odwoływać się do tablicy przy użyciu jej nazwy zmiennej. Aby wyświetlić wszystkie elementy w tablicy, wpisz nazwę tablicy. Załóżmy na przykład, że jest $a to tablica zawierająca liczby całkowite 0, 1, 2, do 9; wpisywanie:

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

Elementy w tablicy można odwoływać się przy użyciu indeksu, zaczynając od pozycji 0. Załącz numer indeksu w nawiasach kwadratowych. Aby na przykład wyświetlić pierwszy element w tablicy $a , wpisz:

$a[0]
0

Aby wyświetlić trzeci element w tablicy $a , wpisz:

$a[2]
2

Część tablicy można pobrać przy użyciu operatora zakresu dla indeksu. Aby na przykład pobrać drugi do piątego elementu tablicy, należy wpisać:

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

Liczba ujemna z końca tablicy. Na przykład "-1" odnosi się do ostatniego elementu tablicy. Aby wyświetlić ostatnie trzy elementy tablicy, w kolejności rosnącej indeksu wpisz:

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

Jeśli wpiszesz indeksy ujemne w kolejności malejącej, dane wyjściowe zmienią się.

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

Należy jednak zachować ostrożność podczas korzystania z tej notacji. Notacja jest cyklem od granicy końcowej do początku tablicy.

$a = 0 .. 9
$a[2..-2]
2
1
0
9
8

Ponadto jednym z typowych błędów jest założenie $a[0..-2] , że odnosi się do wszystkich elementów tablicy, z wyjątkiem ostatniego. Odwołuje się on do pierwszego, ostatniego i drugiego do ostatniego elementu w tablicy.

Możesz użyć operatora plus (+), aby połączyć zakresy z listą elementów w tablicy. Aby na przykład wyświetlić elementy na pozycjach indeksu 0, 2 i od 4 do 6, wpisz:

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

Ponadto, aby wyświetlić listę wielu zakresów i poszczególnych elementów, możesz użyć operatora plus. Aby na przykład wyświetlić listę elementów zero do dwóch, od czterech do sześciu, a element w ósmym typie pozycyjnym:

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

Iteracji nad elementami tablicy

Można również użyć konstrukcji pętli, takich jak ForEach, Fori While pętle, aby odwoływać się do elementów w tablicy. Aby na przykład użyć ForEach pętli do wyświetlenia elementów w tablicy $a , wpisz:

$a = 0..9
foreach ($element in $a) {
  $element
}
0
1
2
3
4
5
6
7
8
9

Pętla Foreach iteruje tablicę i zwraca każdą wartość w tablicy do momentu osiągnięcia końca tablicy.

Pętla jest przydatna For w przypadku przyrostowych liczników podczas badania elementów w tablicy. Aby na przykład użyć For pętli, aby zwrócić każdą inną wartość w tablicy, wpisz:

$a = 0..9
for ($i = 0; $i -le ($a.length - 1); $i += 2) {
  $a[$i]
}
0
2
4
6
8

Za pomocą While pętli można wyświetlać elementy w tablicy, dopóki zdefiniowany warunek nie będzie już spełniony. Aby na przykład wyświetlić elementy w $a tablicy, gdy indeks tablicy jest mniejszy niż 4, wpisz:

$a = 0..9
$i=0
while($i -lt 4) {
  $a[$i]
  $i++
}
0
1
2
3

Właściwości tablic

Countlub LengthLongLength

Aby określić, ile elementów znajduje się w tablicy, użyj Length właściwości lub jej Count aliasu. Longlength przydaje się, jeśli tablica zawiera więcej niż 2147 483 647 elementów.

$a = 0..9
$a.Count
$a.Length
10
10

Rank

Zwraca liczbę wymiarów w tablicy. Większość tablic w programie PowerShell ma tylko jeden wymiar. Nawet jeśli uważasz, że tworzysz tablicę wielowymiarową, jak w poniższym przykładzie:

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

W tym przykładzie tworzysz tablicę jednowymiarową zawierającą inne tablice. Jest to również nazywane poszarpaną tablicą. Właściwość Rank udowodniła, że jest to jednowymiarowe. Aby uzyskać dostęp do elementów w tablicy poszarpanej, indeksy muszą znajdować się w oddzielnych nawiasach ([]).

$a rank: 1
$a length: 3
$a[2] length: 348
Process $a[2][1]: AcroRd32

Tablice wielowymiarowe są przechowywane w kolejności głównej wiersza. W poniższym przykładzie pokazano, jak utworzyć naprawdę wielowymiarową tablicę.

[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

Aby uzyskać dostęp do elementów w tablicy wielowymiarowej, rozdziel indeksy przecinkami (,) w jednym zestawie nawiasów kwadratowych ([]).

Niektóre operacje na tablicy wielowymiarowej, takie jak replikacja i łączenie, wymagają spłaszczenia tej tablicy. Spłaszczanie zamienia tablicę w tablicę 1-wymiarową typu bez ograniczeń. Wynikowa tablica przyjmuje wszystkie elementy w kolejności głównej wiersza. Rozpatrzmy następujący przykład:

$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

Dane wyjściowe pokazują, że $c jest to tablica 1-wymiarowa zawierająca elementy z $a i $b w kolejności głównej wiersza.

Object[]
Int32[,]
Object[]
red
True
10
20
30
40

Metody tablic

Clear

Ustawia wszystkie wartości elementów na wartość domyślną typu elementu tablicy. Metoda Clear() nie resetuje rozmiaru tablicy.

W poniższym przykładzie $a jest tablica obiektów.

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

W tym przykładzie $intA jawnie wpisana jest liczba całkowita.

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

ForEach

Umożliwia iterowanie wszystkich elementów w tablicy i wykonywanie danej operacji dla każdego elementu tablicy.

Metoda ForEach ma kilka przeciążeń, które wykonują różne operacje.

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(wyrażenie scriptblock)

ForEach(wyrażenie scriptblock, argumenty object[])

Ta metoda została dodana w programie PowerShell w wersji 4.

Uwaga

Składnia wymaga użycia bloku skryptu. Nawiasy są opcjonalne, jeśli blok skryptu jest jedynym parametrem. Ponadto nie może istnieć odstęp między metodą a nawiasem otwierającym lub nawiasem klamrowym.

W poniższym przykładzie pokazano, jak używać ForEach metody . W takim przypadku intencją jest wygenerowanie wartości kwadratowej elementów w tablicy.

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

Podobnie jak parametr parametru -ArgumentListForEach-Object, arguments parametr umożliwia przekazywanie tablicy argumentów do bloku skryptu skonfigurowanego do ich akceptowania.

Aby uzyskać więcej informacji na temat zachowania argumentlist, zobacz about_Splatting.

ForEach(typ convertToType)

Metoda ForEach może służyć do szybkiego rzutowania elementów na inny typ. W poniższym przykładzie pokazano, jak przekonwertować listę dat ciągów na [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)

Metoda ForEach może być również używana do szybkiego pobierania lub ustawiania wartości właściwości dla każdego elementu w kolekcji.

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

LastForEach Metody mogą służyć do wykonywania metody na każdym elemencie w kolekcji.

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

Podobnie jak parametr parametru -ArgumentListForEach-Object, Arguments parametr umożliwia przekazywanie tablicy wartości do bloku skryptu skonfigurowanego do ich akceptowania.

Uwaga

Począwszy od Windows PowerShell 3.0 pobierania właściwości i wykonywania metod dla każdego elementu w kolekcji można również wykonać przy użyciu metod "Metody obiektów skalarnych i kolekcji". Więcej informacji na ten temat można znaleźć tutaj about_methods.

Lokalizacja

Umożliwia filtrowanie lub wybieranie elementów tablicy. Skrypt musi mieć wartość inną niż: zero (0), ciąg pusty lub $null element, $false który ma być wyświetlany po elemecie Where. Aby uzyskać więcej informacji na temat oceny logicznej, zobacz about_Booleans.

Istnieje jedna definicja Where metody .

Where(scriptblock expression[, WhereOperatorSelectionMode mode
                            [, int numberToReturn]])

Uwaga

Składnia wymaga użycia bloku skryptu. Nawiasy są opcjonalne, jeśli blok skryptu jest jedynym parametrem. Ponadto nie może istnieć odstęp między metodą a nawiasem otwierającym lub nawiasem klamrowym.

Element Expression to scriptblock, który jest wymagany do filtrowania, mode opcjonalny argument umożliwia dodatkowe możliwości wyboru, a numberToReturn opcjonalny argument umożliwia ograniczenie liczby elementów zwracanych z filtru.

Dopuszczalne wartości to mode :

  • Default (0) — zwracanie wszystkich elementów
  • First (1) — zwraca pierwszy element
  • Last (2) — zwraca ostatni element
  • SkipUntil (3) — Pomiń elementy do momentu, gdy warunek ma wartość true, zwróć wszystkie pozostałe elementy (w tym pierwszy element, dla którego warunek ma wartość true)
  • Until (4) — Zwracanie wszystkich elementów do momentu, gdy warunek ma wartość true
  • Split (5) — zwraca tablicę dwóch elementów
    • Pierwszy element zawiera pasujące elementy
    • Drugi element zawiera pozostałe elementy

W poniższym przykładzie pokazano, jak wybrać wszystkie nieparzyste liczby z tablicy.

(0..9).Where{ $_ % 2 }
1
3
5
7
9

W tym przykładzie pokazano, jak wybrać ciągi, które nie są puste.

('hi', '', 'there').Where({$_.Length})
hi
there

Default

Tryb Default filtruje elementy przy użyciu blokady skryptu Expression .

numberToReturn Jeśli element jest podany, określa maksymalną liczbę elementów do zwrócenia.

# 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)

Uwaga

Zarówno tryb, jak Default i First tryb zwracają pierwsze (numberToReturn) elementy i mogą być używane zamiennie.

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

Tryb SkipUntil pomija wszystkie obiekty w kolekcji, dopóki obiekt nie przekaże filtru wyrażeń blokowych skryptu. Następnie zwraca wszystkie pozostałe elementy kolekcji bez ich testowania. Testowany jest tylko jeden element przekazujący.

Oznacza to, że zwrócona kolekcja zawiera zarówno elementy przekazujące , jak i niezlecane , które nie zostały przetestowane.

Liczba zwracanych elementów może być ograniczona przez przekazanie wartości do argumentu numberToReturn .

$computers = "Server01", "Server02", "Server03", "localhost", "Server04"
# Find the first available online server.
$computers.Where({ Test-Connection $_ }, 'SkipUntil', 1)
localhost

Until

Tryb Until odwraca SkipUntil tryb. Zwraca wszystkie elementy w kolekcji, dopóki element nie przekaże wyrażenia bloku skryptu. Gdy element przekaże wyrażenie scriptblock, Where metoda przestanie przetwarzać elementy.

Oznacza to, że otrzymasz pierwszy zestaw elementów , które nie przechodzą z Where metody . Po przejściu jednego elementu reszta nie jest testowana ani zwracana.

Liczba zwracanych elementów może być ograniczona przez przekazanie wartości do argumentu numberToReturn .

# 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

Uwaga

Zarówno Until , jak i SkipUntil działają w środowisku NIE testowania partii elementów.

Until Metoda zwraca elementy PRZED pierwszym przekazaniem.

SkipUntil Zwraca wszystkie elementy PO pierwszym przekazaniu, w tym pierwszy element przekazujący.

Split

Tryb Split dzieli elementy kolekcji lub grupuje je na dwie oddzielne kolekcje. Te, które przekazują wyrażenie scriptblock, i te, które nie.

numberToReturn Jeśli element jest określony, pierwsza kolekcja zawiera elementy przekazujące, aby nie przekraczać określonej wartości.

Pozostałe obiekty, nawet te, które przekazują filtr wyrażenia, są zwracane w drugiej kolekcji.

$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
...

Uwaga

Obie foreach metody i where są elementami członkowskimi wewnętrznymi. Aby uzyskać więcej informacji na temat elementów wewnętrznych, zobacz about_Instrinsic_Members

Pobieranie elementów członkowskich tablicy

Aby uzyskać właściwości i metody tablicy, takie jak Length właściwość i metoda SetValue, użyj parametru Get-MemberInputObject polecenia cmdlet.

Podczas potoku tablicy do Get-Memberprogramu Program PowerShell wysyła elementy pojedynczo i Get-Member zwraca typ każdego elementu w tablicy (ignorując duplikaty).

Gdy używasz parametru InputObject , Get-Member zwraca elementy członkowskie tablicy.

Na przykład następujące polecenie pobiera elementy członkowskie zmiennej $a tablicy.

Get-Member -InputObject $a

Możesz również pobrać elementy członkowskie tablicy, wpisując przecinek (,) przed wartością potoku Get-Member do polecenia cmdlet. Przecinek sprawia, że tablica jest drugim elementem w tablicy tablic. Program PowerShell potokuje tablice pojedynczo i Get-Member zwraca elementy członkowskie tablicy. Podobnie jak w przypadku dwóch następnych przykładów.

,$a | Get-Member

,(1,2,3) | Get-Member

Manipulowanie tablicą

Elementy w tablicy można zmienić, dodać element do tablicy i połączyć wartości z dwóch tablic w trzecią tablicę.

Aby zmienić wartość określonego elementu w tablicy, określ nazwę tablicy i indeks elementu, który chcesz zmienić, a następnie użyj operatora przypisania (=), aby określić nową wartość elementu. Aby na przykład zmienić wartość drugiego elementu w $a tablicy (pozycja indeksu 1) na 10, wpisz:

$a[1] = 10

Możesz również użyć metody SetValue tablicy, aby zmienić wartość. Poniższy przykład zmienia drugą wartość (pozycja indeksu $a 1) tablicy na 500:

$a.SetValue(500,1)

Możesz użyć += operatora , aby dodać element do tablicy. W poniższym przykładzie pokazano, jak dodać element do tablicy $a .

$a = @(0..4)
$a += 5

Uwaga

Gdy używasz += operatora, program PowerShell faktycznie tworzy nową tablicę z wartościami oryginalnej tablicy i wartością dodaną. Może to spowodować problemy z wydajnością, jeśli operacja jest powtarzana kilka razy lub rozmiar tablicy jest zbyt duży.

Nie jest łatwo usuwać elementy z tablicy, ale można utworzyć nową tablicę zawierającą tylko wybrane elementy istniejącej tablicy. Aby na przykład utworzyć tablicę $t ze wszystkimi elementami w $a tablicy z wyjątkiem wartości na pozycji indeksu 2, wpisz:

$t = $a[0,1 + 3..($a.length - 1)]

Aby połączyć dwie tablice w jedną tablicę, użyj operatora plus (+). Poniższy przykład tworzy dwie tablice, łączy je, a następnie wyświetla wynikową połączoną tablicę.

$x = 1,3
$y = 5,9
$z = $x + $y

W rezultacie tablica $z zawiera wartości 1, 3, 5 i 9.

Aby usunąć tablicę, przypisz wartość $null do tablicy. Następujące polecenie usuwa tablicę w zmiennej $a .

$a = $null

Możesz również użyć Remove-Item polecenia cmdlet , ale przypisywanie wartości $null jest szybsze, szczególnie w przypadku dużych tablic.

Tablice o wartości zero lub jednej

Począwszy od Windows PowerShell 3.0, kolekcja zero lub jeden obiekt ma Count właściwości i Length . Ponadto można indeksować do tablicy jednego obiektu. Ta funkcja pomaga uniknąć błędów skryptów występujących, gdy polecenie, które oczekuje kolekcji, otrzymuje mniej niż dwa elementy.

W poniższych przykładach pokazano tę funkcję.

Zero obiektów

$a = $null
$a.Count
$a.Length
0
0

Jeden obiekt

$a = 4
$a.Count
$a.Length
$a[0]
$a[-1]
1
1
4
4

Obsługa indeksowania dla systemu.Tuple Obiektów

Program PowerShell 6.1 dodał obsługę indeksowanego dostępu do Tuple obiektów, podobnie jak w przypadku tablic. Przykład:

PS> $tuple = [Tuple]::Create(1, 'test')
PS> $tuple[0]
1
PS> $tuple[1]
test
PS> $tuple[0..1]
1
test
PS> $tuple[-1]
test

W przeciwieństwie do tablic i innych obiektów Tuple kolekcji obiekty są traktowane jako pojedynczy obiekt po przekazaniu przez potok lub przez parametry, które obsługują tablice obiektów.

Aby uzyskać więcej informacji, zobacz System.Tuple.

Wyliczenie dostępu do składowych

Począwszy od programu PowerShell 3.0, gdy używasz operatora dostępu do elementu członkowskiego, aby uzyskać dostęp do elementu członkowskiego, który nie istnieje w kolekcji list, program PowerShell automatycznie wylicza elementy w kolekcji i próbuje uzyskać dostęp do określonego elementu członkowskiego w każdym elemencie. Aby uzyskać więcej informacji, zobacz about_Member-Access_Enumeration.

Przykłady

Poniższy przykład tworzy dwa nowe pliki i przechowuje wynikowe obiekty w zmiennej tablicy $files. Ponieważ obiekt tablicy nie ma Lastelementu członkowskiego WriteTime , wartość LastWriteTime jest zwracana dla każdego elementu w tablicy.

$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

Wyliczanie dostępu do składowych umożliwia pobieranie wartości z elementów w kolekcji, ale nie ustawianie wartości elementów w kolekcji. Przykład:

$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.

Aby ustawić wartości, należy użyć metody .

$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

Metoda set_LastWriteTime() jest ukrytym elementem członkowskim obiektu FileInfo . W poniższym przykładzie pokazano, jak znaleźć elementy członkowskie, które mają ukrytąset metodę.

$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;}

Przestroga

Ponieważ metoda jest wykonywana dla każdego elementu w kolekcji, należy zachować ostrożność podczas wywoływania metod przy użyciu wyliczania elementów członkowskich.

Zobacz też