AskOverflow.Dev

AskOverflow.Dev Logo AskOverflow.Dev Logo

AskOverflow.Dev Navigation

  • 主页
  • 系统&网络
  • Ubuntu
  • Unix
  • DBA
  • Computer
  • Coding
  • LangChain

Mobile menu

Close
  • 主页
  • 系统&网络
    • 最新
    • 热门
    • 标签
  • Ubuntu
    • 最新
    • 热门
    • 标签
  • Unix
    • 最新
    • 标签
  • DBA
    • 最新
    • 标签
  • Computer
    • 最新
    • 标签
  • Coding
    • 最新
    • 标签
主页 / coding / 问题 / 76932099
Accepted
Chris
Chris
Asked: 2023-08-19 03:28:55 +0800 CST2023-08-19 03:28:55 +0800 CST 2023-08-19 03:28:55 +0800 CST

如何获取作业的进程句柄?

  • 772

动机:我正在尝试使用简单的 powershell 作业测试一些与进程相关的命令。但是,所有 powershell 作业在进程表中都被命名为“powershell”。所以我需要可以用来过滤输出的进程句柄Get-Process。

因此,“更大”的问题可能更容易回答,但就目前情况而言,我认为只要我能够将 powershell 作业连接到其进程 ID(“句柄”),我就有一个解决方案。

如何从 powershell 作业获取进程 ID?(这不是 JobID)。

$job = Start-Job -Name $jobName -ScriptBlock { while($true){sleep -Seconds 1}}
$processes = Get-Process

$jobHandle = ???
$jobProcess = $processes |? {$_.Handle -eq $jobHandle}

如何获取以“???”表示的缺失信息 ?


处理 XY 问题并更一般地说,如果这是不可能的,因为所有内容都被继承到当前的 powershell 会话中,那么更大的问题是:如何创建一个任意命名或处理的进程,我可以从 powershell 执行任何操作,例如测试?

# how do I start this code block as an arbitrary named process?
name="test-Get-Foo.1.2"
{
  while($true){
    sleep -Seconds 2
  }
}

# ???

$proc=Get-Process |? {$_.Name -like "test-Get-Foo*"}
powershell
  • 1 1 个回答
  • 22 Views

1 个回答

  • Voted
  1. Best Answer
    Santiago Squarzon
    2023-08-19T04:00:38+08:002023-08-19T04:00:38+08:00

    关于第一个问题,据我所知,该类Job不会公开幕后产生的底层进程,而获得它的方法ProcessId是进行前后比较:

    $before = Get-CimInstance win32_process -Filter "ParentProcessId = $pid"
    $job = Start-Job -ScriptBlock {
        while ($true) {
            Start-Sleep -Seconds 1
        }
    }
    $after = Get-CimInstance win32_process -Filter "ParentProcessId = $pid"
    $process = $after | Where-Object { $_.ProcessId -notin $before.ProcessId }
    $jobHandle = $process.ProcessId
    

    关于第二个问题,解释一下:

    如何创建一个任意命名或处理的进程,我可以从 PowerShell 对其执行任何操作以进行测试?

    为此,您可以使用NamedPipeConnectionInfoClass。一个简单的例子:

    try {
        $proc = Start-Process powershell -PassThru -ArgumentList '-WindowStyle', 'Hidden'
        $pipe = [System.Management.Automation.Runspaces.NamedPipeConnectionInfo]::new($proc.Id)
        $rs = [runspacefactory]::CreateRunspace($pipe)
        $rs.Open()
        $ps = [powershell]::Create().AddScript({ "Hi there! I'm $PID" })
        $ps.Runspace = $rs
        $ps.Invoke() # `$task = $ps.BeginInvoke()` here for Async
    }
    finally {
        if ($ps) {
            $ps.Dispose()
        }
        if ($rs) {
            $rs.Dispose()
        }
        # Remove this if you don't want to kill the underlying process :)
        if ($proc) {
            $proc.Kill()
        }
    }
    
    • 1

相关问题

  • PowerShell 一行代码 - 如何

  • Powershell 5.1:我的模块中缺少别名描述

  • Import-CSV:将行(成员)添加到 foreach 循环中的结果对象

  • 在所有startthreadjob powershell中使用和修改我的变量

Sidebar

Stats

  • 问题 205573
  • 回答 270741
  • 最佳答案 135370
  • 用户 68524
  • 热门
  • 回答
  • Marko Smith

    使用 <font color="#xxx"> 突出显示 html 中的代码

    • 2 个回答
  • Marko Smith

    为什么在传递 {} 时重载解析更喜欢 std::nullptr_t 而不是类?

    • 1 个回答
  • Marko Smith

    您可以使用花括号初始化列表作为(默认)模板参数吗?

    • 2 个回答
  • Marko Smith

    为什么列表推导式在内部创建一个函数?

    • 1 个回答
  • Marko Smith

    我正在尝试仅使用海龟随机和数学模块来制作吃豆人游戏

    • 1 个回答
  • Marko Smith

    java.lang.NoSuchMethodError: 'void org.openqa.selenium.remote.http.ClientConfig.<init>(java.net.URI, java.time.Duration, java.time.Duratio

    • 3 个回答
  • Marko Smith

    为什么 'char -> int' 是提升,而 'char -> Short' 是转换(但不是提升)?

    • 4 个回答
  • Marko Smith

    为什么库中不调用全局变量的构造函数?

    • 1 个回答
  • Marko Smith

    std::common_reference_with 在元组上的行为不一致。哪个是对的?

    • 1 个回答
  • Marko Smith

    C++17 中 std::byte 只能按位运算?

    • 1 个回答
  • Martin Hope
    fbrereto 为什么在传递 {} 时重载解析更喜欢 std::nullptr_t 而不是类? 2023-12-21 00:31:04 +0800 CST
  • Martin Hope
    比尔盖子 您可以使用花括号初始化列表作为(默认)模板参数吗? 2023-12-17 10:02:06 +0800 CST
  • Martin Hope
    Amir reza Riahi 为什么列表推导式在内部创建一个函数? 2023-11-16 20:53:19 +0800 CST
  • Martin Hope
    Michael A fmt 格式 %H:%M:%S 不带小数 2023-11-11 01:13:05 +0800 CST
  • Martin Hope
    God I Hate Python C++20 的 std::views::filter 未正确过滤视图 2023-08-27 18:40:35 +0800 CST
  • Martin Hope
    LiDa Cute 为什么 'char -> int' 是提升,而 'char -> Short' 是转换(但不是提升)? 2023-08-24 20:46:59 +0800 CST
  • Martin Hope
    jabaa 为什么库中不调用全局变量的构造函数? 2023-08-18 07:15:20 +0800 CST
  • Martin Hope
    Panagiotis Syskakis std::common_reference_with 在元组上的行为不一致。哪个是对的? 2023-08-17 21:24:06 +0800 CST
  • Martin Hope
    Alex Guteniev 为什么编译器在这里错过矢量化? 2023-08-17 18:58:07 +0800 CST
  • Martin Hope
    wimalopaan C++17 中 std::byte 只能按位运算? 2023-08-17 17:13:58 +0800 CST

热门标签

python javascript c++ c# java typescript sql reactjs html

Explore

  • 主页
  • 问题
    • 最新
    • 热门
  • 标签
  • 帮助

Footer

AskOverflow.Dev

关于我们

  • 关于我们
  • 联系我们

Legal Stuff

  • Privacy Policy

Language

  • Pt
  • Server
  • Unix

© 2023 AskOverflow.DEV All Rights Reserve