PowerShell - добавление столбца в массив - PullRequest
2 голосов
/ 18 октября 2011

Допустим, вы делаете что-то вроде этого:

$partitions = get-wmiobject -query "Associators of {Win32_DiskDrive.DeviceID=""$DevID""} WHERE AssocClass = Win32_DiskDriveToDiskPartition" -computer $ComputerName

Если вы хотите получить заголовок диска для каждого диска ('C:'), вам нужно что-то вроде этого:

function GetDiskCaption {
   param ($Partition, $ComputerName)

    $DeviceID = $Partition.DeviceID
    $colLogicalDisk = get-wmiobject -query "Associators of {Win32_DiskPartition.DeviceID=""$DeviceID""} WHERE AssocClass = Win32_LogicalDiskToPartition" -computer $ComputerName

   If ($colLogicalDisk.Caption -ne $null) {
      return $colLogicalDisk.Caption
   }
   Else {
       return "UNASSIGNED"
   }
}

Я не очень продвинутый пользователь PowerShell, поэтому вопрос таков: как лучше всего PowerShell добавить заголовок диска в массив, чтобы можно было передать его, скажем, в ft или какой-либо другой скрипт?

Теперь я понимаю, что могу просто сделать цикл foreach, чтобы распечатать это, но я хочу разобраться, как расширить массив дополнительными столбцами, чтобы я мог затем использовать операторы конвейера, скажем, для форматирования массива.

Примеры на сайте Microsoft по обработке массивов основаны на одномерных массивах, поэтому добавление массивов, кажется, не является ответом.

Я специально пытаюсь написать скриптвыгрузить список дисков с их отображением iSCSI (если есть) и различными разделами на этом диске.

1 Ответ

7 голосов
/ 18 октября 2011

Вы можете использовать хеш-таблицу (ассоциативный массив):

$hash = @{}
$partitions | %{ $caption = GetDiskCaption $_ $computername; $hash[$caption]=$_ }
$hash

Или создавать объекты:

$combined = $partitions | %{ $caption = GetDiskCaption $_ $computername
                $obj = new-object psobject
                $obj | add-member -name caption -type noteproperty -value $caption
                $obj | add-member -name partition -type noteproperty -value $_
                $obj
            }
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...