2012-06-14 13 views
14

Sono abbastanza nuovo per PowerShell e sto cercando di automatizzare la rimozione di una versione precedente di un sito Web e l'aggiunta della versione più recente come parte di un modello di creazione TFS 2010 (Windows Workflow 4.0). È possibile vedere se un sito Web o un pool di app Web esiste in IIS7 con PowerShell? Ho provato a fare funzionare il seguente comando:Come determinare se un sito Web è installato in IIS7 con Powershell?

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

L'output elenca tutti installati sulla scatola, non solo il sito Web predefinito dei siti web.

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 

Se si tenta di eseguire il comando senza il parametro "-Name", il risultato è esattamente lo stesso.

risposta

14

Ho appena notato lo stesso comportamento. Sembra che non funzioni come previsto. Tuttavia, si può rotolare il proprio:

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

che solo tubi lista restituita da get-sito al dove-oggetto cmdlet e solo tornare quel singolo oggetto.

Se siete nuovi a PowerShell, non posso raccomandare abbastanza Master PowerShell.

+0

buona risposta, +, uno per il link al Maestro PowerShell. Sembra fantastico. Grazie! – shellter

+0

L'altra risposta non ha funzionato per me, ma così è stato. Ho appena eseguito 'if ($ (Get-Sito Web | Dove-Oggetto {$ _. Nome -eq 'sitename'}) -eq $ null)' e ha funzionato. –

38

È possibile utilizzare Test-Path per entrambi i siti web piscine & richiesta di verifica:

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

Un buon consiglio! Grazie! –

+0

Vorrei davvero poter contrassegnare due risposte, perché anche questo è stato utile perché mi ha dato un'altra parte della risposta che stavo cercando. –

+0

Dove si trova questo IIS: percorso \ Sites? –