我一直在尝试为自己创建一个脚本,该脚本将允许我以非侵入的方式同时打开多个程序。例如,Steam 等一个程序并不总是需要在我启动计算机时启动,因此我想将其与 origin/gtalk/任何将打开程序的程序一起编写脚本,但关闭特定程序的主窗口(steam/origin,我只是使用开始菜单或任务栏来启动游戏)。
现在进行我的研究,这样做似乎并不太复杂。
获取进程 Steam ,来源|其中 {$_.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
寻求帮助有点愚蠢,这不是一个非常有值(value)的脚本,但我认为它很酷:P
最佳答案
我只是不明白为什么你不简单地使用以下命令来停止该过程:
Get-Process steam,origin -ErrorAction silentlycontinue | stop-process
但是你可以使用这个:
while (($p=Get-Process steam,origin -ErrorAction silentlycontinue) -ne $null)
{
$p | % {$_.CloseMainWindow()}
}
关于powershell - 在powershell中操作进程的主窗口,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9815553/