2

如果我从 Azure 云 shell 运行这个 powershell 命令,它可以正常执行,并为我提供指定资源组中所有 VM 的列表:

获取 AzureRmVM -ResourceGroupName "MyGroup" -Status

如果我从自动化帐户的运行手册中执行它,我会收到错误;

Get-AzureRmVM:由于缺少一个或多个必需参数,无法处理命令:名称。在 TestAutomationAccount-Job-StartVM:20 char:20 + + CategoryInfo : InvalidArgument: (:) [Get-AzureRmVM], ParameterBindingException + FullyQualifiedErrorId : MissingMandatoryParameter,Microsoft.Azure.Commands.Compute.GetAzureVMCommand

我正在尝试获取资源组中的虚拟机列表,但无法弄清楚为什么会有明显的行为差异。

4

1 回答 1

3

在 Azure 自动化运行手册中运行时,我能够为Get-AzureRmVMcmdlet 重现相同的异常。

此问题的根本原因仅仅是由于Azure 自动化环境和 Azure Cloud Shell (PowerShell) 环境中cmdlet 的版本不匹配。Get-AzureRmVM

Get-AzureRmVMcmdlet 位于AzureRm.Compute PowerShell 模块下。

当我使用以下 cmdlet在 Azure 自动化环境中获取AzureRm.Compute的版本时。

Get-Module -ListAvailable -Name AzureRm.Compute -Refresh

我得到的 Azure 自动化环境版本是1.2.1,如下所示。

在此处输入图像描述

当我使用以下 cmdlet在 Azure Cloud Shell (PowerShell) 会话中获取AzureRm.Compute的版本时。

Get-AzureRmCommand Get-AzureRmVM

我得到的 Azure Cloud Shell (PowerShell) 环境的版本是3.4.1,如下所示。

在此处输入图像描述

因此,我相信这 2 个环境中的AzureRm.Compute模块版本不匹配解释了Get-AzureRmVMcmdlet 的不同行为和参数期望。

希望这可以帮助。

附录: 如果您想获得与Get-AzureRmVM在 Azure Cloud Shell 环境中相同的 cmdlet 体验,您可以转到您的 Azure 自动化帐户中的模块部分,选择 AzureRm.Compute 模块并将其更新为与 Azure Cloud Shell 环境相同。

在此处输入图像描述

于 2017-11-15T00:23:38.880 回答