5 Вопрос: Что символ «@» делает в Powershell?

вопрос создан в Fri, Dec 12, 2008 12:00 AM

Я видел символ @, используемый в PowerShell для инициализации массивов. Что именно обозначает символ @ и где я могу прочитать об этом подробнее?

    
97
5 ответов                              5                         

PowerShell будет фактически обрабатывать любой разделенный запятыми список как массив:

"server1","server2"

Так что @ в этих случаях не является обязательным. Однако для ассоциативных массивов требуется @:

@{"Key"="Value";"Key2"="Value2"}

Официально @ - это оператор массива. Вы можете прочитать больше об этом в документации, установленной вместе с PowerShell, или в книге, подобной «Windows PowerShell: TFM», которую я в соавторстве.

    
69
2019-03-01 21: 57: 56Z
  1. Обязательно ознакомьтесь с приведенным ниже ответом Джеффри Сновера ... @ - это больше, чем просто идентификатор массива.
    2009-09-15 06: 47: 13Z

В 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
    
105
2019-05-26 09: 57: 54Z
  1. Это то, что я искал: этот оператор используется в контексте splat в сценариях развертывания группы ресурсов Azure.
    2016-08-03 13: 37: 09Z

Хотя приведенные выше ответы дают большую часть ответа, полезно - даже на этом этапе - дать полный ответ, а именно:

Подвыражение массива (см. about_arrays ) р>

Вынуждает значение быть массивом, даже если одиночный или нулевой, например, $a = @(ps | where name -like 'foo') р>

Инициализатор хэша (см. about_hash_tables )

Инициализирует хеш-таблицу парами ключ-значение, например, $HashArguments = @{ Path = "test.txt"; Destination = "test2.txt"; WhatIf = $true } р>

Splatting (см. about_splatting )

Давайте вызовем командлет с параметрами из массива или хеш-таблицы, а не с более привычными индивидуально перечисляемыми параметрами, например, используя хеш-таблицу чуть выше, Copy-Item @HashArguments

Здесь строки (см. about_quoting_rules )

Давайте создадим строки с легко внедряемыми кавычками, обычно используемыми для многострочных строк, например:

$data = @"
line one
line two
something "quoted" here
"@

Поскольку этот тип вопроса ( что означает нотация x в PowerShell? ) так часто встречается здесь, в StackOverflow, а также во многих комментариях читателей, я собрал лексикон пунктуации PowerShell, только что опубликованный на Simple-Talk.com. Прочитайте все о @, а также% и # и $_ и? а также в Полном руководстве по пунктуации PowerShell . К статье прилагается эта настенная диаграмма, которая дает вам все на одном листе: введите описание изображения здесь «> </a> </p>
    </div>
<div class = 43

2015-10-02 20: 13: 45Z
  1. Очень внимательноh пройти через все виды использования @. Я пришел сюда в поисках здесь строки. Спасибо!
    2019-06-12 20: 18: 08Z
  2. Эта настенная диаграмма удивительна, спасибо !!
    2019-06-20 14: 59: 21Z

Вы также можете обернуть выходные данные командлета (или конвейера) в @(), чтобы убедиться, что вы получаете обратно массив, а не один элемент.

Например, dir обычно возвращает список, но в зависимости от параметров может возвращать один объект. Если вы планируете перебирать результаты с помощью объекта foreach, вам необходимо убедиться, что вы получили список обратно. Вот надуманный пример:

$results = @( dir c:\autoexec.bat)

Еще одна вещь ... пустой массив (например, для инициализации переменной) обозначается @().

    
26
2019-03-01 21: 57: 30Z
  1. [массив] $синтаксис несколько более понятный, визуально, но хороший совет.
    2008-12-13 04: 43: 50Z

Оператор Splatting

Чтобы создать массив, мы создаем переменную и присваиваем массив. Массивы отмечены символом «@». Давайте возьмем обсуждение выше и используем массив для подключения к нескольким удаленным компьютерам:

$strComputers = @("Server1", "Server2", "Server3")<enter>

Они используются для массивов и хэшей.

Обучающее руководство по PowerShell 7: накопление, отзыв и изменение данных р>

Литералы массивов в PowerShell р>     

8
2019-03-01 21: 57: 15Z
источник размещен Вот
Другие вопросы