我如何获取资源组中的Vm列表

时间:2019-09-20 12:25:51

标签: azure powershell

我试图获取资源组中的所有Vms,然后将每个元素发送给函数

$a = Get-AzureRmVM -ResourceGroupName Test2 | ft Name
foreach($output in $a) {Stop-AzRmVM -ResourceGroupName "Test2" -Name $output}

我收到此错误消息

Start-AzureRmVM:无法将“ System.Object []”转换为参数“名称”所需的类型“ System.String”。已指定 不支持该方法。

2 个答案:

答案 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}