【发布时间】:2012-08-31 09:59:33
【问题描述】:
这是我使用 powershell 脚本的第一天 我正在尝试使用 VMM Cmdlet Get-SCVirtualMachine 当我像
一样使用它时效果很好PS C:\> $VM = Get-SCVirtualMachine -Name "VM01"
但是当我尝试时它给了我一个错误
PS C:\> $vmName = 'VM01'
PS C:\> $VM = Get-SCVirtualMachine -Name "$vmName"
我得到的错误是
无法验证参数“名称”的参数。字符数 (0) 中的参数太小。指定一个长度为 大于或等于“1”,然后重试该命令。
谁能告诉我我做错了什么?
谢谢
【问题讨论】:
-
$vmName.GetType()打印什么?还有$vmName | Get-Member. -
我无法使用提供的代码重现错误。当参数值为
$null或为空(长度为0)时,该错误消息是Name参数上的[ValidateLength(1, x)]属性的结果。变量$vmName在调用 cmdlet 之前以某种方式被重置,这对于您发布的代码是不可能的。如果不发布重现问题的实际原始代码,则无法回答此问题。 -
正如其他人评论的那样,发布的代码有效。问题的一个可能原因是有一行将
$vmname定义为不同的类型。例如[bool]$vmname = $false这可以通过在第二次定义之前使用Remove-Variable vmname来解决。 -
很确定@BenH 的想法是正确的
-
函数调用不需要
$vmName上的引号......它应该已经是一个字符串
标签: powershell