操纵流程';powershell中的主窗口
我一直在尝试为自己创建一个脚本,允许我一次打开多个程序,但以一种非侵入性的方式。例如,当我启动计算机时,Steam程序并不总是需要启动,因此我想将其与origin/gtalk/任何可以打开程序的程序一起编写脚本,但关闭特定程序的主窗口(Steam/origin,我只使用“开始”菜单或任务栏启动游戏) 现在做我的研究,这看起来并不太复杂操纵流程';powershell中的主窗口,powershell,process,window,Powershell,Process,Window,我一直在尝试为自己创建一个脚本,允许我一次打开多个程序,但以一种非侵入性的方式。例如,当我启动计算机时,Steam程序并不总是需要启动,因此我想将其与origin/gtalk/任何可以打开程序的程序一起编写脚本,但关闭特定程序的主窗口(Steam/origin,我只使用“开始”菜单或任务栏启动游戏) 现在做我的研究,这看起来并不太复杂 get process steam,origin | where{$\uu.closeMainWindow()} 我同意这个,我可以让它运行多次,但我想我会试着让
get process steam,origin | where{$\uu.closeMainWindow()}
我同意这个,我可以让它运行多次,但我想我会试着让它更漂亮一点。对于steam和Origin,有几个窗口被视为命令关闭的主标题窗口。但是,该命令一次只关闭一个,因此必须多次运行才能关闭它们。我的想法是创建一个具有while操作符的函数
这不太管用,因为我对powershell的所有概念/功能都很陌生,所以我不知道是否还有其他更简单的方法可以做到这一点。我甚至不确定这是否是一个有效的while循环,考虑到没有将该条件与任何东西进行比较,我尝试将其设置为-eq$true
如下而((获取过程蒸汽,原点{$\mainWindowTitle})-eq$true)
但出现了错误
function test {
while (get-process steam, origin | where {$_.mainWindowTitle}) {
$_.closeMainWindow;
}
}
传递到第三行的输出为:
Handles NPM(K) PM(K) WS(K) VM(M) CPU(s) Id ProcessName
------- ------ ----- ----- ----- ------ -- -----------
1161 97 97776 123000 334 3.62 4468 Origin
570 73 175252 58392 484 10.65 1484 Steam
请求帮助是一件很愚蠢的事情,它不是一个非常有价值的脚本,但我认为它很酷:p我只是不明白为什么您不使用以下命令停止此过程:
Get-Process steam,origin -ErrorAction silentlycontinue | stop-process
但是你可以用这个:
while (($p=Get-Process steam,origin -ErrorAction silentlycontinue) -ne $null)
{
$p | % {$_.CloseMainWindow()}
}
如果我停止进程,它们将停止在后台运行,阻止我启动steam或origin游戏,否则它们将再次打开窗口。我对您的脚本进行了一些修改,以更好地满足我的需要,您的脚本持续运行,因此我添加了
where{$.mainWindowTitle}
以获取while($p=get Process steam,origin-ErrorAction silentlycontinue | where{$.mainWindowTitle})-ne$null)