如何在 PowerShell 中启动和停止进程?
How to start and stop processes in PowerShell?
这在 PowerShell 3 之前应该可以正常工作。我需要 运行 两个进程:wuapp.exe 和 desk.cpl 以及 ScreenSaver 的选项卡。我遇到的问题是,一旦我启动 wuapp.exe,进程名称在任务管理器中显示为 explorer.exe - 当前代码适用于 wuapp.exe,但不适用于每台机器。另一件事是当我杀死 运行dll32 时,其他应用程序也会关闭。你有什么建议?
$wshell = New-Object -ComObject Wscript.Shell
Start-Process wuapp.exe
(New-Object -comObject Shell.Application).Windows() | foreach-object {$_.quit()}
Start-Process rundll32 desk.cpl,InstallScreenSaver
Stop-Process -ProcessName rundll32* -Force
我不完全确定 wuapp.exe
显示为 explorer.exe
是什么意思,但是跟踪 rundll32
过程相当简单。
将 Start-Process
与 PassThru
参数一起使用以使其 return 它创建的进程:
$ScreenSaverCpl = Start-Process rundll32 desk.cpl,InstallScreenSaver -PassThru
# Call Stop-Process when no longer needed:
Stop-Process $ScreenSaverCpl
这在 PowerShell 3 之前应该可以正常工作。我需要 运行 两个进程:wuapp.exe 和 desk.cpl 以及 ScreenSaver 的选项卡。我遇到的问题是,一旦我启动 wuapp.exe,进程名称在任务管理器中显示为 explorer.exe - 当前代码适用于 wuapp.exe,但不适用于每台机器。另一件事是当我杀死 运行dll32 时,其他应用程序也会关闭。你有什么建议?
$wshell = New-Object -ComObject Wscript.Shell
Start-Process wuapp.exe
(New-Object -comObject Shell.Application).Windows() | foreach-object {$_.quit()}
Start-Process rundll32 desk.cpl,InstallScreenSaver
Stop-Process -ProcessName rundll32* -Force
我不完全确定 wuapp.exe
显示为 explorer.exe
是什么意思,但是跟踪 rundll32
过程相当简单。
将 Start-Process
与 PassThru
参数一起使用以使其 return 它创建的进程:
$ScreenSaverCpl = Start-Process rundll32 desk.cpl,InstallScreenSaver -PassThru
# Call Stop-Process when no longer needed:
Stop-Process $ScreenSaverCpl