Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Waitforstatus service powershell

I have written a script to stop the services on any server! But I get error:

      YMethod invocation failed because[System.ServiceProcess.ServiceControllerStatus] does not contain a method   named 'WaitForStatus'.
    At C:\Admin\Scripts\JBoss_StartStopp\stoppa_alla_IX2 och IX3.ps1:18 char:7
    +       $getservicestatus.WaitForStatus("Stopped")
    +       ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
    + CategoryInfo          : InvalidOperation: (:) [], RuntimeException
    + FullyQualifiedErrorId : MethodNotFound

When you quit a service on a server, I want to wait until the service is stopped and then go to the next service on the next server!

   $serverlist = Get-Content “.\server.txt”
   $servicename = "JBoss_cambio"

   $serverlistIX3 = Get-Content “.\ix3.txt”
   $servicenameIX3 = "Laskopia_Cosmic"


  foreach ($server in $serverlist) {

$getservicestatus = (Get-Service -Name $servicename -ComputerName $server).status
if ($getservicestatus -eq "Running") {
  Set-Service -Name $servicename -ComputerName $server -Status Stopped

  $getservicestatusIX3.WaitForStatus("Stopped")

  Write-Host "$server $servicename Stoppad!" -ForegroundColor Green
  }
else
  {
  Write-Host "$server $servicename var redan Stopped!" -ForegroundColor Yellow
  }
}


   foreach ($server in $serverlistIX3) {

$getservicestatusIX3 = (Get-Service -Name $servicenameIX3 -ComputerName $server).status
if ($getservicestatusIX3 -eq "Running") {
  Set-Service -Name $servicenameIX3 -ComputerName $server -Status Stopped
  $getservicestatusIX3.WaitForStatus("Stopped")
  Write-Host "$server $servicenameIX3 Sttopad!" -ForegroundColor Green
  }
else
  {
  Write-Host "$server $servicenameIX3 var redan Stoppad!" -ForegroundColor Yellow
  }
}


    Write-Host "." -ForegroundColor DarkBlue
     Read-Host "Tryck ENTER för att avsluta"
like image 443
Am Ba Avatar asked Aug 22 '26 22:08

Am Ba


1 Answers

The WaitForStatus method is member of System.ServiceProcess.ServiceController class, not ServiceControllerStatus. For example:

$s = Get-Service spooler
$s.WaitForStatus("Stopped")

You could modify your code to something like this:

$serviceIX3 = Get-Service -Name $servicenameIX3 -ComputerName $server
if($serviceIX3.status -eq "Running") {
    Stop-Service $serviceIX3
    $serviceIX3.WaitForStatus("Stopped")
    Write-Host "$server $servicenameIX3 Sttopad!" -ForegroundColor Green
}
like image 184
Janne Tuukkanen Avatar answered Aug 25 '26 14:08

Janne Tuukkanen



Donate For Us

If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!