【问题标题】:Powershell - Error creating ServerManager object after windows updatesPowershell - Windows 更新后创建 ServerManager 对象时出错
【发布时间】:2011-04-01 03:30:40
【问题描述】:

嗨,

我有一个 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

【问题讨论】:

  • 您是否尝试查看 COM 组件 CLSID {B15183DD-75F9-42DF-8E57-C8B57692F134} 是否已在您的注册表中注册,并且它引用的 DLL 是否可加载。您是否注意使用正确的 Powershell(32 位与 64 位)加载脚本。

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


【解决方案1】:

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

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

【讨论】:

  • 谢谢。我不确定为什么仅在应用更新后才会出现此问题。我已经在服务器上运行脚本几个月了,没有任何问题,尽管我认为可能是我在第一次创建脚本时所做的一些设置在更新过程中被删除了,我已经忘记了。
【解决方案2】:

作为答案的补充,我发现使用 x86 powershell 控制台存在问题,最后发现使用

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

而不是

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

运行良好。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2018-11-23
    • 1970-01-01
    • 2013-02-22
    • 2014-08-09
    • 2021-01-10
    • 2020-02-12
    • 2015-01-20
    相关资源
    最近更新 更多