$servers =
'server1',
'server2',
'server3'
foreach ($srv in $servers)
{
# Stop the services
# Step 1 - stop the service
if (-not ([appdomain]::CurrentDomain.getassemblies() |? {$_.ManifestModule -like "system.serviceprocess"})) {[void][System.Reflection.Assembly]::LoadWithPartialName('system.serviceprocess')}
$getSRV = [System.ServiceProcess.ServiceController]::GetServices($srv)
(new-Object System.ServiceProcess.ServiceController($service,$srv)).Stop()
(new-Object System.ServiceProcess.ServiceController($service,$srv)).WaitForStatus('Stopped',(new-timespan -seconds 30))
Write-Host $service " stopped on " $srv
# Step 2 - Kill remaining threads
$killList = $null
$killList = @()
$process = [System.Diagnostics.Process]
$EASProc = $Null
$EASProc = $process::GetProcesses($srv) | where {$_.ProcessName -like "eassrvr"}
if (!$EASProc){Write-Host "SKIPPING " $srv}
if ($EASProc)
{
foreach ($proc in $EASProc)
{
$killList += $proc.ID
}
if($killList)
{
foreach ($id in $killList)
{
([WMI]"\\$srv\root\cimv2:Win32_Process.Handle=$id".Terminate())
Write-Host "Need to kill..." $id
}
}
}
}
|