Відповіді:
PowerShell насправді буде розглядати будь-який розділений комою список як масив:
"server1","server2"
Таким чином, @ в цих випадках необов’язковий. Однак для асоціативних масивів потрібний @:
@{"Key"="Value";"Key2"="Value2"}
Офіційно @ - "оператор масиву". Докладніше про це ви можете прочитати в документації, встановленої разом із PowerShell, або в книзі на кшталт "Windows PowerShell: TFM", яку я є співавтором.
У PowerShell V2 @ також є оператором 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
Хоча вищезазначені відповіді дають більшість відповідей, корисно - навіть запізнившись на питання - надати повну відповідь, на кмітливість:
Підвираз масиву (див. About_arrays )
Примушує значення бути масивом, навіть якщо сингл або нуль, наприклад $a = @(ps | where name -like 'foo')
Ініціалізатор хешу (див. About_hash_tables )
Ініціалізує хеш-таблицю з парами ключ-значення, наприклад
$HashArguments = @{ Path = "test.txt"; Destination = "test2.txt"; WhatIf = $true }
Бризкання (див. Про_забризкування )
Давайте ви будете викликати командлет з параметрами масиву або хеш-таблиці, а не більш звичними індивідуально перерахованими параметрами, наприклад, використовуючи хеш-таблицю трохи вище, Copy-Item @HashArguments
Тут рядки (див. About_quoting_rules )
Давайте створимо рядки з легко вбудованими цитатами, зазвичай використовуються для рядкових рядків, наприклад:
$data = @"
line one
line two
something "quoted" here
"@
Оскільки такий тип запитань ( що означає позначення "x" у PowerShell? ) Настільки поширений тут, на StackOverflow, а також у багатьох коментарях читачів, я зібрав лексикон пунктуації PowerShell, щойно опублікований на Simple-Talk.com. Прочитайте все про @, а також% і # і $ _ і? та багато іншого в Повному посібнику з пунктуації PowerShell . До статті додається ця стінна діаграма, яка дає вам все на одному аркуші:
Ви також можете обернути висновок командлета (або конвеєра), @()
щоб гарантувати, що те, що ви отримуєте назад, є масивом, а не одним елементом.
Наприклад, dir зазвичай повертає список, але залежно від параметрів він може повертати один об'єкт. Якщо ви плануєте повторювати результати за допомогою об'єкта foreach, вам потрібно переконатися, що ви отримаєте список. Ось надуманий приклад:
$results = @( dir c:\autoexec.bat)
Ще одне - позначається порожній масив (як ініціалізація змінної) @()
.
Оператор бризок
Щоб створити масив, ми створимо змінну і призначимо масив. Масиви відзначаються символом "@". Візьмемо обговорення вище та використаємо масив для підключення до декількох віддалених комп'ютерів:
$strComputers = @("Server1", "Server2", "Server3")<enter>
Вони використовуються для масивів і хешей.