Powershell - Windows更新后创建ServerManager对象时出错

时间:2011-04-01 03:30:41

标签: iis powershell windows-server-2008-r2

HI,

我有一个powershell部署脚本,可以将文件从svn下载到目录中,然后更新IIS设置以将站点指向新文件夹。它一直运行正常,直到对服务器进行了一些更新。现在,当我尝试运行脚本时,它会出错

[Void][Reflection.Assembly]::LoadWithPartialName("Microsoft.Web.Administration")
$serverManager = New-Object Microsoft.Web.Administration.ServerManager

错误是

New-Object : Exception calling ".ctor" with "0" argument(s): 
"Retrieving the COM class factory for component with CLSID {B15183DD-75F9-42DF-8E57-C8B57692F134} failed due to the following error: 80040154."
At C:\Users\administrator.LAYERXNETWORKS\AppData\Local\Temp\2\e72ec49f-353f-4dc0-877c-ef67f6b49bab.ps1:2 char:28
+ $serverManager = New-Object <<<<  Microsoft.Web.Administration.ServerManager
    + CategoryInfo          : InvalidOperation: (:) [New-Object], MethodInvocationException
    + FullyQualifiedErrorId :    ConstructorInvokedThrowException,Microsoft.PowerShell.Commands.NewObjectCommand

我已经读过这个错误通常是因为没有安装类。

服务器正在运行带有IIS 7.5的Windows 2008 R2

2 个答案:

答案 0 :(得分:3)

确保加载正确的PowerShell版本。如果您正在运行64位版本,那么您将获得所描述的异常。

您需要使用32位(Windows PowerShell(x86))版本的PowerShell来使用Microsoft.Web.Administration

答案 1 :(得分:2)

作为答案的额外内容,我发现使用x86 powershell控制台时出现问题,最后发现使用

[System.Reflection.Assembly]::LoadFrom( "C:\windows\system32\inetsrv\Microsoft.Web.Administration.dll" )

而不是

[Void][Reflection.Assembly]::LoadWithPartialName("Microsoft.Web.Administration")

运行得很好。