Get-AzureRmVM 需要名称参数吗?
Get-AzureRmVM requires a name parameter?
如果我 运行 来自 Azure 云的这个 powershell 命令 shell 它执行得很好,并为我提供了指定资源组中所有 VM 的列表:
Get-AzureRmVM -ResourceGroupName "MyGroup" -Status
如果我从自动化帐户在 运行书中执行它,我会收到错误消息;
Get-AzureRmVM : Cannot process command because of one or more missing
mandatory parameters: Name. At TestAutomationAccount-Job-StartVM:20 char:20
+
+ CategoryInfo : InvalidArgument: (:) [Get-AzureRmVM], ParameterBindingException
+ FullyQualifiedErrorId : MissingMandatoryParameter,Microsoft.Azure.Commands.Compute.GetAzureVMCommand
我正在尝试获取资源组中的 VM 列表,但无法弄清楚为什么会出现明显的行为差异。
当 运行 在 Azure Automation runbook 中时,我能够为 Get-AzureRmVM
cmdlet 重现相同的异常。
此问题的根本原因仅仅是由于 Azure 自动化环境和 Azure 云 Shell 中的 Get-AzureRmVM
cmdlet 版本不匹配(电源Shell) 环境.
Get-AzureRmVM
cmdlet 在 AzureRm.Compute PowerShell 模块下。
当我使用下面的 cmdlet 在 Azure 自动化环境中获取 AzureRm.Compute 的版本时。
Get-Module -ListAvailable -Name AzureRm.Compute -Refresh
我得到的版本是 1.2.1,用于 Azure 自动化环境,如下所示。
当我使用以下 cmdlet 在 Azure Cloud Shell (PowerShell) 会话中获取 AzureRm.Compute 的版本时。
Get-AzureRmCommand Get-AzureRmVM
我得到的版本是3.4.1 for Azure Cloud Shell (PowerShell) 环境如下图
因此我相信 AzureRm.Compute 模块版本在这两个环境中的不匹配解释了 Get-AzureRmVM
cmdlet 的不同行为和参数期望。
希望这对您有所帮助。
附录:
如果您想获得与在 Azure 云 Shell 环境中相同的 Get-AzureRmVM
cmdlet 体验,您可以转到 Azure 自动化帐户中的模块部分,select AzureRm.Compute 模块并将其更新为与 Azure Cloud Shell 环境相同的版本。
如果我 运行 来自 Azure 云的这个 powershell 命令 shell 它执行得很好,并为我提供了指定资源组中所有 VM 的列表:
Get-AzureRmVM -ResourceGroupName "MyGroup" -Status
如果我从自动化帐户在 运行书中执行它,我会收到错误消息;
Get-AzureRmVM : Cannot process command because of one or more missing mandatory parameters: Name. At TestAutomationAccount-Job-StartVM:20 char:20 + + CategoryInfo : InvalidArgument: (:) [Get-AzureRmVM], ParameterBindingException + FullyQualifiedErrorId : MissingMandatoryParameter,Microsoft.Azure.Commands.Compute.GetAzureVMCommand
我正在尝试获取资源组中的 VM 列表,但无法弄清楚为什么会出现明显的行为差异。
当 运行 在 Azure Automation runbook 中时,我能够为 Get-AzureRmVM
cmdlet 重现相同的异常。
此问题的根本原因仅仅是由于 Azure 自动化环境和 Azure 云 Shell 中的 Get-AzureRmVM
cmdlet 版本不匹配(电源Shell) 环境.
Get-AzureRmVM
cmdlet 在 AzureRm.Compute PowerShell 模块下。
当我使用下面的 cmdlet 在 Azure 自动化环境中获取 AzureRm.Compute 的版本时。
Get-Module -ListAvailable -Name AzureRm.Compute -Refresh
我得到的版本是 1.2.1,用于 Azure 自动化环境,如下所示。
当我使用以下 cmdlet 在 Azure Cloud Shell (PowerShell) 会话中获取 AzureRm.Compute 的版本时。
Get-AzureRmCommand Get-AzureRmVM
我得到的版本是3.4.1 for Azure Cloud Shell (PowerShell) 环境如下图
因此我相信 AzureRm.Compute 模块版本在这两个环境中的不匹配解释了 Get-AzureRmVM
cmdlet 的不同行为和参数期望。
希望这对您有所帮助。
附录:
如果您想获得与在 Azure 云 Shell 环境中相同的 Get-AzureRmVM
cmdlet 体验,您可以转到 Azure 自动化帐户中的模块部分,select AzureRm.Compute 模块并将其更新为与 Azure Cloud Shell 环境相同的版本。