開啟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
}
}