执行powershell脚本

时间:2021-12-27 00:33:49

打开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
     }
}