我有一个powershell脚本,需要运行另一个.exe文件作为其工作的一部分。
.exe文件本身产生了一个交互式shell,我想多次写入和读取(不会在中间删除.exe进程)。
例如,我想从Powershell运行类似的东西:
& my.exe
然后以下面的方式与该进程交互,以便我可以读取和写入生成的shell的进程的stdin / stdout,如下所示:
MY.EXE> <something sent from powershell>
<Output that powershell can read>
MY.EXE> <something sent from powershell>
<Output that powershell can ready>
等
当我完成时,最终会杀死.exe进程。
我已经在Powershell中使用手动进程生成并重写StdIn / StdOut / StdErr,但这看起来似乎很有趣。
有什么想法吗?
答案 0 :(得分:0)
start-job
$a = Start-Job -ScriptBlock {Get-Process }
$a | Receive-Job
您可以使用Remove-Job
删除作业
这个工作在你打开的shell工作,但是任务调度程序添加了一些工作,你可以添加任务运行工作一次或每分钟运行工作,你可以删除调度程序
schtasks / create / tn TaskName / tr TaskRun / sc minute [/ mo {1 - 1439}] [/ st StartTime] [/ sd StartDate] [/ ed EndDate] [/ s computer [/ u [域名]用户/密码]] [/ ru {[域名]用户| “系统”} [/ rp 密码]]
schtasks /create /sc minute /mo 30 /tn "powershellscript" /tr c:\1.ps1
schtasks /query
schtasks /delete
对于在后台运行程序,您可以使用函数
function bg() {Start-Process -NoNewWindow @args}
bg some.exe
停止该程序
Get-Process -Name some.exe | Stop-Process