Posted at

Windows でのサービスの制御

More than 3 years have passed since last update.


Windows のサービスの制御


PowerShell を使う場合



  • 指定のサービスを列挙

    PS> gsv | ? { $_.Name -match "sqlserver" }

    Status Name DisplayName
    ------ ---- -----------
    Running MSSQLSERVER SQL Server (MSSQLSERVER)
    Running MSSQLServerOLAP... SQL Server Analysis Services (MSSQL...
    Stopped SQLSERVERAGENT SQL Server エージェント (MSSQLSERVER)




  • 指定かつ動作しているサービスの列挙

    PS> gsv | ? { $_.Name -match "sql" -and $_.Status -match "Run" }

    Status Name DisplayName
    ------ ---- -----------
    Running MSSQLFDLauncher SQL Full-text Filter Daemon Launche...
    Running MSSQLSERVER SQL Server (MSSQLSERVER)
    Running MSSQLServerOLAP... SQL Server Analysis Services (MSSQL...
    Running SQLWriter SQL Server VSS Writer

    以下でもよい

    PS> gsv | ? Name -match "sql" | ? Status -match "Run"
    



  • 動作しているサービスを停止させる

    PS> gsv | ? Name -match "mssql" | Stop-Service
    

    開始させる場合は、 Stop-Service の代わりに Start-Service を使う。


    :pencil: ただし、後述の「スタートアップの種類」を考慮しないため、設定によっては OS起動時にサービスが起動される場合がある。





  • スタートアップで自動起動させなくする (「手動」に)。

    PS> gsv | ? Name -match "mssql" | Set-Service -StartupType Manual
    

    「自動」に戻す場合: -StartupType Automatic と指定する。


    :pencil: 【メモ】 「サービス停止」と同時に「自動起動させない」ために、 -Status Stopped を使いたくなるが、以下のように依存関係がある場合には停止できない模様。 前述の Stop-Service を使うのが確実なようだ。

    PS> gsv | ? Name -match "mssql" | Set-Service -Status Stopped -StartupType Manual
    
    Set-Service : サービス 'SQL Server (MSSQLSERVER) (MSSQLSERVER)' には依存サービスがあるため、停止できません。
    発生場所 :1 文字:31
    + ... Name -match "mssql" | Set-Service -Status Stopped -StartupType Manual
    + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
    + CategoryInfo : InvalidOperation: (System.ServiceProcess.ServiceController:ServiceController) [Set-Servi
    ce]ServiceCommandException
    + FullyQualifiedErrorId : ServiceHasDependentServicesNoForce,Microsoft.PowerShell.Commands.SetServiceCommand




参考