Как определить, установлен ли веб-сайт в IIS7 с помощью Powershell? - программирование
Подтвердить что ты не робот

Как определить, установлен ли веб-сайт в IIS7 с помощью Powershell?

Я новичок в powershell, и я пытаюсь автоматизировать удаление предыдущей версии веб-сайта и добавление новой версии как часть шаблона сборки TFS 2010 (Windows Workflow 4.0). Можно ли узнать, существует ли в IIS7 веб-сайт или пул веб-приложений с помощью powershell? Я попытался выполнить следующую команду:

import-module WebAdministration
Get-Website -Name "Default Web Site"

В выводе перечислены все веб-сайты, установленные на этом поле, а не только веб-сайт по умолчанию.

Name             ID   State      Physical Path                  Bindings
-------------------------------------------------------------------------
Default Web Site 1    Started    %SystemDrive%\inetpub\wwwroot  http *:80:
                                                                net.tcp 808:*
                                                                net.pipe *
                                                                net.msmq localhost
                                                                msmq.formatname localhost 
MyWebsite1       2    Started    C:\inetpub\MyWebsite1          http *:80:mywebsite1.com
MyWebsite2       3    Started    C:\inetpub\MyWebsite2          http *:80:mywebsite2.com

Если я попытаюсь запустить команду без параметра "-Name", результат будет таким же.

4b9b3361

Ответ 1

Я просто заметил такое же поведение. Похоже, что он работает не так, как ожидалось. Тем не менее, вы можете использовать свой собственный:

get-website | where-object { $_.name -eq 'MyWebsite1' }

Это просто передает список, возвращенный get-website командлету где-объект, и просто возвращает этот единственный объект.

Если ваш новый для PowerShell, я не могу рекомендовать Master PowerShell достаточно.

Ответ 2

Вы можете использовать Test-Path для проверки веб-сайтов и пулов приложений:

Import-Module webadministration
$alias = "MyWebSite1"
$IISPath = "IIS:\Sites\Default Web Site\$alias"

if (Test-Path $IISPath) { Write-Host "$alias exists." }

$IISPath = "IIS:\AppPools"
cd $IISPath
if (Test-Path ".\MyAppPool") { Write-Host "MyAppPool exists." }