Использование хэш-карты в выражении Format-Table - PullRequest
1 голос
/ 12 января 2012

Я пытаюсь получить следующий пример из Использование Windows PowerShell для управления виртуальными машинами Статья на TechNet для работы:

$VMState = @{
    2="Running"
    3="Stopped"
    32768="Paused"
    32769="Suspended"
    32270="Starting"
    32771="Snapshotting"
    32773="Saving"
    32774="Stopping"
}

$vms = get-wmiobject -computername localhost -Namespace root\Virtualization -query "Select * from MSVM_Computersystem where Description like '%Virtual%' "
$vms | format-table -autosize @{Label=”VM Name”; expression = {$_.elementName}}, Description, @{Label =”VM State”; expression = {$VmState[$_.EnabledState]}}

По какой-то причине я не получаювключенное состояние отображается правильно и ничего не получается, например:

VM Name Description               VM State
------- -----------               --------
SANS    Microsoft Virtual Machine         
SERIF   Microsoft Virtual Machine      

Почему эта часть не работает?

expression = {$VmState[$_.EnabledState]}

1 Ответ

2 голосов
/ 12 января 2012

Измените свою хеш-таблицу на следующую и попробуйте:

$VMState = @{
    "2"="Running"
    "3"="Stopped"
    "32768"="Paused"
    "32769"="Suspended"
    "32270"="Starting"
    "32771"="Snapshotting"
    "32773"="Saving"
    "32774"="Stopping"
}

Альтернативой было бы убедиться, что $_.EnabledState имеет тип int - [int]$_.EnabledState

Обратите внимание, что

$a="2"
$VMState[$a] #gives nothing
$a=2
$VMState[$a] #gives Running
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...