.png)
Estou tendo problemas para resolver um problema menor. Portanto, para processos, posso armazenar seu nome em $PID usando a seguinte linha:
$process_name=get-Process -id $PID |select -expandir nome
No entanto, quero executar o processo como umserviço. Quero concluir a mesma operação, ou seja: armazenar o nome do serviço, por exemplo, [service_name].exe em uma variável $service_name.
A razão para isso é porque quero ter apenas um arquivo .ps1, que posso transformar em vários serviços que usam seus próprios arquivos .exe.config. Para que apenas um arquivo .ps1 possa ser compilado várias vezes em serviços como
[serviço1.exe, serviço2.exe, serviço3.exe, ...]
e cada serviço usa seu arquivo .exe.config correspondente, como
[service1.exe.config, service2.exe.config, service3.exe.config, ...]
Existe alguma maneira de fazer isso com o PowerShell?
Responder1
Você pode obter as informações de serviço do Processid
(Get-WmiObject Win32_Service -Filter "ProcessId='$PID'")
Responder2
Usando o Get-WmiObject você pode coletar os executáveis:
(Get-WmiObject win32_service | Where-Object -Property Name -Like *wallet*).PathName
Este exemplo exibirá o nome do executável junto com todas as opções. Se você quiser capturar isso em uma variável, tente:
$proc_name = (Get-WmiObject win32_service | Where-Object -Property Name -Like *wallet*).PathName
Se você precisar de alguma informação expandida da propriedade, tente:
Get-WmiObject win32_service | ?{$_.Name -like '*wallet*'} | Select-Object -Property *
Responder3
Aqui está outra maneira - as acima podem ser mais confiáveis?
$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