如何忽略暂停 - 在执行文件时按任意键 - 在Powershell中

时间:2017-02-01 14:16:23

标签: .net powershell

使用Powershell我正在使用invoke-expression启动一些可执行文件,如:

Invoke-Expression "c:\exec.exe"

现在我的问题是这个exec显示类似"暂停并按任意键继续"。

我试过了:

Function Run-Tool
{
    Invoke-Expression "c:\exec.exe"
    $host.UI.RawUI.ReadKey("NoEcho,IncludeKeyDown")
}

但没有运气。

我的问题是,我可以忽略该消息某种抑制,还是有办法监控输出并模拟按任意键?

3 个答案:

答案 0 :(得分:3)

如果exec.exe是常规控制台应用,则需要换行符la:

Console.Write("Press any key to exit...");
Console.ReadLine();

然后你可以直接管道换行符:

"`n" |& C:\exec.exe

答案 1 :(得分:2)

您可以使用processstartinfo和process:

将Enter键从powershell重定向到程序
$psi = New-Object System.Diagnostics.ProcessStartInfo;
$psi.FileName = "C:\yourexe.exe"; 
$psi.UseShellExecute = $false; 
$psi.RedirectStandardInput = $true;

$p = [System.Diagnostics.Process]::Start($psi);

Start-Sleep -s 2 # if your exe needs time to give output

$p.StandardInput.WriteLine("`n");

答案 2 :(得分:0)

使用$host.UI.RawUI.ReadKey将无法完成您的工作 - ReadKey函数等待输入并返回按下的键的信息。因此,它不是发送输入,而是等待输入。

This answer与您的情况有关 - 也许您可以使用那里建议的方法。