使用powershell远程运行.bat文件


PowerShell交流中心使用powershell远程运行.bat文件
0
Q1494915145 asked 7 年 ago

一、执行一键打开.bat文件

一键启动.bat内的指令为

start CentralServer.exe 1
start ControlServer.exe 1
start DBServer.exe 10
start DBServer.exe 11

本地powershell的指令为

$na = “XXX”                                                                                                                                      #远程桌面用户名
$p2 = ConvertTo-SecureString “XXXXXXX” -AsPlainText -Force                                      #将密码字符串转换成安全字符串
$A = New-Object System.Management.Automation.PSCredential($na,$p2)
Invoke-Command -ComputerName 1XX.1XX.1XX.1XX -Credential $A -ScriptBlock {
Set-Location D:\ServerDir
invoke-expression -command D:\ServerDir\一键启动.bat
}

在ise中运行脚本,脚本一直处于运行状态,点停止按钮也要等很久才能停止。能在远程进程中能查询到执行了.bat文件,但是不能在远程直接执行“一键关闭.bat”关闭,必须在ps上执行“一键关闭.bat”才能关闭。

二、第二次尝试

在远程添加一个start一键启动.ps1脚本

Set-Location D:\ServerDir
invoke-expression -command “D:\ServerDir\一键启动.bat”

并将本地powershell的指令改为

$na = “XXX”                                                                                                                                      #远程桌面用户名
$p2 = ConvertTo-SecureString “XXXXXXX” -AsPlainText -Force                                      #将密码字符串转换成安全字符串
$A = New-Object System.Management.Automation.PSCredential($na,$p2)
Invoke-Command -ComputerName 1XX.1XX.1XX.1XX -Credential $A -ScriptBlock {
invoke-expression -command D:\ServerDir\start一键启动.ps1
}

在ise中运行脚本,脚本一直处于运行状态,点停止按钮也要等很久才能停止。能在远程进程中能查询到执行了.bat文件,但是不能在远程直接执行“一键关闭.bat”关闭,必须在ps上执行“一键关闭.bat”才能关闭。

三、执行一键关闭.bat文件就没有问题

@echo off
taskkill /im ControlServer.exe /f
taskkill /im CentralServer.exe /f

$na = “XXX”                                                                                                                                      #远程桌面用户名
$p2 = ConvertTo-SecureString “XXXXXXX” -AsPlainText -Force                                      #将密码字符串转换成安全字符串
$A = New-Object System.Management.Automation.PSCredential($na,$p2)
Invoke-Command -ComputerName 1XX.1XX.1XX.1XX -Credential $A -ScriptBlock {
Set-Location D:\ServerDir
invoke-expression -command D:\ServerDir\一键关闭.bat
}

 

1 Answers
0
Mooser Lee 管理员 answered 7 年 ago

ISE本身有很多假死的Bug,你直接在PowerShell控制台运行正常,就算没有问题。