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



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

Invoke-Expression "c:exec.exe"

现在我的问题是,这位高管显示了类似"暂停并按任意键继续"的内容。

我试过了:

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

但运气不好。

我的问题是,我可以忽略这条消息吗?或者有没有一种方法可以监控输出并模拟按下任何键?

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

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

然后你可以用管道向它发送一条新行:

"`n" |& C:exec.exe

您可以使用processstartinfo和process:将回车键从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");

使用$host.UI.RawUI.ReadKey不会执行您想要的操作-ReadKey函数会等待输入并返回所按下键的信息。因此,它不是在发送输入,而是在等待输入。

这个答案与你的情况有关——也许你可以使用那里建议的方法。