Powershell - Ошибка создания объекта ServerManager после обновления Windows - PullRequest
4 голосов
/ 01 апреля 2011

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

Ответы [ 2 ]

3 голосов
/ 01 апреля 2011

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

Для использования Microsoft.Web.Administration.

необходимо использовать 32-битную (Windows PowerShell (x86)) версию PowerShell.
2 голосов
/ 04 апреля 2011

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

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

вместо

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

Все прошло нормально.

...