PowerShellを使用してWindowsサービスを管理する方法は?
Windowsサービスは、services.mscスナップインまたはsc.exeコマンドラインツールからだけでなく、PowerShellを使用して管理することもできます。この記事では、PowerShellを使用してWindowsサービスを管理するさまざまなシナリオについて検討します。
Windowsサービスの管理に使用されるPowerShellコマンドレット
Windowsサービスの状態を表示および管理するための8つの基本的なサービスコマンドレットがあります。サービス管理コマンドレットの完全なリストを取得するには、次のコマンドを実行します。
Get-Help \*-Service
- サービスを受ける —実行中または停止状態の両方でローカルまたはリモートコンピューター上のサービスを取得できます。
- 新サービス –サービスを作成します。コマンドレットは、レジストリとサービスデータベースにWindowsサービスの新しいエントリを作成します。
- 再起動-サービス –サービスを再起動します。コマンドレットは、Windowsサービスコントローラーを介して再起動メッセージを送信します。
- 再開-サービス –サービスを再開します。コマンドレットは、再開メッセージをWindowsサービスマネージャーに送信します;
- セットサービス —状態、説明、表示名、スタートアップモードなど、ローカルサービスまたはリモートサービスの設定を変更します。このコマンドレットを使用して、サービスを開始、停止、または一時停止することもできます。
- サービスの開始 –サービスを開始します;
- サービスの停止 –サービスを停止します(コマンドレットは停止メッセージをWindowsサービスマネージャーに送信します)。
- 一時停止-サービス –サービスを一時停止します。一時停止されたサービスは引き続き実行されていますが、(たとえば、Resume-Serviceコマンドレットを使用して)再開されるまで何も実行されません。
Get-Helpで特定のコマンドレットを使用する詳細な説明と例を入手できます:
Get-Help Start-Service
Get-Serviceを使用してWindowsサービスのステータスを確認する方法
Get-Service を使用して、ローカルまたはリモートのコンピューターでサービスとその状態(実行中/停止中)のリストを取得できます。 コマンドレット。 –名前 パラメータを使用すると、名前でサービスを選択できます。サービス名は、ワイルドカード文字 *
を使用して指定できます 。
正確なサービス名がわからない場合は、– DisplayNameを使用して表示された名前で見つけることができます。 パラメータ。値とワイルドカードのリストを使用できます。
Get-Serviceを使用する -ComputerNameを使用したコマンドレット リモートコンピュータのサービスステータスを取得するためのパラメータ。複数のリモートコンピューターの名前をコンマで区切って指定することにより、一度に複数のリモートコンピューターのサービスステータスを照会できます。たとえば、以下に示すコマンドは、リモートコンピューターny-prnt1およびny-prnt2のスプーラーサービスステータスを取得します。
Get-Service spooler –ComputerName ny-prnt1,ny-prnt2
Status Name DisplayName ------ ---- ----------- Running spooler Print Spooler Stopped spooler Print Spooler
サービスのすべてのプロパティを表示するには、 Select-Objectを使用します コマンドレット:
Get-Service spooler | Select-Object *
Select-Objectコマンドレットを使用すると、サービスの特定のプロパティを取得できます。たとえば、スプーラーサービスの名前、ステータス、および使用可能なオプションを表示したい場合:
Get-Service Spooler | Select DisplayName,Status,ServiceName,Can*
を選択します
サービスを受ける コマンドレットには、サービスの依存関係を表示できる2つのパラメーターがあります。
- -DependentServices 特定のサービスに依存するサービスを表示できます
- -必須サービス 特定のサービスが依存するサービスを表示します
次のコマンドは、スプーラーサービスを開始するために必要なサービスを表示します。
Get-Service –Name Spooler -RequiredServices
次のコマンドは、スプーラーに依存するサービスを示しています。
Get-Service –Name Spooler -DependentServices
特定の状態またはパラメータを持つサービスを検索する場合は、 Where-Objectを使用します コマンドレット。たとえば、実行中のサービスのリストを取得しましょう:
Get-Service | Where-Object {$_.status -eq 'running'}
手動起動タイプでサービスを表示するには、次のコマンドを実行します。
Get-Service | Where-Object {$_.starttype -eq 'Manual'}
次のPowerShellスクリプトを使用して、特定のWindowsサービスが現在のコンピューターに存在するかどうかを確認します。
if (Get-Service "ServiceTest" -ErrorAction SilentlyContinue)
{
Write-host "ServiceTest exists"
}
PowerShellを使用してサービスを停止、開始、または再起動する方法
Stop-Serviceを使用してサービスを停止できます コマンドレット。スプーラーを停止するには、次のコマンドを実行します。
Stop-Service -Name spooler
Stop-Serviceコマンドレットは、実行後に何も表示しません。結果を確認するには、 -PassThruを使用します パラメータ。
すべてのサービスを停止できるわけではありませんのでご注意ください。依存するサービスがある場合は、エラーが表示されます:
Cannot stop service because it has dependent services. It can only be stopped if force flag set.
サービスを強制的に停止するには、 –Forceを使用します パラメータ。依存するすべてのサービスも停止することを覚えておく必要があります:
Stop-Service samss –Force -Passthru
次のコマンドは、指定されたサービス(ビット、スプーラー)が「実行中」の状態の場合、それらを停止します。
get-service bits,spooler | where {$_.status -eq 'running'} | stop-service –passthru
サービスが「停止」状態でハングアップし、強制的に強制終了しなければならない場合があります。
サービス開始 コマンドレットは停止したサービスを開始します:
Start-Service -Name spooler -PassThru
依存するサービスのいずれかが停止すると、サービスは開始されません。それらを見つけて開始するには、次のPowerShellワンライナーを使用します。
get-service samss | Foreach { start-service $_.name -passthru; start-service $_.DependentServices -passthru}
一時停止-サービス コマンドレットは、サービスがこの状態をサポートしている場合、サービスを一時停止できます。サービスを一時停止できるかどうかを確認するには、 Get-Serviceを使用してください CanPauseAndContinueを使用したコマンドレット プロパティ。
Get-Service samss | Format-List name, canpauseandcontinue
一時停止される可能性のあるすべてのサービスのリストを表示するには、次のコマンドを実行します。
Get-Service | Where-Object {$_.canpauseandcontinue -eq "True"}
SQLBrowserサービスを一時停止しましょう:
Suspend-Service -Name SQLBrowser
一時停止中のサービスを再開するには、再開サービスを使用します コマンドレット:
Resume-Service -Name SQLBrowser
次のコマンドは、中断されているすべてのサービスを再開します。
get-service | where-object {$_.Status -eq "Paused"} | resume-service
再起動サービス コマンドレットはサービスを再開します:
Restart-Service -Name spooler
このコマンドは、コンピューター上で停止しているすべてのネットワークサービスを開始します:
get-service net* | where-object {$_.Status -eq "Stopped"} | restart-service
これらのコマンドには– ComputerNameがありません パラメータですが、Invoke-Commandコマンドレットまたはパイプを使用してリモートコンピュータで実行できます。
たとえば、リモートコンピュータny-prnt1で印刷スプーラを再起動するには、次のコマンドを実行します。
Get-Service Spooler -ComputerName ny-prnt1 | Start-Service
Set-Serviceを使用したサービス設定の変更
セットサービス コマンドレットを使用すると、ローカルコンピューターまたはリモートコンピューター上のサービスのパラメーターまたは設定を変更できます。サービスの状態はプロパティであるため、このコマンドレットを使用して、サービスを開始、停止、または一時停止できます。 セットサービス -StartupTypeがあります サービスの起動タイプを変更できるパラメータ。
スプーラーの起動タイプを自動に変更しましょう:
Set-Service spooler –startuptype automatic –passthru
手動起動タイプを設定できます:
Set-Service spooler –startuptype manual –passthru
PowerShellを使用してWindowsサービスを作成または削除する方法
新サービス –は、Windowsで新しいサービスを作成するためのコマンドレットです。新しいサービスの名前と実行可能ファイルを指定します(PowerShellスクリプトをWindowsサービスとして実行することもできます)。
TestSvcという名前の新しいサービスを作成しましょう:
new-service -name TestSvc -binaryPathName "C:\WINDOWS\System32\svchost.exe -k netsvcs"
Get-WmiObjectコマンドレットを使用して、スタートアップの種類とサービスの説明に関する情報を取得します。
get-wmiobject win32_service -filter "name='testservice'"
次のコマンドを使用して、新しいサービスの設定を変更できます。
Set-Service -Name TestSvc -Description ‘My Service’ -StartupType Manual
サービスを削除するには、次のコマンドを実行します:
(Get-WmiObject win32_service -Filter ″name=′TestSvc′″).delete()
Windowsサービスを実行するユーザーアカウントを変更する
PowerShellを使用して、サービスの開始に使用されるユーザーアカウントを変更できます。 TestSvcの開始に使用したアカウントの名前を取得します:
get-wmiobject win32_service -filter "name='TestSvc'" | Select name,startname
Windowsサービスのユーザー名とパスワードを変更するには、次のコマンドを実行します。
$svc = get-wmiobject win32_service -filter "name='TestSvc'"
$svc.GetMethodParameters("change")
Change()メソッドパラメータのリストが表示されます。 StartNameパラメータとStartPasswordパラメータがどこにあるかを数えます:それらは20 th にあります および21 st それぞれ場所。
$svc | Invoke-WmiMethod -Name Change –ArgumentList @ ($null,$null,$null,$null,$null,$null,$null, $null,$null,$null,$null,$null,$null,$null,$null,$null, $null,$null,$null,"Administrator","!123Pa$$w0rd")
または、gMSAアカウントの名前を入力することもできます(この場合、アカウントのパスワードは指定されていません)。
ご覧のとおり、PowerShellを使用するとWindowsサービスを簡単に管理できます。サービスの作成、停止、開始、再開、およびサービスのプロパティの変更を行うことができます。ほとんどのコマンドレットでは、リモートコンピューター上のサービスを管理できます。
-
Windows 11 で Powershell を更新する方法
Windows オペレーティング システムを最新のソフトウェアとセキュリティ更新プログラムで最新の状態に保つことは、コンピューターを維持するために不可欠です。これは、以前のバージョンの Windows よりも安全になるように設計された Windows 11 に特に当てはまります。ただし、セキュリティ上の問題がまったくないわけではありません。また、Windows OS を最新の状態に保つことは、Microsoft から利用可能になった新しい機能にアクセスできることも意味します。 私たちのブログの定期的な読者であれば、ソフトウェアの更新とパッチ適用の重要性をすでにご存知かもしれません。通常、これ
-
Windows タグでファイルとフォルダを管理する方法
システムから古いファイルを検索することは、炭庫で黒猫を探すようなものです。たとえば、昨年の南アメリカでの休暇の写真はどこに保存したのでしょうか。または 2018 年に書いたレポートの名前は? Windows 10 には強力な検索機能が組み込まれていますが、特に Cortana を使用すると、画像、音楽、PDF などのフィルターを使用してスマートに検索できます。最も無視されている機能の 1 つである Windows タグ 効率的な方法でファイルを検索して整理するのは理にかなっています。 Windows タグとは何か、なぜそれを使用する必要があるのか? タグは、Windows 10 の最も