AskOverflow.Dev

AskOverflow.Dev Logo AskOverflow.Dev Logo

AskOverflow.Dev Navigation

  • Início
  • system&network
  • Ubuntu
  • Unix
  • DBA
  • Computer
  • Coding
  • LangChain

Mobile menu

Close
  • Início
  • system&network
    • Recentes
    • Highest score
    • tags
  • Ubuntu
    • Recentes
    • Highest score
    • tags
  • Unix
    • Recentes
    • tags
  • DBA
    • Recentes
    • tags
  • Computer
    • Recentes
    • tags
  • Coding
    • Recentes
    • tags
Início / coding / Perguntas / 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

Como faço para obter o identificador de processo de um trabalho?

  • 772

Motivação: Estou tentando testar alguns comandos relacionados ao processo com um simples trabalho de powershell. No entanto, todos os trabalhos do powershell são denominados "powershell" na tabela de processos. Portanto, preciso do identificador de processo que posso usar para filtrar Get-Processa saída.

Portanto, a pergunta 'maior' pode ser mais fácil de responder, mas, do jeito que está, acho que tenho uma solução se eu pudesse conectar um trabalho do powershell ao seu ID de processo ("Handle").

Como obtenho o ID do processo de um trabalho do powershell? (este não é o JobID).

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

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

Como obtenho as informações ausentes simbolizadas por '???' ?


Lidando com o problema XY e reformulado de forma mais geral, se isso for impossível porque tudo é adquirido na sessão atual do powershell, a grande questão é: como crio um processo arbitrariamente nomeado ou manipulado que eu possa fazer qualquer coisa, do powershell, para testando?

# 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 respostas
  • 22 Views

1 respostas

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

    Em relação à primeira pergunta, até onde eu sei, a Jobclasse não expõe o processo subjacente gerado nos bastidores e a maneira como você poderia obtê-lo ProcessIdseria fazer uma comparação antes e depois :

    $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
    

    Sobre a segunda questão, parafraseada:

    Como crio um processo arbitrariamente nomeado ou manipulado no qual posso fazer qualquer coisa, do PowerShell, para teste?

    Para isso você pode usar a NamedPipeConnectionInfoClasse . Um exemplo simples:

    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

relate perguntas

  • One-liner do PowerShell - Como

  • Powershell 5.1: descrições de alias estão faltando no meu módulo

  • Import-CSV: adiciona linhas (membros) ao objeto resultante no loop foreach

  • Use e modifique minha variável em todo powershell startthreadjob

Sidebar

Stats

  • Perguntas 205573
  • respostas 270741
  • best respostas 135370
  • utilizador 68524
  • Highest score
  • respostas
  • Marko Smith

    destaque o código em HTML usando <font color="#xxx">

    • 2 respostas
  • Marko Smith

    Por que a resolução de sobrecarga prefere std::nullptr_t a uma classe ao passar {}?

    • 1 respostas
  • Marko Smith

    Você pode usar uma lista de inicialização com chaves como argumento de modelo (padrão)?

    • 2 respostas
  • Marko Smith

    Por que as compreensões de lista criam uma função internamente?

    • 1 respostas
  • Marko Smith

    Estou tentando fazer o jogo pacman usando apenas o módulo Turtle Random e Math

    • 1 respostas
  • Marko Smith

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

    • 3 respostas
  • Marko Smith

    Por que 'char -> int' é promoção, mas 'char -> short' é conversão (mas não promoção)?

    • 4 respostas
  • Marko Smith

    Por que o construtor de uma variável global não é chamado em uma biblioteca?

    • 1 respostas
  • Marko Smith

    Comportamento inconsistente de std::common_reference_with em tuplas. Qual é correto?

    • 1 respostas
  • Marko Smith

    Somente operações bit a bit para std::byte em C++ 17?

    • 1 respostas
  • Martin Hope
    fbrereto Por que a resolução de sobrecarga prefere std::nullptr_t a uma classe ao passar {}? 2023-12-21 00:31:04 +0800 CST
  • Martin Hope
    比尔盖子 Você pode usar uma lista de inicialização com chaves como argumento de modelo (padrão)? 2023-12-17 10:02:06 +0800 CST
  • Martin Hope
    Amir reza Riahi Por que as compreensões de lista criam uma função internamente? 2023-11-16 20:53:19 +0800 CST
  • Martin Hope
    Michael A formato fmt %H:%M:%S sem decimais 2023-11-11 01:13:05 +0800 CST
  • Martin Hope
    God I Hate Python std::views::filter do C++20 não filtrando a visualização corretamente 2023-08-27 18:40:35 +0800 CST
  • Martin Hope
    LiDa Cute Por que 'char -> int' é promoção, mas 'char -> short' é conversão (mas não promoção)? 2023-08-24 20:46:59 +0800 CST
  • Martin Hope
    jabaa Por que o construtor de uma variável global não é chamado em uma biblioteca? 2023-08-18 07:15:20 +0800 CST
  • Martin Hope
    Panagiotis Syskakis Comportamento inconsistente de std::common_reference_with em tuplas. Qual é correto? 2023-08-17 21:24:06 +0800 CST
  • Martin Hope
    Alex Guteniev Por que os compiladores perdem a vetorização aqui? 2023-08-17 18:58:07 +0800 CST
  • Martin Hope
    wimalopaan Somente operações bit a bit para std::byte em C++ 17? 2023-08-17 17:13:58 +0800 CST

Hot tag

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

Explore

  • Início
  • Perguntas
    • Recentes
    • Highest score
  • tag
  • help

Footer

AskOverflow.Dev

About Us

  • About Us
  • Contact Us

Legal Stuff

  • Privacy Policy

Language

  • Pt
  • Server
  • Unix

© 2023 AskOverflow.DEV All Rights Reserve