Войти

Показать полную графическую версию : [решено] Использование объекта как значения


breakfruit
19-05-2015, 13:58
Друзья, камнями не закидывайте и палками не бейте. Только начал разбираться в PS.

Задача, казалось бы простая. Есть список VM, из которого нужно взять конкретный ID и использовать его для работы стороннего командлета. Скрипт выглядит банально

Add-PSSnapin SecurityManager
$script:vm_name=Read-Host "Virtual Machine name is..."
$script:vm_group=Read-Host "Group name is..."
$script:vm_ident=Get-VM "$vm_name" | Select ID
$script:vm_group_id=foreach ($vm_group in Get-VMGroups | Select-Object ID)
{
Set-VMGroupsMembership -VMId $vm_ident -GroupsList $vm_group_id
}


На выходе получаю
Cannot bind parameter 'VMId'. Cannot convert value
"@{Id=e0f63469-1c5e-4c8e-a0ae-5b92e7cfe1da}" to type "System.Guid". Error: "Cannot convert
the "@{Id=e0f63469-1c5e-4c8e-a0ae-5b92e7cfe1da}" value of type
"Selected.Microsoft.HyperV.PowerShell.VirtualMachine" to type "System.Guid".

Нужно именно значение. Это реально сделать? Загуглился уже весь, глаза в мыле.

Iska
19-05-2015, 14:27
На выходе получаю »
Я скрипт не разбирал, да и VM под рукой нет, но по сообщению об ошибке явно видна попытка автоматического преобразования хэш-таблицы в объект типа «System.Guid».

Kazun
19-05-2015, 14:52
Select-Object ID заменить на Select-Object -Expand ID

breakfruit
19-05-2015, 15:32
Я скрипт не разбирал, да и VM под рукой нет, но по сообщению об ошибке явно видна попытка автоматического преобразования хэш-таблицы в объект типа «System.Guid». »
Возможно, но как я уже сказал - я чайник. Мне не о много, увы, это сказало... =( Вернее, перевести-то и додумать, что он НЕ может преобразовать объект в guid - я могу :)

Select-Object ID заменить на Select-Object -Expand ID »

Это интереснее. Только у меня доступен вариант -ExpandProperty. Полагаю, версия PS свежее.

В принципе, скрипт затыкается на командлете стороннего разработчика, так что спасибо за оперативную помощь!




© OSzone.net 2001-2012