windows - PowerShell: Genstart service med eksekverbart navn

Indlæg af Hanne Mølgaard Plasc

Problem



alle


Jeg implementerede mit første PowerShell script, der gør nogle opsætninger, indstiller registreringsnøgler og i så ende skal man genstarte tjenester. Problemet er, at jeg kun har navnet på den eksekverbare, men ikke servicenavnet. Genstart-service kan kun fungere med navnet på tjenesten. Googling (godt Binging også) omkring gav mig ikke meget resultat.


Jeg spekulerede på, om der er en måde at genstarte tjenesten på med eksekverbart navn?


Jeg ved, at jeg kan få proces med eksekverbart navn, men bare at dræbe processen og starte den igen er IKKE et godt valg, da tjenesten Start/Stop-funktioner ikke kaldes, og det fungerer muligvis ikke korrekt.


Tak.

Bedste reference


Du kan prøve at bruge wmi og gøre noget som dette:


(gwmi win32\_service | ?{$\_.pathname -match "\executable.exe "}) | Restart-Service

Andre referencer 1


Get-WmiObject -Class Win32\_Service -Filter "PathName LIKE '\%PartOfTheName\%'" -ComputerName PC1 | Foreach-Object{
    $\_.StopService()
    $\_.StartService()   
}

Andre referencer 2


Du kan gøre dette ved hjælp af WMI:


$process = Get-Process sqlservr| select -ExpandProperty Id

Get-WmiObject win32\_Service| 
    where {$process -contains $\_.ProcessId}|
    foreach {Restart-Service $\_.Name}


 Ændret script for at genstarte tjenesten, ikke bare stoppe det.

Andre referencer 3


#set by logic to determine if the service will restart or not
 $global:ServerWillRestart=$true 

#can be found using the name column of Get-services cmdlet
 $serviceName="Set name of the service" 
if($global:ServerWillRestart){
     $service =Get-Service | where{ $\_.Name -eq $serviceName}
do{
    Write-output "The service $ServiceName will is being stopped"
    Stop-Service $service
    Start-Sleep -s 2
}
while($service.WaitForStatus("Stopped"))

do{
    Write-Output "The service $ServiceName will is being started"
    Start-Service $service
    Start-Sleep -s 2
}
while($service.WaitForStatus("Running"))