Odpowiedzi:
PowerShell faktycznie potraktuje każdą listę oddzieloną przecinkami jako tablicę:
"server1","server2"
W takich przypadkach znak @ jest opcjonalny. Jednak w przypadku tablic asocjacyjnych znak @ jest wymagany:
@{"Key"="Value";"Key2"="Value2"}
Oficjalnie @ jest „operatorem tablicy”. Możesz przeczytać więcej na ten temat w dokumentacji zainstalowanej wraz z PowerShell lub w książce takiej jak „Windows PowerShell: TFM”, której jestem współautorem.
W PowerShell V2 @ jest także operatorem Splat .
PS> # First use it to create a hashtable of parameters:
PS> $params = @{path = "c:\temp"; Recurse= $true}
PS> # Then use it to SPLAT the parameters - which is to say to expand a hash table
PS> # into a set of command line parameters.
PS> dir @params
PS> # That was the equivalent of:
PS> dir -Path c:\temp -Recurse:$true
Chociaż powyższe odpowiedzi dostarczają większości odpowiedzi, warto - nawet tak późno w kwestii pytania - udzielić pełnej odpowiedzi, a mianowicie:
Wyrażenie podrzędne tablicy (zobacz about_arrays )
Wymusza, aby wartość była tablicą, nawet jeśli jest to singleton lub null, np $a = @(ps | where name -like 'foo')
Inicjator skrótu (zobacz about_hash_tables )
Inicjuje tablicę skrótów z parami klucz-wartość, np
$HashArguments = @{ Path = "test.txt"; Destination = "test2.txt"; WhatIf = $true }
Splatting (zobacz about_splatting )
Wywołajmy cmdlet z parametrami z tablicy lub tablicy skrótów zamiast bardziej zwyczajowych indywidualnie wyliczanych parametrów, np. Używając tabeli skrótów powyżej, Copy-Item @HashArguments
Tutaj ciągi (zobacz about_quoting_rules )
Utwórzmy ciągi z łatwymi do osadzania cudzysłowami, zwykle używanymi w przypadku ciągów wieloliniowych, np .:
$data = @"
line one
line two
something "quoted" here
"@
Ponieważ tego typu pytanie ( co oznacza notacja `` x '' w PowerShell? ) Jest tak powszechne w StackOverflow, a także w wielu komentarzach czytelników, przygotowałem leksykon interpunkcji PowerShell, właśnie opublikowany na Simple-Talk.com. Przeczytaj wszystko o @, a także o% i # oraz $ _ i? i nie tylko w Pełnym przewodniku po interpunkcji programu PowerShell . Do artykułu dołączony jest poniższy wykres, który zawiera wszystko na jednym arkuszu:
Możesz również zawinąć dane wyjściowe polecenia cmdlet (lub potoku), @()
aby upewnić się, że otrzymujesz tablicę, a nie pojedynczy element.
Na przykład dir zwykle zwraca listę, ale w zależności od opcji może zwrócić pojedynczy obiekt. Jeśli planujesz iterację wyników z każdym obiektem, musisz upewnić się, że otrzymałeś listę z powrotem. Oto wymyślony przykład:
$results = @( dir c:\autoexec.bat)
Jeszcze jedno ... pusta tablica (jak inicjalizacja zmiennej) jest oznaczona @()
.
Operator Splatting
Aby utworzyć tablicę, tworzymy zmienną i przypisujemy tablicę. Tablice są oznaczone symbolem „@”. Weźmy powyższą dyskusję i użyj tablicy, aby połączyć się z wieloma zdalnymi komputerami:
$strComputers = @("Server1", "Server2", "Server3")<enter>
Są używane dla tablic i skrótów.
Samouczek programu PowerShell 7: gromadzenie, przywoływanie i modyfikowanie danych