代码之家  ›  专栏  ›  技术社区  ›  Precipitous

在wmi中,我可以使用join(或类似的东西)获取站点的iisWebServer对象吗?给定的服务器名称和部署位置

  •  2
  • Precipitous  · 技术社区  · 14 年前

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

    我们的技术是IIS ,wmi和通过c或powershell 2访问。我相信这会更容易 IIS 7 its managed API . 我们还没有。

    我能做的是:

    从获取IIS虚拟目录列表 IISWebVirtualDirSetting 对匹配的物理路径进行筛选(脱机)。

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

    从虚拟目录对象中,我可以得到一个名称(如w3svc/40565456/root)。有了这个名字,我可以找到其他的好东西,比如 IIS web server object .

    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'"

    1 回复  |  直到 14 年前
        1
  •  2
  •   Andy Schneider    14 年前

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

    "SELECT * FROM IISWebVirtualDirSetting WHERE Path='D:\\sites\\globaldominator'"