Учитывая имя сервера и физический путь, я хотел бы иметь возможность выследить объект IISWebServer и ApplicationPool . URL сайта также является приемлемым входом.
Нашими технологиями являются IIS 6 , WMI и доступ через C # или Powershell 2. Я уверен, что это будет проще с IIS 7 и его управляемым API . У нас этого пока нет.
Вот что я могу сделать:
Получить список виртуальных каталогов IIS из IISWebVirtualDirSetting и фильтр (в автономном режиме) для соответствующего физического пути.
$theVirtualDir = gwmi -Namespace "root/MicrosoftIISv2" `
-ComputerName $servername -authentication PacketPrivacy `
-class "IISWebVirtualDirSetting" `
| where-object {$_.Path -like $deployLocation}
Из объекта виртуального каталога я могу получить имя (например, W3SVC / 40565456 / root). Учитывая это имя, я могу получить другие полезности, такие как объект веб-сервера IIS .
gwmi -Namespace "root/MicrosoftIISv2" `
-ComputerName $servername `
-authentication PacketPrivacy `
-Query "SELECT * FROM IisWebServer WHERE Name='W3SVC/40589473'"
Пересмотренные вопросы:
1) Это язык запросов. Можно ли присоединиться или выполнить подзапрос, чтобы 1 оператор запроса WMI получал веб-серверы на основе IISWebVirtualDir.Path? Как?
2) При решении 1 вам нужно будет объяснить, как запрашивать свойство Path. Почему это неверный запрос? "SELECT * FROM IISWebVirtualDirSetting WHERE Path='D:\sites\globaldominator'"