【问题标题】:How do i get a list of Vm in a recourse group如何获取资源组中的 Vm 列表
【发布时间】:2019-09-20 12:25:51
【问题描述】:

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

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

我收到此错误消息

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

【问题讨论】:

    标签: azure powershell


    【解决方案1】:

    Anish K 关于 Name 参数需要一个字符串而不是对象数组是正确的。

    但是,您还应该删除 | ft Name,因为这仅用于将内容输出到控制台。

    我会像这样使用ForEach-Object(未经测试):

    Get-AzureRmVM -ResourceGroupName 'Test2' | ForEach-Object {
        $_ | Stop-AzRmVM
    }
    

    【讨论】:

      【解决方案2】:

      根据错误,您传递的是 object[] 而不是字符串。您的函数 Stop-AzRmVm 需要 Name 参数的字符串。

      如下改变你的脚本:

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

      【讨论】:

      • 我仍然收到一条错误消息:“Stop-AzureVM:无法验证参数“名称”上的参数。参数为空或空。提供一个不为空或空的参数,然后尝试再次执行命令。在 line:53 char:71"
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2023-04-10
      • 2018-10-28
      • 1970-01-01
      • 1970-01-01
      • 2020-04-20
      • 1970-01-01
      相关资源
      最近更新 更多