Я играл со сценарием, который я нашел здесь ... и он очень изящный. Тем не менее, я нарушаю его каждый раз, когда я пытаюсь изменить его, чтобы выполнить остановку/запуск нескольких служб. За исключением индивидуального перечисления каждого. Есть идеи? Вот скрипт для запуска/остановки службы.Как изменить несколько сервисов?
$SvcName
необходимо прочитать следующие услуги: ftSysPolicy
, ftSysInventory
, ftSysAlarm
, ftSysSSN
, ftSysRpcProv
, ftSysEService
, ftSysRAS
, ftSysMad
#Change these values to suit your needs:
$SvcName = 'Spooler'
$SvrName = 'localhost'
#Initialize variables:
[string]$WaitForIt = ""
[string]$Verb = ""
[string]$Result = "FAILED"
$svc = (Get-Service -ComputerName $SvrName -Name $SvcName)
Write-Host "$SvcName on $SvrName is $($svc.status)"
switch ($svc.Status) {
'Stopped' {
Write-Host "Starting $SvcName..."
$Verb = "start"
$WaitForIt = 'Running'
$svc.Start()}
'Running' {
Write-Host "Stopping $SvcName..."
$Verb = "stop"
$WaitForIt = 'Stopped'
$svc.Stop()}
Default {
Write-Host "$SvcName is $($svc.Status). Taking no action."
}
}
if ($WaitForIt -ne "") {
try { # For some reason, we cannot use -ErrorAction after the next statement:
$svc.WaitForStatus($WaitForIt, '00:02:00')
} catch {
Write-Host "After waiting for 2 minutes, $SvcName failed to $Verb."
}
$svc = (Get-Service -ComputerName $SvrName -Name $SvcName)
if ($svc.status -eq $WaitForIt) {$Result = 'SUCCESS'}
Write-Host "$Result`: $SvcName on $SvrName is $($svc.Status)"
}