使用Powershell我正在使用invoke-expression
启动一些可执行文件,如:
Invoke-Expression "c:\exec.exe"
现在我的问题是这个exec显示类似"暂停并按任意键继续"。
我试过了:
Function Run-Tool
{
Invoke-Expression "c:\exec.exe"
$host.UI.RawUI.ReadKey("NoEcho,IncludeKeyDown")
}
但没有运气。
我的问题是,我可以忽略该消息某种抑制,还是有办法监控输出并模拟按任意键?
答案 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与您的情况有关 - 也许您可以使用那里建议的方法。