【问题标题】:VMware PowerCLI Variables in ScriptTextScriptText 中的 VMware PowerCLI 变量
【发布时间】:2013-09-11 13:47:01
【问题描述】:

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

但是如果我跑了

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

$strName 变量没有得到解决,有人知道如何解决吗?

【问题讨论】:

    标签: powershell powercli


    【解决方案1】:

    您的变量范围不正确。这是一个您可以在控制台中尝试的简单实验:

    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
    

    " " 包围的变量将被解析。

    【讨论】:

    • Hmmhmhm 我愚蠢到不是 RTFM 但是当我将它作为字符串传递时,我收到一条错误消息,说我在最终方法调用中缺少 ')'。 $strScript = "(Get-WmiObject -Class win32_ComputerSystem).Rename($strName)" Invoke-VMScript -ScriptText $strScript
    • 听起来像是语法错误。确保$strName 的内容没有破坏任何内容,或者查看Invoke-VMScript 如何转义字符并确保它没有破坏您的输入。
    【解决方案2】:

    我没有方便重命名的客人,但在LucD 之后,这是一个使用变量为 scriptText 建立输入的工作示例:

    $svcName = "vmtools"
    $guestScript = 'get-wmiObject win32_service | where {$_.name -eq "' + $svcName + '"}'
    Invoke-VMScript -vm myVMname -scriptText $guestScript
    

    【讨论】:

      【解决方案3】:
      #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
      

      这是我用于重命名脚本的内容。 效果很好

      【讨论】:

        【解决方案4】:

        我得到了这个工作:

        Invoke-VMScript -VM $vm -ScriptText "(Get-WmiObject win32_computersystem).rename(""${vmName}"")"
        

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2014-06-09
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多