【问题标题】:Script to check status and start service if required用于检查状态并在需要时启动服务的脚本
【发布时间】:2015-09-12 14:32:02
【问题描述】:

在编写 PowerShell 脚本以检查服务状态并在服务停止时启动时需要帮助。服务包括:NomadBranch、BITS、Ccmexec。

【问题讨论】:

    标签: powershell windows-services windows-server-2008 configurationmanager sccm


    【解决方案1】:

    SO 不是人们为您编写代码的地方,也不是教程的替代品(或查找教程的地方)。但是,由于您的问题很简单,我还是会回答。不过,不要指望这种情况会经常发生。

    使用*-Service cmdlet 管理服务。 Get-Service -Name 'foo' 获取名为“foo”的服务的属性。 Start-Service -Name 'foo' 启动该服务,Stop-Service -Name 'foo' 停止它。

    您可以通过过滤Get-Service 的输出来查找状态为Stopped 的服务,并通过将过滤后的结果传送到Start-Service 来启动停止的服务:

    $services = 'NomadBranch', 'BITS', 'Ccmexec'
    
    Get-Service | Where-Object {
        $services -contains $_.Name -and $_.Status -eq 'Stopped'
    } | Start-Service
    

    使用Get-Command cmdlet 列出特定名词(此处为“服务”)的 cmdlet:

    Get-Command -Noun 'Service'
    

    并使用 Get-Help cmdlet 获取有关特定 cmdlet 的更多信息,例如:

    Get-Help Get-Service -Full
    

    【讨论】:

      【解决方案2】:

      下面是一个启动服务的函数

      Function Start-ServicesNotRunning(){ 
          param 
          ( 
            [string[]]$ServerNames =$(throw "Parameter missing: -ServerNames ServerName1,ServerName2") #get multiple services 
          ) 
          Write-Host -ForegroundColor Yellow "Get Services State..." 
          Get-Service -Name $ServerNames | Sort-Object Status,Displayname  |  
          ForEach-Object { 
              $Displayname = $_.Displayname 
              If($_.Status -eq "Running") 
              {  
                 Write-Host $Displayname $_.Status -ForegroundColor Green 
              } Else 
              { 
                 Write-Host $Displayname $_.Status $_.StartType -ForegroundColor Red 
                 Try 
                 { 
                     #server startup status is disabled. 
                     If($_.StartType -eq "Disabled") 
                     {    
                        Write-Host -ForegroundColor Yellow $Displayname "Startup Status To Manual..." 
                        Set-Service -Name $_.Name -StartupType Manual -ErrorAction Stop 
                     }  
                     #start it if not running 
                     Write-Host -ForegroundColor Yellow $Displayname "Starting..." 
      
                     Start-Service -InputObject $_ -PassThru -ErrorAction Stop 
                     $_.Refresh() 
                     Write-Host $Displayname $_.Status -ForegroundColor Green 
                 } 
                 Catch 
                 { 
                    Write-Host -ForegroundColor Red $Displayname $_.Exception.Message 
                 } 
              } 
          } 
      } 
      

      我从这个示例中挑选它,https://gallery.technet.microsoft.com/How-to-get-state-and-start-b54c3b9c 希望它可以提供帮助。

      【讨论】:

        猜你喜欢
        • 2017-03-03
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2020-07-26
        • 2013-12-14
        • 2019-01-13
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多