4

同じマシンにいくつかの異なるサービスをインストールしています。それらを開始および停止するためのPowerShell2スクリプトを作成しています。

一部のサービスでは、Start-Service -displayname "the service"正常に起動するために使用できます。その他の場合、Start-Serviceコマンドレットを使用すると、「コンピューターでサービスを開始できません...」の行に沿ってエラーが発生します。

Start-Serviceコマンドレットを使用してエラーが発生した場合、sc start "the service"常に成功します。

逆もまた真です(ただしsc start、エラーは返されません。サービスがまったく開始されません)。

これらのコマンドに違いはありますか?使用すべき代替コマンドはありますか?最後に、コマンドレットからエラーを「キャッチ」して、すべてのベースをカバーするために両方のコマンドを含めることはできますか?

この問題は、サービスをアンインストールして再インストールした場合でも、繰り返し発生します。

ありがとう!

4

3 に答える 3

5

sc startとの違いはstart-serviceわかりませんが、wmiを使用して必要な処理を実行できます。

サービスを開始するには:

(get-wmiobject win32_service -filter "name='the service'").startService()

サービスを停止するには:

(get-wmiobject win32_service -filter "name='the service'").stopService()

サービスのステータスを確認するには、次を使用できます。

get-wmiobject win32_service -filter "name='the service'"

状態と開始モードが表示されます。これを自動化したい場合は、以下を使用できます。

サービスを停止するには:

if ((get-wmiobject win32_service -filter "name='the service'").state -eq "Running") {
    (get-wmiobject win32_service -filter "name='the service'").stopService()
} # Stops the service if it is running

サービスを開始するには:

if ((get-wmiobject win32_service -filter "name='the service'").state -eq "Stopped") {
    (get-wmiobject win32_service -filter "name='the service'").startService()
} # starts the service if it is stopped

ニーズに合わせて変更できると思います。

私がwmiを使用するのが好きな理由は、とを指定する機能-computernameです-credentials。これにより、リモートシステムにアクセスして、ドメイン以外のシステムがある場合に認証できるようになります。お役に立てば幸いです。すてきな一日を!

于 2012-09-09T08:51:40.330 に答える
3

PowerShellではscですSet-Content。で参照してください、それはあなたがで実行するhelp scときと同じではありません。sccmd.exe

あなたはおそらく、、、を見たいと思うStart-ServiceでしょRestart-ServiceStop-Service。必要なコマンドレットをGet-Command見つけるのに役立ちます。

PS C:\> Get-Command | findstr Service
Cmdlet   Get-Service           Microsoft.PowerShell.Management
Cmdlet   New-Service           Microsoft.PowerShell.Management
Cmdlet   New-WebServiceProxy   Microsoft.PowerShell.Management
Cmdlet   Restart-Service       Microsoft.PowerShell.Management
Cmdlet   Resume-Service        Microsoft.PowerShell.Management
Cmdlet   Set-Service           Microsoft.PowerShell.Management
Cmdlet   Start-Service         Microsoft.PowerShell.Management
Cmdlet   Stop-Service          Microsoft.PowerShell.Management
Cmdlet   Suspend-Service       Microsoft.PowerShell.Management
于 2014-10-17T20:24:32.810 に答える
1

sc startこれは、場合によっては機能しなかっ た理由に関連している可能性があります: http ://www.windowsitpro.com/article/powershell-faqs/q-do-normal-windows-commands-run-in-powershell

おそらく私はそれをこのように呼ぶ必要がありました: & "sc start 'the service'"

于 2012-09-09T20:02:50.010 に答える