開啟powershell執行視窗:

powershell.exe C:\Users\Administrator\Desktop\a.ps1 -a $a。

-a $a :  vbs指令碼路徑(如 C:\hyper.vbs)

例如:powershell.exe C:\Users\Administrator\Desktop\a.ps1 -a C:\hyper.vbs

a.ps1內容:

#傳入本機指令碼路徑
param($a)
#通過配置檔案得到遠端伺服器名稱
$paths="C:\Users\Administrator\AppData\Roaming\Microsoft\Windows\Hyper-V\Client\"
$name=(Get-ChildItem $paths).Name
$paths=$paths+$name.Trim()
$xmldata = [xml](Get-Content $paths\VirtMgmt.VMBrowser.config)

#xml檔案通過各個節點得到所取得值三級節點下name=“BrowserComputerNames”的值
$node =$xmldata.SelectNodes("configuration/Microsoft.Virtualization.Client.VMBrowser.BrowserConfigurationOptions/setting") | Where-Object { $_.Name -match "BrowserComputerNames" }
$values= $node.value
if($values -eq ""){
   #執行本地指令碼
   cscript c:\hyper-v.vbs
}else{
    foreach ($ServerName in $values)
    {
        #通過遠端伺服器名稱得到伺服器IP
        $ip = (Get-WmiObject win32_networkadapterconfiguration -ComputerName $ServerName).IPAddress | Out-String
        $ip= $ip.split(":")[0]
        $ip=$ip.SubString(0,$ip.Length-4)
        $ip= $ip-replace "\n",""
        $ip= $ip.Trim()
        #將本地主機上的Hyper.vbs複製到遠端連線主機
        copy-item –Path $a –Destination \\$ip\c$\hyper.vbs -Recurse
        #定義會話
        $session1 = new-pssession –computerName $ServerName
        #在會話中遠端執行指令碼
        Invoke-Command -Session $session1 -ScriptBlock {cscript c:\hyper.vbs}
        #將遠端主機上的執行結果檔案複製到本地C盤
        copy-item –Path \\$ip\c$\Users\Administrator\Documents\*_chk.xml –Destination C:\  -Recurse
        #刪除遠端主機上的vbs檔案和結果檔案
        del \\$ip\c$\Users\Administrator\Documents\*_chk.xml
        del \\$ip\c$\hyper.vbs
     }
}