2013-08-14 6 views
0

Почему следующая команда возвращает больше атрибутов, чем в Select?PowerShell Select-Object возвращается больше, чем указано?

$obj = Get-VM | Select VMName,State; $obj 

Выход:

VMName   : blah-blah 
State   : Off 
PSComputerName : host 
RunspaceId  : URI 

И как я только получить значение для государства?

$obj = Get-VM | Select VMName,State; $obj.State 

выше следует сделать трюк, но не :(

ответ

2

Это должен работать, но это звучит, как по какой-то причине назначение результатов Get-VM к $ OBJ происходит, прежде чем что-либо получает конвейер выбрать Попробуйте Get-VM | select VMName, State сам по себе в приглашении, и если вы получите ожидаемый результат, попробуйте это:.

$obj = (Get-VM | select VMName, State); $obj 

Чтобы получить только государство свойство , вы можете сделать это:

(Get-VM).State 
0

проблема нашла :)

Эта команда просто отлично, как это, однако, когда он получает завернутый в Invoke-Command, так что он запускается с другой машиной, тогда результаты будут изменены, чтобы включить определенную информацию о запуске, и требуется следующее отслеживание:

Invoke-Command -Comuptername XXXX -ScriptBlock {$obj = Get-VM | Select VMName,State; $obj} | Select State 
+0

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

Смежные вопросы