質問

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には良くありません。

あなたはパスワードをファイルに保存することができます。これを行うには、次の(またはパスワードが変更されるたびに)次のように実行されます。

read-host -assecurestring | convertfrom-securestring | out-file C:\securestring.txt
.

その後、Remote Serverに認証するためにPSCredentialを作成する必要がある場合:

$username = "deployment_user"
$password = cat C:\securestring.txt | convertto-securestring
$cred = new-object -typename System.Management.Automation.PSCredential `
         -argumentlist $username, $password

$serverNameOrIp = "192.168.1.1"
Enter-PSSession $serverNameOrIp -Authentication default -Credential $cred
.

上記のスクリプトは、次のブログエントリから供給されましたが、記事が暗くなる場合には、ここに保存することに重複していました。

href="http://geekswithblogs.net/lance/archive/2007/02/16/106518.aspx" real="nofollow">プロンプトなしでPSCredentialsを使用する - geekswithblogs

とにかくリモートサーバーに接続すると、次のようなさらなるコマンドを発行できます。

Import-Module WebAdministration
CD IIS:\Sites
.

など。

上記のほとんどは注意を払って注意してください。この場合、WinRMポートをVPNのみに制限することを検討してください。

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top