2012-06-14 24 views
14

Tôi khá mới với quyền hạn và tôi đang cố gắng tự động xóa phiên bản trước của trang web và bổ sung phiên bản mới hơn như một phần của TFS 2010 Build Template (Windows Workflow 4.0). Có thể xem liệu một trang web hoặc hồ bơi ứng dụng web có tồn tại trong IIS7 với PowerShell không? Tôi đã thử chạy lệnh sau:Làm thế nào để xác định xem một trang web được cài đặt trong IIS7 với Powershell?

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

Đầu ra liệt kê tất cả các trang web được cài đặt trên hộp, không chỉ trang web mặc định.

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 

Nếu tôi cố gắng chạy lệnh mà không có tham số "-Name", kết quả là giống hệt nhau.

Trả lời

14

Tôi vừa nhận thấy hành vi tương tự. Có vẻ như nó không hoạt động như mong đợi. Tuy nhiên, bạn có thể cuộn của riêng bạn:

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

Đó chỉ Ống danh sách trả về bởi get-website đến nơi đối tượng lệnh và chỉ trả lại rằng đối tượng duy nhất.

Nếu bạn mới sử dụng PowerShell, tôi không thể đề xuất đủ Master PowerShell.

+0

câu trả lời tốt, +, 1 cho liên kết đối với Sư Phụ Powershell. Trông tuyệt vời. Cảm ơn! – shellter

+0

Câu trả lời khác không hiệu quả đối với tôi, nhưng điều này đã làm. Tôi chỉ chạy 'if ($ (Get-Website | Where-Object {$ _. Name -eq 'sitename'}) -eq $ null)' và nó hoạt động. –

38

Bạn có thể sử dụng thử nghiệm-Path cho cả kiểm tra các trang web hồ & ứng dụng:

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

Mẹo hay! Cảm ơn! –

+0

Tôi thực sự muốn tôi có thể đánh dấu hai câu trả lời vì điều này cũng hữu ích vì nó đã cho tôi một phần khác của câu trả lời mà tôi đang tìm kiếm. –

+0

IIS này ở đâu: \ Sites đường dẫn? –

Các vấn đề liên quan