gpt4 book ai didi

powershell - 根据Windows标题终止任务

转载 作者:行者123 更新时间:2023-12-03 00:42:24 31 4
gpt4 key购买 nike

我希望在计算机上打开特定文件时使用它的PID终止进程,以免干扰其他脚本

我有一个excel表格,该表格由系统的其他部分引用,从许多不同的来源获取信息,我希望这些信息可以使我的工作流程自动化以使其工作更加顺畅。

Get-Process |where {$_.mainWindowTItle -eq "RASP transfer.xlsx - Excel"}  |Write-Output

我被困在如何提取PID并将其用作任务Stop-Process -ID PID的变量中

也许我缺少帮助

最后应该看起来像这样
Get-Process | 
Where {$_.mainWindowTItle -eq "RASP transfer.xlsx - Excel"} |
Write-Output $pid=id |
Stop-Process -ID $PID

编辑:19/6/6

目前,我能够识别特定工作簿的PID
通过运行 Get-Process |where {$_.mainWindowTItle -eq "RASP transfer.xlsx - Excel"} |Write-Output
powersell_output

我可以在任务管理器中找到
task manager output

但是,当文件使用脚本运行时,excel文件将被隐藏,并且无法使用Windows标题搜索...。

最佳答案

Powershell的一个不错的功能之一就是您可以在管道上传递一个对象。您甚至不需要进程ID:

Get-Process | Where {$_.mainWindowTItle -eq "RASP transfer.xlsx - Excel"} | Stop-Process

但是,重要的是要知道您在管道的每个阶段传递的对象类型。上一行中Stop-Process的输入是一个 Process对象,该对象具有 ID属性。
如果要获取进程ID,可以将其分配给变量。
$PID = (Get-Process | Where {$_.mainWindowTItle -eq "RASP transfer.xlsx - Excel"}).ID

...通常只会获得一个Process ID,因为Excel不允许在两个窗口中打开同一电子表格。但是您不能依靠窗口标题来唯一,因为如果您从不同文件夹中打开同一电子表格的两个副本,则窗口标题将是相同的。

如果要关闭所有Excel窗口,此代码会将所有Excel窗口的进程放入 Object[]数组中:
$ExcelProcs = Get-Process | Where {$_.mainWindowTItle -like "* - Excel"}  
Stop-Process足够聪明,可以将 [Object]数组用作输入并停止所有进程:
 $ExcelProcs | Stop-Process

关于powershell - 根据Windows标题终止任务,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57813578/

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