サービスを再起動するための共通スクリプトを作成する必要があります。
net stop <service>
net start <service>
問題は、サービスの名前がわからないことです。たとえば、「printer spooler
"は" spooler
"という名前です。
どのようにしてサービスの名前を見つけることができますか?
services.msc
と入力します。見るべき:
sc
ではなく net
を使用してください。これはWindows XPで最初に導入されました(IIRC)。
sc GetKeyName "printer spooler"
次のようなものを印刷する必要があります:
[SC] GetServiceKeyName SUCCESS Name = Spooler
そして、その名前をsc start
やsc stop
などの他のコマンドで使用できます。
これは、レジストリHKLM\System\CurrentControlSet\Servicesから取得します。各サブキーは、サービスまたはドライバーの名前です。探しているものを検索してください。
PowerShellにアクセスできるシステムの場合。これを行うためのより良い方法は、コマンドレット「Get-Service」を使用することです。次のように入力して呼び出すことができます。
Get-Service -DisplayName "Print Spooler"
どちらが返されます:
Status Name DisplayName
------ ---- -----------
Running Spooler Print Spooler
[名前]でサービスの名前を取得します。 DisplayNameパラメータは、必要に応じてワイルドカードを使用できます。表示名を取得したい場合は、次のように記述できます。
Get-Service -Name spooler
上記と同じテーブルを返します。次のように書くこともできます:
(Get-Service -DisplayName "Print Spooler").Name
名前だけを取得する(テーブルを避けます)。
これは、サービスが実行されているかどうかを確認する場合にのみ必要です。 PowerShellには、コマンド名Start-ServiceおよびStop-Serviceがあり、パラメーター-Nameおよび-DisplayNameを取得できるため、次のように記述できます。
Start-Service -DisplayName "Print Spooler"
Stop-Service -DisplayName "Print Spooler"
サービスを開始および停止します。
この場合、私はPowerShell 2.0を使用したので、XPを含む上記のすべてのWindowsで動作すると思います。