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

2024-01-18

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

截至目前,我的 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 打开该网站后是否有办法也可以将其关闭。

我知道

停止进程-processname chrome

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

非常感谢任何建议。

提前致谢!


我相信非常困难。看来,当 Chrome 启动时,它会生成各种其他进程,最终成为窗口/选项卡,而您实际启动的进程只会促进此进程,然后退出。我认为可以强制它在新窗口中打开并跟踪该程序的 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 http://google.com,如您所见,返回的进程 7332 不存在,并且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
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

在 PowerShell 中使用 Stop-Process 关闭特定网站 的相关文章

随机推荐