2

给定服务器名称和物理路径,我希望能够找到IISWebServer对象和ApplicationPool。网站 url 也是可接受的输入。

我们的技术是 IIS 6、WMI,并通过 C# 或 Powershell 2 进行访问。我确信使用IIS 7 它的托管 API会更容易。我们还没有。

这是我能做的:

从IISWebVirtualDirSetting获取 IIS 虚拟目录列表并筛选(离线)匹配的物理路径。

$theVirtualDir = gwmi -Namespace "root/MicrosoftIISv2" `
    -ComputerName $servername -authentication PacketPrivacy `
    -class "IISWebVirtualDirSetting" `
    | where-object {$_.Path -like $deployLocation}

从虚拟目录对象中,我可以获得一个名称(如 W3SVC/40565456/root)。给定这个名字,我可以得到其他好东西,例如IIS Web 服务器对象

gwmi -Namespace "root/MicrosoftIISv2" `
    -ComputerName $servername `
    -authentication PacketPrivacy `
    -Query "SELECT * FROM IisWebServer WHERE Name='W3SVC/40589473'" 

问题,重申:

1) 这是一种查询语言。我可以加入或子查询,以便 1 个 WMI 查询语句获取基于 IISWebVirtualDir.Path 的 Web 服务器吗?如何?

2)在解决1中,您必须解释如何查询Path属性。为什么这是一个无效的查询?"SELECT * FROM IISWebVirtualDirSetting WHERE Path='D:\sites\globaldominator'"

4

1 回答 1

2

在 WQL 中,没有 JOIN 运算符。您需要通过将两个查询保存到一个变量并进行一些后期处理来做到这一点。但是,对于第二个问题,您需要转义反斜杠。这将是

"SELECT * FROM IISWebVirtualDirSetting WHERE Path='D:\\sites\\globaldominator'"
于 2010-05-10T21:29:57.770 回答