这个重启服务的代码要如何改才可以呢?


PowerShell交流中心这个重启服务的代码要如何改才可以呢?
0
yenange asked 6 年 ago
function printInfo(){ "restarted!" }  
get-service iisAdmin | where-object {$_.Status -eq "Stopped"} | restart-service | printInfo

本意是当  iisAdmin 这个服务为停止状态时, 则重启这个服务, 并输出已重启的信息, 但现在是每次都会重启, 哪怕这个服务不是停止状态。

 

要如何处理, 才能只在停止状态才重启服务呢?

1 Answers
1
Mooser Lee 管理员 answered 6 年 ago
$iisAdmin = Get-Service iisAdmin 
if(($iisAdmin -and ($iisAdmin.Status.ToString() -eq 'Stopped'))){
 $iisAdmin | Restart-Service
 Write-Host 'restarted!'
}
yenange replied 6 年 ago

谢谢您的热心帮助,可以解释一下我的代码为什么不行么?

yenange replied 6 年 ago

谢谢您的热心帮助,可以解释一下我的代码为什么不行么?

edwardkdh replied 6 年 ago

你应该尝试下get-service iisAdmin | where-object {$_.Status -eq “Stopped”} 这个字句能不能正确运行

edwardkdh replied 6 年 ago

get-service iisAdmin | where-object {$_.Status -eq “Stopped”} | restart-service
传递给最后一个管道的对象是servicecontroller
restart-service 可以直接操作 这个对象而不关心iisadmin服务的当前状态。
话说你条件判断就这么懒不写个 if?

Liu Liu replied 6 年 ago

正解