Powershell - ошибка при создании объекта ServerManager после обновлений Windows

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

Я читал, что эта ошибка обычно вызвана тем, что класс не установлен.

Сервер работает под управлением Windows 2008 R2 с IIS 7.5.


person Ryan French    schedule 01.04.2011    source источник
comment
Вы пытаетесь посмотреть, зарегистрирован ли COM-компонент CLSID {B15183DD-75F9-42DF-8E57-C8B57692F134} в вашем реестре и загружается ли ссылка на DLL. Вы обращаете внимание на то, чтобы загрузить свой скрипт с правильной оболочкой Powershell (32 бита против 64 бит).   -  person JPBlanc    schedule 01.04.2011


Ответы (2)


Убедитесь, что вы загружаете правильную побитовую версию PowerShell. Если вы используете 64-битную версию, вы получите описанное исключение.

Вам нужно использовать 32-битную (Windows PowerShell (x86)) версию PowerShell для использования Microsoft.Web.Administration.

person Kev    schedule 01.04.2011
comment
Спасибо. Я не уверен, почему эта проблема возникла только после применения обновлений. Я запускал скрипт на сервере в течение нескольких месяцев без каких-либо проблем, хотя я предполагаю, что некоторые настройки, которые я сделал, когда впервые создавал скрипт, были удалены во время обновлений, и я забыл об этом. - person Ryan French; 04.04.2011

В дополнение к ответу я обнаружил проблемы с использованием консоли x86 powershell и, в конце концов, обнаружил, что использование

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

скорее, чем

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

Он работал нормально.

person Ryan French    schedule 03.04.2011