我的团队开发了一个网站,每个开发人员都有一个在完整IIS中运行的本地副本。我们还有一个服务,在生产中运行在Azure中,但对于开发,我们将它包装在一个控制台应用程序中。如果开发人员需要此服务,则可以通过双击exe,运行批处理或将exe固定到其Windows任务栏来启动Console应用程序。这将在他的桌面上打开一个控制台窗口并保持运行,直到他选择将其关闭。
我正在编写一个PowerShell脚本,开发人员可以运行该脚本以定期更新我们应用程序的许多部分。
当然,如果此服务在Console App中运行,则会锁定文件。所以我写了这个脚本的一部分,以检查控制台应用程序并停止它(有效)。
但是,我想重新启动它。但是,只需调用exe(& MyService.exe)即可在powershell窗口的上下文中启动应用程序并阻止会话。
如何让exe进入自己的Windows控制台窗口?
if (Get-Process | ? { $_.Name -eq "SchedulerConsole" }) {
$schedulerwasrunning = $true
Write-Host "shutting down SchedulerConsole" -ForegroundColor Yellow
Stop-Process -Name SchedulerConsole
}
...
if ($schedulerwasrunning) {
Write-Host "restarting SchedulerConsole" -ForegroundColor Yellow
& "$workspaceroot\blah\blah\SchedulerConsole.exe"
}
答案 0 :(得分:6)
使用Start-Process
而不是&
运算符。这将在新的控制台窗口中生成应用程序。