操纵流程';powershell中的主窗口

操纵流程';powershell中的主窗口,powershell,process,window,Powershell,Process,Window,我一直在尝试为自己创建一个脚本,允许我一次打开多个程序,但以一种非侵入性的方式。例如,当我启动计算机时,Steam程序并不总是需要启动,因此我想将其与origin/gtalk/任何可以打开程序的程序一起编写脚本,但关闭特定程序的主窗口(Steam/origin,我只使用“开始”菜单或任务栏启动游戏) 现在做我的研究,这看起来并不太复杂 get process steam,origin | where{$\uu.closeMainWindow()} 我同意这个,我可以让它运行多次,但我想我会试着让

我一直在尝试为自己创建一个脚本,允许我一次打开多个程序,但以一种非侵入性的方式。例如,当我启动计算机时,Steam程序并不总是需要启动,因此我想将其与origin/gtalk/任何可以打开程序的程序一起编写脚本,但关闭特定程序的主窗口(Steam/origin,我只使用“开始”菜单或任务栏启动游戏)

现在做我的研究,这看起来并不太复杂

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)