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
答案 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")
运行得很好。