【问题标题】:Restarting a service and check for status on a remote server via PowerShell通过 PowerShell 重新启动服务并检查远程服务器上的状态
【发布时间】: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


【解决方案1】:
  • 您可以选择使用.stop() 方法或
  • 将服务通过管道传送到Start-Service cmdlet。

未经测试

$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 $Server -name $service).Stop()
        (Get-Service -computername $Server -name $service).Start()    
         Write-Host (Get-Service -ComputerName $Server -Name $service).Status
    } 
}

$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 $Server -Name $service | Stop-Service
        Get-Service -ComputerName $Server -Name $service | Start-Service    
         Write-Host (Get-Service -ComputerName $Server -Name $service).Status
    } 
}

【讨论】:

  • 我收到一条错误消息,指出“找不到接受参数 'C:Scripts\Services\Services.txt' 的位置参数。在第 1 行字符 23。+ 类别信息:InvalidArguement (:) [Get -Content],ParemeterBidning 异常 +FullyQualifiedErrorID : PositionParemeterNotFound.Mircosoft.PowerShell.Commands.GetContentCommand。不确定是什么原因造成的。
  • 不知何故结尾的双引号丢失了,改变了。
猜你喜欢
  • 2021-06-10
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2014-06-18
  • 2015-10-14
  • 2018-10-09
  • 1970-01-01
相关资源
最近更新 更多