Использование Microsoft.Web.Administration из Powershell - это подключение к моему экземпляру IIS Express вместо моего основного? - PullRequest
0 голосов
/ 28 января 2020

Я пытаюсь управлять своим экземпляром IIS через PowerShell.

[System.Reflection.Assembly]::LoadWithPartialName("Microsoft.Web.Administration") | Out-Null
            $Iis = [Microsoft.Web.Administration.ServerManager]::OpenRemote($WebServer)
            $IisApp = $Iis.sites[$SiteName].Applications["/$WebApplicationName"]
            if(-not $IisApp)
            {
                $IisApp = $Iis.sites[$SiteName].Applications.Add("/$WebApplicationName", $WebApplicationFolder)
            }

Это не удается, поскольку иногда он обнаруживает неправильный экземпляр IIS на целевой машине. Как мне сказать Microsoft.Web.Administration использовать реальный IIS, а не IIS Express?

Я также попытался извлечь последние Microsoft.Web.Administration через NuGet, и это не помогло. Я вытащил сборку в общую папку Nuget (c:\nuget\packages\) и вместо этого загружаю сборку оттуда

add-type -Path "C:\nuget\packages\Microsoft.Web.Administration\lib\netstandard1.5\Microsoft.Web.Administration.dll"

и подтвердил, что ServerManager поступает из правильной сборки и ничем не отличается.

Я удалил IIS Express с моей машины, и он работает на моей машине, но я не могу удалить IIS Express с каждой машины, на которую я sh нацелился.

Как мне сказать Microsoft.Web.Administration сосредоточиться на реальном IIS вместо IIS Express?

Если установлен IIS Express, все терпит неудачу. Если IIS Express не установлен, все в порядке.

Справка?

1 Ответ

0 голосов
/ 17 марта 2020

Загрузка Microsoft.Web.Administration из C:\Windows\System32\inetsrv исправила это. Удаленный вызов с использованием OpenRemote не работает, поэтому мне пришлось использовать Invoke-SqlCommand для администрирования на удаленном компьютере.

...