1

WMIを使用してVistaボックスにWebサイトを作成する単純なPowerShellスクリプトがあります。はい、PowerShellにはIIS 7を操作するためのIISプロバイダーがあることは知っていますが、このスクリプトはIIS 6.0もサポートしている必要があるため、それは除外されます。

とにかく、スクリプトは問題なく機能していましたが、突然(つまり、文字通り、スクリプトにコード変更を加えなかったため)、CreateNewSiteメソッドを呼び出すたびに2番目の壊れたサイトが作成され始めました。以下はスクリプトです。誰かアイデアはありますか?

$path = "C:\My Path\WebSite"
$site = "TestSite"
$hostHeader = "demo.blah.com"

$service = Get-WmiObject -namespace "root\MicrosoftIISv2" -class "IIsWebService"

$bindingClass = [wmiclass]'root\MicrosoftIISv2:ServerBinding'
$bindings = $bindingClass.CreateInstance()
$bindings.IP = ""
$bindings.Port = "80"
$bindings.Hostname = $hostHeader

$result = $service.CreateNewSite($site, $bindings, $path)

上記のスクリプト、「TestSite」という名前のサイトを作成するだけでしたが、現在は「SITE_1786339847」という名前のサイトも作成しています(番号は変わりますが、常に同じです)。一度に1行ずつ実行するスクリプトをステップ実行しましたが、CreateNewSiteメソッドが呼び出されるまでどちらのサイトも作成されません。WMIはバグが多いだけですか?

4

1 に答える 1

1

おっと、自分の質問に答えました。生の IIS 7.0 構成ファイルを確認したところ、ID 1786339847 のサイトに関連付けられた孤立した仮想ディレクトリが見つかりました。その仮想ディレクトリを構成ファイルから削除すると、スクリプトは再び正しく機能し始めました。

誰かが同様の問題に遭遇した場合は、IIS マネージャーから問題のあるサイトのサイト ID を取得してから削除し、C:\Windows\system32\inetsrv\config\applicationHost.config を開きます。その ID のファイルをスキャンし、その ID への孤立した参照を探します。 最初にバックアップがあることを確認してください。

于 2008-12-11T20:47:03.087 に答える