在PowerShell中使用Stop-Process关闭特定网站

时间:2014-02-18 15:25:24

标签: google-chrome powershell

我想知道是否有人知道如何关闭用户在Google Chrome中打开的特定网站?

截至目前,我已将谷歌浏览器打开到用户输入的网站。该网站被分配到$ question变量,您将在下面看到:

$question2 = Read-Host "Would you like to copy $question back to the server?"
if( ($question2 -eq 'yes') -or ($question2 -eq 'YES') -or ($question2 -eq 'Yes') -or ($question2 -eq 'Ye') -or ($question2 -eq 'Y') -or ($question2 -eq 'y') ) {
    start chrome.exe http://$question.website.org/
}

我想知道Chrome打开该网站后是否有办法,我也可以关闭它。

我知道

  

Stop-Process -processname chrome

但这将关闭所有Chrome。我正在寻找一种方法来关闭我为他们打开的网站。

非常感谢任何建议。

提前致谢!

1 个答案:

答案 0 :(得分:0)

我相信很难。似乎Chrome启动时会产生各种其他进程,最终成为Windows /标签,而实际启动的进程只会促进这一过程,然后退出。我认为有可能强制它在新窗口中打开并跟踪该程序的PID,但快速返回的PID消失。

我还认为可以查看ProcessStartInfo信息以查看是否可以通过以后查询传递任何参数,但是再次启动该过程时它会执行它所需要的操作然后消失并且参数不是没有传递给衍生的进程。

对于它的价值,这是我有多远:

[PS] 118# $a = new-object system.diagnostics.process
[PS] 119# $a.startinfo.filename = "C:\program files (x86)\Google\chrome\application\chrome.exe"
[PS] 120# $a.startinfo.arguments = "--new-window http://google.com"
[PS] 121# $a.startinfo.useshellexecute = $false
[PS] 122# $a.startinfo.verb = "test"
[PS] 123# $a.start()
True
[PS] 124# $a

Handles  NPM(K)    PM(K)      WS(K) VM(M)   CPU(s)     Id ProcessName
-------  ------    -----      ----- -----   ------     -- -----------
              0        0          0     0     0.08   7332


[PS] 125# get-process | ? {$_.id -eq 7332}
[PS] 126# get-process | ? {$_.name -eq 'chrome'} | % {$_.startinfo.arguments}











[PS] 127#

虽然这确实创建了一个带有http://google.com的新窗口,因为您可以看到返回的进程7332不存在且任何其他chrome进程的StartInfo.Arguments为空

除了不能使其正常工作外,您可以使用简单的正则表达式大大简化您的答案逻辑:

($question2 -imatch "^y(es)?$")
($question2 -imatch "^no?$")
事实证明:

[PS] 404> $("y" -imatch "y(es)?$")
True
[PS] 405> $("YES" -imatch "y(es)?$")
True
[PS] 406> $("N" -imatch "^no?$")
True
[PS] 407> $("nn" -imatch "^no?$")
False