簡體   English   中英

ScriptText中的VMware PowerCLI變量

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM