gpt4 book ai didi

powershell - 具有特殊名称的启动进程,或杀死它的句柄

转载 作者:行者123 更新时间:2023-12-01 11:32:51 25 4
gpt4 key购买 nike

我们有许多 node.js 程序,它们都是用 powershell 创建的。我们使用 start-process 在后台生成 node.js 可执行文件 (node.exe)。

我们想给每个人一个不同的“句柄”,以便我们以后可以使用 powershell 命令 stop-process 来杀死它们。例如启动进程 -Name 'wServer'
要杀死的 powershell 脚本将与要启动的脚本不同,不同的用户很可能会使用它。

我被困在如何识别每个 node.exe 不同的问题上。不同的不是可执行文件,而是 app.js 的路径

以下是我们如何启动其中之一:

$reg = Get-Item -Path "hklm:\SOFTWARE\us\EGPL\GeoLibrarian" 
$path = $reg.GetValue('LibrarianPath').ToString()
$sixtyfour = [Environment]::Is64BitProcess

# Now start running Watson
$node = "C:\Program Files\nodejs\node.exe"
$arg = "app.js"
$dir = "$path\Watson"
start-process -WorkingDirectory $dir $node $arg
Write-Host "64-Bit Powershell: "$sixtyfour
Write-Host "PowerShell Version: "$PSVersionTable.PSVersion
Write-Host "Watson running in background"

现在,我可以通过这个序列杀死以独特窗口开头的那些,我认为在 powershell 中启动的那些不会有一个窗口。
Write-Host "Kill watson task"
$watson = get-process | where-object {$_.MainWindowTitle -eq 'WatsonJS'}
Stop-Process -Id $watson.Id -ErrorAction SilentlyContinue

最佳答案

一种方法是使用 -PassThru参数,导致 Start-Process返回一个可用于控制进程的对象。完成该过程后,将对象通过管道传送到 Stop-Process (或调用对象的 Kill() 方法)
如果需要跨 PS session 存储对象,可以使用 Export-Clixml 将变量保存到 XML 文件中。 .稍后,使用 Import-Clixml 重新水化变量.
PS session #1

$proc = Start-Process notepad -Passthru
$proc | Export-Clixml -Path (Join-Path $ENV:temp 'processhandle.xml')
PS session #2
$proc = Import-Clixml -Path (Join-Path $ENV:temp 'processhandle.xml')
$proc | Stop-Process

关于powershell - 具有特殊名称的启动进程,或杀死它的句柄,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30790533/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com