none
管理者権限が必要なPowershell をタスクスケジューラで動かす場合

    質問

  • Cluster 関連のPowershell コマンドをタスクスケジューラで実行しようとしましたが

    管理者権限が無いと言われ実行できません。

    Cluster操作権限を持つドメインユーザーでログインした場合でも以下のエラーが出ます。

    =============================================================

    PS C:\Users\USERNAME> get-cluster
    Get-Cluster : このクラスターに対する管理者特権がありません。ネットワーク管理者にアクセス許可を要求してください。
        アクセスが拒否されました。
    発生場所 行:1 文字:12
    + get-cluster <<<<
        + CategoryInfo          : NotSpecified: (:) [Get-Cluster]、ClusterCmdletException
        + FullyQualifiedErrorId : Get-Cluster,Microsoft.FailoverClusters.PowerShell.GetClusterCommand

    =============================================================

    この場合でもPowershellプロンプトを右クリックして「管理者として実行」とすると実行できます。

    なぜCluster操作権限のあるユーザーで実行してもエラーになるのでしょうか。

    また、この場合タスクスケジューラで実行することは果たして可能なのでしょうか。

    runas を試しましたが状況は変わりませんでした。

     

    ご存知の方ご教授くださいませ。

    杉山

    2011年7月1日 15:49

回答

  • UACが有効になっていると、プログラムを実行するのに必要なさまざまな特権のうち、システム全体に影響を及ぼすものがフィルタされます。

    このフィルタを解除するのが「昇格」です。

    ここでフィルタされるのはAdministratorsグループに与えられた特権に限らず、ほかのビルトイングループに与えられた特権でも、システムに影響するものはフィルタされます。

    つまりGet-Clusterでクラスタの情報を取得する権限が通常時はフィルタされているので、昇格が必要なのではないでしょうか。

    (ここまでは私の推測です。間違いがあればフォロー願います)

    タスクスケジューラで管理者権限を与えて実行するには、「セキュリティオプション」で「最上位の特権で実行する」のチェックを入れます。

    2011年7月1日 17:09
    モデレータ

すべての返信

  • UACが有効になっていると、プログラムを実行するのに必要なさまざまな特権のうち、システム全体に影響を及ぼすものがフィルタされます。

    このフィルタを解除するのが「昇格」です。

    ここでフィルタされるのはAdministratorsグループに与えられた特権に限らず、ほかのビルトイングループに与えられた特権でも、システムに影響するものはフィルタされます。

    つまりGet-Clusterでクラスタの情報を取得する権限が通常時はフィルタされているので、昇格が必要なのではないでしょうか。

    (ここまでは私の推測です。間違いがあればフォロー願います)

    タスクスケジューラで管理者権限を与えて実行するには、「セキュリティオプション」で「最上位の特権で実行する」のチェックを入れます。

    2011年7月1日 17:09
    モデレータ
  • UACが有効になっていると、プログラムを実行するのに必要なさまざまな特権のうち、システム全体に影響を及ぼすものがフィルタされます。
    このフィルタを解除するのが「昇格」です。

    ここでフィルタされるのはAdministratorsグループに与えられた特権に限らず、ほかのビルトイングループに与えられた特権でも、システムに影響するものはフィルタされます。
    つまりGet-Clusterでクラスタの情報を取得する権限が通常時はフィルタされているので、昇格が必要なのではないでしょうか。(ここまでは私の推測です。間違いがあればフォロー願います)

    お世話になっております、ちゅきと申します。
    フォローということですので、一応^^;

    UACが働いているときは、どちらかというとプログラムを実行するのにフィルターされるのではなく、ログオン時に管理者を含めてすべてのユーザーがフィルター済みトークンしか割り当てられていない(Administratorアカウントは例外)との発想です。(むたぐちさんの説明で、動きに違いはないとは思うのですが^^;)
    で、ファイル名やプログラムのマニフェストに含まれる情報をもとに、フルトークンが必要なアプリケーションは昇格が求められます。

    ところで、FailoverClusterを組んでいない環境でGet-Clusterを実行すると、権限ではなく「クラスターサービスが実行されていません」とのエラーがでます。
    エラーの内容からも、Get-Cluster CLIではなくそれに応答する側でトークンのチェックをしているのでしょうね^^;

    【ご参考】お暇でしたら
    「ユーザー アカウント制御 (UAC: User Account Control) - Windows 7 対応アプリケーションの互換性」
    http://msdn.microsoft.com/ja-jp/windows/dd883236.aspx

    ところで、ご質問の内容は「タスクスケジューラで管理者権限を与えて実行するには、「セキュリティオプション」で「最上位の特権で実行する」のチェックを入れます。」がすべてともいます。蛇足失礼いたしました。

    2011年7月4日 7:47
  • 牟田口様、Chuki様

    はじめまして、そして回答いただきありがとうございました。

    下記実行したところ問題なく動作いたしました。
    以前から何のためにあるオプションなのかわかりませんでしたが、こういう用途に使うものだったのですね。
    タスクスケジューラで管理者権限を与えて実行するには、「セキュリティオプション」で「最上位の特権で実行する」のチェックを入れます。

    すばやい回答いただきありがとうございました!!

    すぎやま

    2011年7月13日 10:45