1

シナリオは次のとおりです。

  • Win2003ビルドサーバー(CCNET)
  • IIS7ターゲットデプロイメントサーバー

これを行うためのさまざまなMSBuildタスク(Sdc.Tasks、MSBuild Community、MSBuild Extension Pack)(VDirの作成、AppPoolプロパティの設定)は、次の理由の少なくとも1つ以上に適していません。

  • IIS7はサポートされていません。
  • ドメインのユーザー名/パスワードを渡して操作を実行することはできません。
  • Microsoft.Web.Management.dllはビルドサーバーでは使用できません。
  • 「アクセスが拒否されました」エラー。

IIS 6でVdirを作成するのに問題はありません-実際にはiisvdir.vbsにシェルアウトしていますが、上記のMSBuildタスクのいずれかを使用すると、操作の実行時にドメインのユーザー名/パスワード認証がサポートされないか、単にスローされるためです。基本的な「アクセスが拒否されました」メッセージ(IIS 6メタベースで適切なアクセス許可があるにもかかわらず)。

また、現在の認証コンテキストに正しいアクセス許可がある限り、特定のドメインuser / pwを指定しない場合、さまざまな方法がIIS 7で完全に機能することを覚えておいてください。ただし、明らかな理由から、すべてのCCNETビルドをそのコンテキストで実行します。

psexec.exeを使用してボックスでappcmd.exeをリモートで実行したこともあります。これは、現在のセキュリティコンテキストに適切な権限がある場合にも正常に機能しますが、psexecでユーザー名/パスワードを指定するとすぐに、「権限が不十分なため、構成ファイルを読み取れません。」指定されたユーザーはドメインアカウントであり、2008サーバーのローカルAdministratorsグループの一部です。

また、私は自分のRunAs MSBuildタスクをロールし、Execタスクから継承し、プログラムによる偽装を使用することになりました。次に、これを使用して、psexecでユーザー名とパスワードを指定せずにpsexecを呼び出しますが、psexecにシェルするときに偽装しますが、出口コード1を取得します-詳細はありません。

ご覧のとおり、私はほとんどすべてのオプションを使い果たしたので、私は考えています。

IIS7以外のボックスでの自動化されたプロセスから(特定の非ローカル管理者ユーザーを使用して)、他のことを考えたり、IIS7をリモートで管理したりできる場合は、お知らせください。

4

1 に答える 1

2

右。もう少しいじり回した後、Windows 2008ユーザーアカウント制御(UAC)が邪魔をしているように見えます。組み込みの管理者以外の管理者アカウントを使用している場合は、UACの管理者承認モードが開始されます。

明らかに、自動化されたスクリプト(非対話型モード)では、UACダイアログで[続行]をクリックするオプションがないため、アクセスが拒否されます。

唯一の方法は、グループポリシー(gpedit.msc)でローカルマシンのセキュリティオプションを編集し、[管理者を管理者承認モードで実行する]を[有効]から[無効]に設定することです。

再起動すれば大丈夫です。

特定の管理者アカウントで管理者承認モードにUAC例外を設定できれば、実際にはより適切で安全です。あなたが読んでいるなら、MS-それを機能リストに入れてください!

于 2009-11-04T11:01:44.517 に答える