C#を介したIIS7リモート管理
-
14-11-2019 - |
質問
Windows Server 2008 IIS7インスタンスを制御しようとしているMicrosoft.Web.Administration.dllとServerManagerクラスを調べています。
リモート管理を有効にし、IISリモート管理ツールを介して接続できますが、次のようにして使用できません。
ServerManager.OpenRemote(serverName);
.
このクラスは、IISリモート管理ツールがしているので、リモートIIS7サーバー上のユーザー名とパスワードを指定することはできません。
これはすべてNANTを使用して私たちのビルドプロセスを介して呼ばれています。
CIセットアップの一部としてリモートIIS7サーバをコントロールする方法は?
解決 3
最後にWCFサービスを書きました。これはリモートマシン上でサービスとして実行されます。サービスは管理者権限を持つローカルアカウントで実行され、そのマシン上のローカルIISインスタンスを変更できるようにします。
私のナントスクリプトから、WCFサービスと通信し、必要に応じてIIS設定を変更する一連のカスタムタスクを持っています。
これは内部開発環境です。
他のヒント
構成ファイルを変更する権限を持つドメインユーザー(Active Directoryユーザー)の下にアプリケーションを実行する必要があります。
Windows認証は残りを実行します。
ODEDが言うように、ServerManager
を使用してリモートサーバーへの接続を開くことができるようにする必要があります。
管理者RDPアクセスサーバーを持っていると仮定して、ビルドスクリプトにWinRMとRemote PowerShellを使用する方法があります(PowerShell 2.0で最もよく機能する)。
Windowsリモート管理コマンドラインツール(WinRM。 CMD)
ドメインにない2台のマシンのWinRMを素早く構成するには、
クライアント:
winrm quickconfig (just say yes) winrm set winrm/config/Client/Auth '@{Basic="true"}' :: Only do this next line if not using HTTPS winrm set winrm/config/Client '@{AllowUnencrypted="true"}' winrm set winrm/config/Client '@{TrustedHosts="hostname_or_ip"}'.サーバー:
winrm quickconfig (just say yes) winrm set winrm/config/Service/Auth '@{Basic="true"}' :: See: http://support.microsoft.com/kb/2019527 regarding https winrm quickconfig -transport:https :: Only do this if not using HTTPS AND you are happy about sending credentials :: in clear text. winrm set winrm/config/Service '@{AllowUnencrypted="true"}'.今警告がいくつかあります。 WinRMは、リスナーのポート5985および5986のためにWindowsファイアウォールの穴をパンチします(Windows 2003を実行している場合は、ポート80と443を使用します)。これはあなたの好みにならないかもしれません、そしてあなたはそれを保護する方法についてあなたのネットワーク管理者に最もよく話すでしょう。
WinRMが設定されたら、管理者グループのメンバーであるリモートサーバーに設定されているユーザーアカウントが必要です。完了したら、テストできます。ビルドサーバーの場合:
.# the following line will prompt for a username and password, enter the name of the account # you just configured on the IIS box $cred = Get-Credential # next test the connection Test-WSMan -ComputerName <server_name_or_ip> -Authentication default ` -Credential $cred
すべてが良い場合は、次の応答が表示されます。
wsmid : http://schemas.dmtf.org/wbem/wsman/identity/1/wsmanidentity.x sd ProtocolVersion : http://schemas.dmtf.org/wbem/wsman/1/wsman.xsd ProductVendor : Microsoft Corporation ProductVersion : OS: 6.1.7600 SP: 0.0 Stack: 2.0.次のことは、リモートPowerShellセッションに接続することです。
.Enter-PSSession <server_name_or_ip> -Authentication default -Credential $cred
これが成功した場合、リモートマシンにPowerShellプロンプトを持つ必要があります。
リモートPowerShellを使用すると、PowerShell用のWebアドミニストレーションプロバイダをロードし、あなたの心の内容にIISの多くの側面を操作できます。
Windows PowerShellのWeb管理(IIS)プロバイダ
リモートサーバーに接続するには、
PSCredential
オブジェクトを提供する必要があります。上記のようにあなたはこれを使ってこれを提供するでしょう:.$cred = Get-Credential
しかしこれは常にキーボードとの対話を要求してユーザー名とパスワードを提供します。明らかにこれは自動CIには良くありません。
上記のスクリプトは、次のブログエントリから供給されましたが、記事が暗くなる場合には、ここに保存することに重複していました。
とにかくリモートサーバーに接続すると、次のようなさらなるコマンドを発行できます。
.Import-Module WebAdministration CD IIS:\Sites
など。
上記のほとんどは注意を払って注意してください。この場合、WinRMポートをVPNのみに制限することを検討してください。