无法从 PowerShell 查询 IIS

Unable to query IIS from PowerShell

我正在尝试使用 PowerShell 访问和更改 IIS 中的网站设置,但我很早就遇到了拦截器。

当我使用下面的命令时,它returns只有空白属性,表明这台机器上的 IIS 上没有活动的网站:

New-Object Microsoft.Web.Administration.ServerManager

结果看起来像这样...

ApplicationDefaults      : 
ApplicationPoolDefaults  : 
ApplicationPools         : 
SiteDefaults             : 
Sites                    : 
VirtualDirectoryDefaults : 
WorkerProcesses          :

...并且没有返回任何错误,这让我认为命令本身正在运行,但由于某种原因,PowerShell 无法 "see" 网站。

当我检查 IIS 管理器时,我可以看到 "Sites" 文件夹中列出了两个网站。

不确定这是否有影响,但我为此使用了 Windows Server 2008 R2 计算机。

我想我已经解决了问题。

奇怪的是,这似乎是我加载程序集的方式造成的。它似乎没有正确/根本没有加载程序集(即使没有错误告诉我这一点):

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

但是,当我使用下面的命令加载程序集时,问题就消失了:

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

不幸的是,我还是 PowerShell 的新手,所以我不知道为什么这会造成差异。