我一直在尝试为自己创建一个脚本,允许我一次打开几个程序,但是以非侵入性的方式。当我启动计算机时,一个程序,例如Steam,并不总是需要启动,因此我想将它与origin / gtalk /打开程序的任何内容一起编写脚本,但关闭特定程序的主窗口(steam) / origin,我只是使用我的开始菜单或任务栏来开始游戏。)
现在做我的研究,这样做似乎并不太复杂。
get-process steam, origin | where {$_.closeMainWindow()}
我对此很好,我可以让它多次运行,但我想我会试着让它变得更加花哨。使用steam和Origin,有几个窗口被认为是命令关闭的主标题窗口。但是,该命令一次只关闭一个,因此必须多次运行才能关闭它们。我的想法是创建一个具有while运算符的函数。
这不太有用,因为我对powershell的所有概念/功能都很陌生,所以我不太清楚是否还有另一种更简单的方法。我甚至不确定这是否是一个有效的while循环,考虑到条件没有与任何东西进行比较,我试着像-eq $true
那样while ((get-process steam, origin | where {$_.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
答案 0 :(得分:2)
我只是不明白你为什么不直接停止使用:
Get-Process steam,origin -ErrorAction silentlycontinue | stop-process
但你可以用这个:
while (($p=Get-Process steam,origin -ErrorAction silentlycontinue) -ne $null)
{
$p | % {$_.CloseMainWindow()}
}