シナリオは次のとおりです。
- 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をリモートで管理したりできる場合は、お知らせください。