[英]VMware PowerCLI Variables in ScriptText
您好,我在使用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的文档建议您应将-ScriptText
作为字符串而不是ScriptBlock传递 。 因此,在这种情况下,我们可以模仿示例2:
$string = "(Get-Wmiobject -Class Win32_ComputerSystem).Rename($strName)"
Invoke-VMScript -ScriptText $string
用" "
括起来的变量将被解析。
我没有方便使用的重命名方法,但是在LucD之后 ,这是一个使用变量为scriptText建立输入的工作示例:
$svcName = "vmtools"
$guestScript = 'get-wmiObject win32_service | where {$_.name -eq "' + $svcName + '"}'
Invoke-VMScript -vm myVMname -scriptText $guestScript
#Rename Computer command line script
$renamecomputer = "wmic path win32_computersystem where ""Name='%computername%'"" CALL rename name='$VM'"
#Send command line script to GuestOS
Invoke-VMScript -VM $VM -GuestUser $GU -GuestPassword $GP -ScriptType Bat -ScriptText $renamecomputer
这就是我用于重命名脚本的内容。 效果很好
我得到了这个工作:
Invoke-VMScript -VM $vm -ScriptText "(Get-WmiObject win32_computersystem).rename(""${vmName}"")"
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.