【发布时间】:2019-01-13 18:54:10
【问题描述】:
我是 PowerShell 新手。我想创建一个脚本来停止正在运行的服务,然后重新启动它并显示服务的状态,但在组合它们时遇到了麻烦。目前,我可以使用 Get service 来启动和停止服务,以及单独检查它的状态。有没有办法将它们组合成一个脚本。理想情况下,一个脚本将检查服务是打开还是关闭并执行 if/else 函数。 (例如如果服务关闭,让它保持关闭,如果它打开,如果关闭等)
$servers = Get-Content -Path "C:\Scripts\Servers.txt
$services = Get-COntent -Path "C:\Scripts\Services.txt
foreach($server in $servers){
foreach($service in $services){
(Get-Service -computername $Servers -name $service).Stop()
(Get-Service -computername $Servers -name $service).Start()
Write-Host (Get-Service -ComputerName S$Servers -Name $service).Status
}
}
【问题讨论】:
-
你应该格式化你的代码示例(包括前两个语句)
-
您的
ForEach缺少{scriptblock},请参阅Get-Help about_foreach或访问about_foreach -
另外,要重新启动服务,您应该先尝试
Stop(),然后再尝试Start() -
每个 ForEach 都需要一个 {scriptblck},将它们堆叠起来。并且您迭代服务器的变量是单个服务器。
-
@LotPings { Stop-Service $Server.Service -ComputerName $Server.ComputerName } 像这样?
标签: powershell service scripting powershell-remoting