您好,我在使用Invoke-VMScript cmdlet时遇到了一些问题
我制作了一个脚本,该脚本创建了一个虚拟Windows 7计算机,然后在计算机上执行了一些powershell脚本,例如,将计算机重命名为正确的名称。

但是如果我跑步

Invoke-VMScript -ScriptText {(Get-Wmiobject -Class Win32_ComputerSystem).Rename($strName)}

$ strName变量无法解析,有人对如何执行此操作有任何想法吗?

最佳答案

您没有正确确定变量的范围。您可以在控制台中尝试以下简单实验:

PS C:\> $test = "Resolve!"
PS C:\> $test
Resolve!

# This scriptblock will not resolve the variable.
PS C:\> {$test}
$test

# This scriptblock will resolve the variable.
PS C:\> [scriptblock]::Create($test)
Resolve!

Invoke-VMScript的documentation建议您应将-ScriptText作为字符串而不是ScriptBlock传递。因此,在这种情况下,我们可以模仿示例2:
$string = "(Get-Wmiobject -Class Win32_ComputerSystem).Rename($strName)"
Invoke-VMScript -ScriptText $string
" "包含的变量将被解析。

关于powershell - ScriptText中的VMware PowerCLI变量,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/18743021/

10-10 23:21