我试图获取资源组中的所有Vms,然后将每个元素发送给函数
$a = Get-AzureRmVM -ResourceGroupName Test2 | ft Name
foreach($output in $a) {Stop-AzRmVM -ResourceGroupName "Test2" -Name $output}
我收到此错误消息
Start-AzureRmVM:无法将“ System.Object []”转换为参数“名称”所需的类型“ System.String”。已指定 不支持该方法。
答案 0 :(得分:1)
Anish K对于Name
参数期望为String而不是对象数组是正确的。
但是,您还应该删除| ft Name
,因为那仅是为了将内容输出到控制台。
我会在此处使用ForEach-Object
(未经测试)
Get-AzureRmVM -ResourceGroupName 'Test2' | ForEach-Object {
$_ | Stop-AzRmVM
}
答案 1 :(得分:0)
根据错误,您正在传递一个object []而不是字符串。您的函数Stop-AzRmVm需要 Name 参数的字符串。
按如下所示更改脚本:
$a = Get-AzureRmVM -ResourceGroupName Test2 | ft Name
foreach($output in $a) {Stop-AzRmVM -ResourceGroupName "Test2" -Name $output.Name}