Antworten:
PowerShell behandelt jede durch Kommas getrennte Liste tatsächlich als Array:
"server1","server2"
In diesen Fällen ist das @ optional. Für assoziative Arrays ist jedoch das @ erforderlich:
@{"Key"="Value";"Key2"="Value2"}
Offiziell ist @ der "Array-Operator". Weitere Informationen finden Sie in der Dokumentation, die zusammen mit PowerShell installiert wurde, oder in einem Buch wie "Windows PowerShell: TFM", das ich mitautorisiert habe.
In PowerShell V2 ist @ auch der Splat-Operator .
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
Während die obigen Antworten den größten Teil der Antwort liefern , ist es nützlich - auch so spät auf die Frage -, die vollständige Antwort zu geben, nämlich:
Array-Unterausdruck (siehe about_arrays )
Erzwingt, dass der Wert ein Array ist, selbst wenn ein Singleton oder eine Null, z $a = @(ps | where name -like 'foo')
Hash-Initialisierer (siehe about_hash_tables )
Initialisiert eine Hash-Tabelle mit Schlüssel-Wert-Paaren, z
$HashArguments = @{ Path = "test.txt"; Destination = "test2.txt"; WhatIf = $true }
Splatting (siehe about_splatting )
Lassen Sie uns ein Cmdlet mit Parametern aus einem Array oder einer Hash-Tabelle aufrufen, anstatt den üblicheren, einzeln aufgezählten Parametern, z. B. mithilfe der obigen Hash-Tabelle. Copy-Item @HashArguments
Hier Zeichenfolgen (siehe about_quoting_rules )
Lassen Sie uns Zeichenfolgen mit einfach eingebetteten Anführungszeichen erstellen, die normalerweise für mehrzeilige Zeichenfolgen verwendet werden, z.
$data = @"
line one
line two
something "quoted" here
"@
Da diese Art von Frage ( was bedeutet "x" -Notation in PowerShell? ) Hier in StackOverflow sowie in vielen Leserkommentaren so häufig vorkommt, habe ich ein Lexikon mit PowerShell-Interpunktion zusammengestellt, das gerade auf Simple-Talk.com veröffentlicht wurde. Lesen Sie alles über @ sowie% und # und $ _ und? und mehr unter The Complete Guide to PowerShell Punctuation . Dem Artikel ist dieses Wallchart beigefügt, das Ihnen alles auf einem einzigen Blatt bietet:

Sie können auch die Ausgabe eines Cmdlets (oder einer Pipeline) einschließen, @()um sicherzustellen, dass Sie ein Array und kein einzelnes Element erhalten.
Beispielsweise gibt dir normalerweise eine Liste zurück, aber abhängig von den Optionen wird möglicherweise ein einzelnes Objekt zurückgegeben. Wenn Sie vorhaben, die Ergebnisse mit einem foreach-Objekt zu durchlaufen, müssen Sie sicherstellen, dass Sie eine Liste zurückerhalten. Hier ist ein erfundenes Beispiel:
$results = @( dir c:\autoexec.bat)
Eine weitere Sache ... ein leeres Array (wie das Initialisieren einer Variablen) wird bezeichnet @().
Der Splatting-Operator
Um ein Array zu erstellen, erstellen wir eine Variable und weisen das Array zu. Arrays sind mit dem Symbol "@" gekennzeichnet. Nehmen wir die obige Diskussion und verwenden Sie ein Array, um eine Verbindung zu mehreren Remotecomputern herzustellen:
$strComputers = @("Server1", "Server2", "Server3")<enter>
Sie werden für Arrays und Hashes verwendet.
PowerShell-Lernprogramm 7: Sammeln, Abrufen und Ändern von Daten