【问题标题】:provide name to a powershell process为 powershell 进程提供名称
【发布时间】:2021-07-07 07:42:51
【问题描述】:

我从 powershell 创建了一个长时间运行的进程,该进程运行一个命令很长一段时间,如下所示:

Start-process "powershell" "long running command"

我想给这个进程一个自定义名称或某种字符串类型的标记,以便以后引用该进程。

这是否可以命名从 powershell 启动的 powershell 进程?

在我的情况下,我不能使用 pid,因为我们必须使用他提供的名称来提供我们的客户端进程搜索能力。

【问题讨论】:

    标签: powershell powershell-5.1


    【解决方案1】:

    您可以让脚本在开始执行时修改 WindowTitle 属性,如下所示:

    $host.ui.RawUI.WindowTitle = 'Your Custom Title'
    

    然后您可以使用Get-Process powershell 并检查MainWindowTitle 属性来识别您的特定进程。

    Get-Process PowerShell | Where-Object { $_.MainWindowTitle -eq 'Your Custom Title' }
    

    可能还有其他选项,例如在特定用户帐户下运行进程或通过以特定 PowerShell 配置端点为目标,然后在通过 -ConfigurationEndpoint 开关运行 PowerShell.exe 进程时指定它。这些需要提前添加配置,但是将标题修改为您知道将是独一无二的内容是一个非常简单的解决方案。

    【讨论】:

    • 无论进程正在运行还是已完成,这都会给我相同的输出。为什么 ?我们可以区分两者吗?
    • 看起来它没有提供为长时间运行的命令生成的进程的详细信息,原因有两个。 1)即使在过程完成后它也会给出相同的结果。 2)如果我们关闭启动的powershell窗口并尝试在进程仍在运行时在不同的powershell窗口中搜索正在运行的进程,它无法搜索它
    • 您的进程是否在完成时更改了 WindowTitle 属性?我曾假设您期望 powershell 进程在完成时不存在。我不确定为什么您无法从另一个窗口找到该过程。当我测试时,它对我来说工作正常。
    • 如果您关闭启动窗口,那么我怀疑您已经杀死了长时间运行的进程,因为您杀死了它的父进程。
    猜你喜欢
    • 2018-01-08
    • 1970-01-01
    • 2018-11-05
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-10-18
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多