.png)
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