Obtener el nombre del servicio de su PID (powershell)

Obtener el nombre del servicio de su PID (powershell)

Tengo problemas para resolver un problema menor. Entonces, para los procesos, puedo almacenar su nombre desde su $PID usando la siguiente línea:

$process_name=get-Process -id $PID |select -expandir nombre

Sin embargo, quiero ejecutar el proceso comoservicio. Quiero completar la misma operación, es decir: almacenar el nombre del servicio, por ejemplo, [nombre_servicio].exe en una variable $nombre_servicio.

La razón de esto es que quiero tener solo un archivo .ps1, que luego puedo convertir en múltiples servicios que usan sus propios archivos .exe.config. De modo que un solo archivo .ps1 se pueda compilar varias veces en servicios como

[servicio1.exe, servicio2.exe, servicio3.exe, ...]

y cada servicio utiliza su archivo .exe.config correspondiente, como

[servicio1.exe.config, servicio2.exe.config, servicio3.exe.config, ...]

¿Hay alguna manera de hacer esto con powershell?

Respuesta1

Puede obtener la información del servicio de Processid

(Get-WmiObject Win32_Service -Filter "ProcessId='$PID'")

Respuesta2

Usando Get-WmiObject puedes recopilar los ejecutables:

(Get-WmiObject win32_service | Where-Object -Property Name -Like *wallet*).PathName

Este ejemplo mostrará el nombre del ejecutable junto con los modificadores. Si desea capturar esto en una variable, intente:

$proc_name = (Get-WmiObject win32_service | Where-Object -Property Name -Like *wallet*).PathName

Si necesita información ampliada sobre la propiedad, intente:

Get-WmiObject win32_service | ?{$_.Name -like '*wallet*'} | Select-Object -Property *

Respuesta3

Aquí hay otra forma: ¿las anteriores podrían ser más confiables?

$id = 5556
# (debugging) Nice little table to make sure you've got the right thing...
Get-Process | Where-Object Id -EQ $id | Select ProcessName,Id | Format-Table    
 
# Finally just hand me back the name proper
Get-Process | Where-Object Id -EQ $id | Select -Expand ProcessName 
# Depending on what you're doing with it...
# Stop-Process -Id $id

información relacionada