【问题标题】:Invoke and interact with other process using Powershell使用 Powershell 调用其他进程并与之交互
【发布时间】:2015-05-31 21:00:36
【问题描述】:

我有一个 powershell 脚本,它需要运行另一个 .exe 文件作为其工作的一部分。

.exe 文件本身会生成一个交互式 shell,我想多次写入和读取它(中间不会终止 .exe 进程)。

例如,我想从 Powershell 运行类似的东西:

& my.exe

然后以以下方式与该进程交互,以便我可以读取和写入生成的 shell 的进程的标准输入/标准输出,如下所示:

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,但这似乎充其量只是虚无缥缈。

有什么想法吗?

【问题讨论】:

    标签: powershell process exe stdout stdin


    【解决方案1】:

    在powershell中我们使用start-job

    $a = Start-Job -ScriptBlock {Get-Process }
    $a | Receive-Job
    

    您可以使用Remove-Job删除作业
    此作业在您打开的外壳上工作,但任务调度程序添加了一些作业您可以添加任务运行作业一次或每分钟运行作业,您可以删除调度程序

    schtasks /create /tn TaskName /tr TaskRun /sc minute [/mo {1 - 1439}] [/st StartTime] [/sd StartDate] [/ed EndDate] [/s 计算机[/u [域]用户 /p 密码]] [/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
    

    【讨论】:

      猜你喜欢
      • 2012-12-26
      • 2012-02-03
      • 2012-11-25
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-01-19
      • 1970-01-01
      相关资源
      最近更新 更多