Имя пользователя:
Пароль:
 

Название темы: [решено] Синтаксис
Показать сообщение отдельно

Ветеран


Сообщения: 27449
Благодарности: 8088

Профиль | Отправить PM | Цитировать


Цитата za1:
Нагуглил, что @ - оператор массива, »
za1, не так.
Массив

Код: Выделить весь код
Get-Help about_Arrays -Full

А то, что Вы видите в коде — один из видов коллекций, в данном случае —
хэш-таблица

Код: Выделить весь код
Get-Help about_Hash_Tables -Full

Потому данным кодом:
Код: Выделить весь код
@{Name="size(GB)";Expression={"{0:N1}" -f($_.size/1gb)}}
и:
Код: Выделить весь код
@{Name="freespace(GB)";Expression={"{0:N1}" -f($_.freespace/1gb)}}
создаются не массивы, а хэш-таблицы, которые используется как параметры командлета Select-Object.

Цитата za1:
-f($_.size/1gb) это для отображения объема диска в Гб, но что такое -f? »
-f — это оператор формата. В выражении:
Код: Выделить весь код
"{0:N1}" -f ($_.size / 1gb)
«"{0:N1}"» — строка формата, где {…} — место в строке, куда помещается выражение, «0» — номер выражения, которые перечислены после оператора формата (оператор может форматировать одной строкой формата несколько выражений), «:» — разделитель номера выражения и формата выражения, «N» — идентификатор одного из стандартных форматов (Standard Numeric Format Strings | Microsoft Docs), «1» — показатель точности, попросту — число знаков после десятичной запятой (описано по той же ссылке). «-f» — собственно, сам оператор. «($_.size / 1gb)» — выражение для форматирования, берётся свойство .size текущего объекта конвеера («$_») и делится на 1 гигабайт (PowerShell позволяет использовать такие константы, как 1gb); поскольку оператор форматирования требует готового результата выражения, то выражение с делением заключается в круглые скобки.

Получающаяся хэш-таблица (которая затем будет использоваться как параметр командлета Select-Object) выглядит так:
Код: Выделить весь код
PS C:\> @{ Name = "size(GB)"; Expression = { "{0:N1}" -f ($_.Size / 1gb) }}

Name                           Value                                                                                                                        
----                           -----                                                                                                                        
Expression                      "{0:N1}" -f ($_.Size / 1gb)                                                                                                 
Name                           size(GB)
Это сообщение посчитали полезным следующие участники:

Отправлено: 14:14, 08-09-2018 | #3

Название темы: [решено] Синтаксис