none
set-serviceコマンド(PowerShell)の「他のサービスに依存」について RRS feed

  • 質問

  • set-serviceコマンド(PowerShell)の「他のサービスに依存」について質問します。

    サービスの開始・停止をバッチで実行したいのですが、

    対象がリモートサーバのため、このコマンドを使おうとしました。

    しかし、「他のサービスに依存しているため、停止できません。」 のようになります。

    リモートサーバ側で Net Stop を実行すれば停止できます。

    他のサービスに依存していると「set-serviceコマンド」では開始・停止が不可能でしょうか?

    リモート側にNet Stopコマンドを送付しないとだめですかね?、

    2012年8月29日 8:19

回答

  • こんにちは、

    すでに牟田口さんからレスがついていますので解決されているかもしれませんが、少しだけ補足を。

    >リモート側にNet Stopコマンドを送付しないとだめですかね?、

    とありますので、リモートへのコマンド送信は既に何かしらの当ては御有りかと思いますが、「net step」ではY/Nの応答が必要になりそうな気がします。(簡単に応答できましたかね・・・)
    ということで、牟田口さんの回答にあった「Stop-Service」を使うのが簡単と思うのですが、こちらは「ComputerName」パラメータが無いので「Invoke-Command」で投げてあげるのが良いのではないでしょうか。

    Invoke-Command -ComputerName XX-Server -ScriptBlock {stop-service dhcp -force}

    もし、Invoke-Commandを使う環境がまだ無い場合は以下のヘルプあたりが参考になりそうです。

    about_Remote_Requirements

    2012年8月29日 9:54
  •  minminnanaさん補足ありがとうございます。

    たしかに、Stop-Serviceには-ComputerNameパラメータがないですね。

    PSリモート構成がすでにある、もしくは構成可能であるなら、 minminnanaさんのおっしゃる通り、Invoke-Commandと併用してやるのも手だと思います。

    ただ、Get-Serviceコマンドレットを使って、

    (Get-Service  サービス名 -ComputerName コンピューター名).Stop()

    としてメソッド呼び出ししてやることでも代替できるかと思います。Stopメソッドは依存関係があってもサービス停止します。

    あるいはStop-Serviceコマンドレットに-InputObjectパラメータが定義されていることを利用して、

    Get-Service サービス名 -ComputerName コンピュータ名|Stop-Service -Force

    と書くこともできます。

    2012年8月29日 11:05
    モデレータ

すべての返信

  • 他のサービスが依存していても強制的にサービスを停止するのであれば、

    Stop-Service  サービス名 -Force

    を実行すればOKです。

    2012年8月29日 8:37
    モデレータ
  • こんにちは、

    すでに牟田口さんからレスがついていますので解決されているかもしれませんが、少しだけ補足を。

    >リモート側にNet Stopコマンドを送付しないとだめですかね?、

    とありますので、リモートへのコマンド送信は既に何かしらの当ては御有りかと思いますが、「net step」ではY/Nの応答が必要になりそうな気がします。(簡単に応答できましたかね・・・)
    ということで、牟田口さんの回答にあった「Stop-Service」を使うのが簡単と思うのですが、こちらは「ComputerName」パラメータが無いので「Invoke-Command」で投げてあげるのが良いのではないでしょうか。

    Invoke-Command -ComputerName XX-Server -ScriptBlock {stop-service dhcp -force}

    もし、Invoke-Commandを使う環境がまだ無い場合は以下のヘルプあたりが参考になりそうです。

    about_Remote_Requirements

    2012年8月29日 9:54
  •  minminnanaさん補足ありがとうございます。

    たしかに、Stop-Serviceには-ComputerNameパラメータがないですね。

    PSリモート構成がすでにある、もしくは構成可能であるなら、 minminnanaさんのおっしゃる通り、Invoke-Commandと併用してやるのも手だと思います。

    ただ、Get-Serviceコマンドレットを使って、

    (Get-Service  サービス名 -ComputerName コンピューター名).Stop()

    としてメソッド呼び出ししてやることでも代替できるかと思います。Stopメソッドは依存関係があってもサービス停止します。

    あるいはStop-Serviceコマンドレットに-InputObjectパラメータが定義されていることを利用して、

    Get-Service サービス名 -ComputerName コンピュータ名|Stop-Service -Force

    と書くこともできます。

    2012年8月29日 11:05
    モデレータ
  • 返信ありがとうございます。

    私もInvoke-Commandで試してみるつもりでした。後日確認します。

    2012年8月29日 15:11
  • 返信ありがとうごじます。

    -ComputerNameパラメータがないなーと思っていたのですが、

    Stopメソッドや、-InputObjectパラメータを利用する方法というのもあるのですね。勉強になります。

    2012年8月29日 15:13