2012-06-14 10 views
14

Jestem całkiem nowy w firmie powershell i staram się zautomatyzować usuwanie wcześniejszej wersji witryny i dodawanie jej nowszej wersji jako części szablonu budowania TFS 2010 (Windows Workflow 4.0). Czy jest możliwe sprawdzenie, czy strona internetowa lub puli aplikacji internetowej istnieje w IIS7 z powershell? Próbowałem uruchomić następujące polecenie:Jak ustalić, czy witryna jest zainstalowana w IIS7 z Powershell?

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

Wyniki zawierają listę wszystkich witryn zainstalowanych w tym polu, a nie tylko domyślną stronę internetową.

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 

Jeśli spróbuję uruchomić polecenie bez parametru "-Name", wynik jest dokładnie taki sam.

Odpowiedz

14

Po prostu zauważyłem to samo zachowanie. Wygląda na to, że nie działa zgodnie z oczekiwaniami. Jednak można toczyć własną rękę:

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

że właśnie rury lista zwrócona przez dostać-stronie do gdzie-object cmdlet i po prostu wrócić, że pojedynczy obiekt.

Jeśli jesteś nowy w PowerShell, nie mogę polecić wystarczająco Master PowerShell.

+0

dobrą odpowiedź, +, +1 dla linku do opanowania PowerShell. To wygląda świetnie. Dzięki! – shellter

+0

Inna odpowiedź nie zadziałała, ale tak się stało. Właśnie uruchomiłem 'if ($ (Get-Website | Where-Object {$ _. Name -eq 'sitename'}) -eq $ null)' i działało. –

38

Można użyć Test-Path dla obu sprawdzanie witryn internetowych basenów & Zastosowanie:

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." } 
+0

Dobra wskazówka! Dzięki! –

+0

Naprawdę chciałbym móc zaznaczyć dwie odpowiedzi, ponieważ było to również pomocne, ponieważ dało mi to inną część odpowiedzi, której szukałem. –

+0

Gdzie jest ta ścieżka IIS: \ Sites? –