WMI/PowerShell Bug:为什么CreateSite突然创建*两个*站点?

问题描述:

我有一个简单的PowerShell脚本,它使用WMI在Vista盒子上创建一个网站。是的,我知道PowerShell有一个与IIS 7一起工作的IIS提供程序,但是此脚本还必须支持IIS 6.0,因此这些规则已经出来。WMI/PowerShell Bug:为什么CreateSite突然创建*两个*站点?

无论如何,脚本工作得很好,但突然间(我的意思是说,我对脚本进行了零代码更改),它开始为每次调用CreateNewSite方法创建第二个破损站点。以下是脚本。有人有主意吗?

$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) 

上述脚本只是创建了一个名为“测试网站”的网站,但现在它也创建了一个名为“SITE_1786339847”网站(数量的变化,但它总是相似)。我已经逐步执行了一次执行一行的脚本,并且在调用CreateNewSite方法之前都不创建站点。 WMI只是越野车吗?

哎呦,回答了我自己的问题。我检查了原始IIS 7.0配置文件,发现一个孤立的虚拟目录与ID为1786339847的站点关联。当我从配置文件中删除该虚拟目录时,该脚本再次正常工作。

如果有人遇到类似情况,请在删除它之前从IIS管理器中获取坏站点的站点ID,然后打开C:\ Windows \ system32 \ inetsrv \ config \ applicationHost.config。扫描该ID的文件并查找对其的任何孤立引用。 确保您先备份。