Я пытаюсь управлять своим экземпляром 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 не установлен, все в порядке.
Справка?