0

我正在尝试通过 PowerShell 管理我的 IIS 实例。

[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。

如何告诉我Microsoft.Web.Administration专注于真正的 IIS 而不是 IIS Express?

如果安装了 IIS Express,一切都会失败。如果没有安装 IIS Express,一切都很好。

帮助?

4

1 回答 1

0

C:\Windows\System32\inetsrv从修复它加载 Microsoft.Web.Administration 。远程调用 usingOpenRemote不起作用,所以我不得不使用Invoke-SqlCommand在远程机器上进行管理。

于 2020-03-17T13:26:29.740 回答