2011-09-21 40 views
9

Tôi đang viết kịch bản PowerShell để thực hiện một số chức năng quản trị nhất định trong IIS 7.5.PowerShell + WebAdministration - Làm cách nào để truy cập trang web từ ứng dụng web?

import-module WebAdministration 

Trong một số trường hợp tôi biết tên của các ứng dụng web tôi muốn làm việc với nhưng không phải là trang web đó là dưới. Tải ứng dụng thật dễ dàng:

$app = get-webapplication -name 'MyApp' 

Nhưng tôi không thể tìm ra cách lấy tên của trang web cho ứng dụng. Nó không có vẻ là một thuộc tính ngoài đối tượng webapplication. Điều tốt nhất tôi có thể nghĩ ra là cố gắng vượt qua thử nghiệm:

get-website | where {test-path "iis:\sites\$_.name\MyApp"} 

Vì một lý do nào đó sẽ trống. Bất kỳ suy nghĩ về làm thế nào để đi về điều này? Cảm ơn trước.

Trả lời

13

Đây là cách bạn có thể lấy tên trang web:

$siteName = (Get-WebApplication -name 'YourApp').GetParentElement().Attributes['name'].Value 

Hoặc thậm chí ngắn hơn:

$siteName = (Get-WebApplication -name 'YourApp').GetParentElement()['name'] 
+0

bingo. Bạn là một anh hùng. –

3

tôi đã không đào vào lý do tại sao, nhưng nếu bạn sử dụng một dấu sao hoặc dấu chấm hỏi ở bất cứ đâu trong chuỗi nó hoạt động như một ký tự đại diện và trả về như vậy.

I.E.

get-website -name '*myapp' 

    Name  ID State Physical Path  Bindings 
    ----  -- ----- -------------  -------- 

    myapp  12 Started C:\inetpub\wwwroot http:*:80: 
    amyapp  13 Stopped C:\anetpub\   http:*:81: 
aamyapp  14 Stopped C:\another\place  http:172.198.1.2:80:host.header.com 

hoặc

get-website -name '?myapp' 

Name ID State Physical Path Bindings 
---- -- ----- ------------- -------- 
amyapp 13 Stopped C:\anetpub http:*:81: 
4

Hãy thử điều này

$app = get-webapplication -name 'MyApp' 
foreach($a in $app) 
{ 
$a.Attributes[0].Value; 
} 

này sẽ cung cấp cho bạn tất cả các tên của các ứng dụng web, đôi khi bạn có thể có nhiều hơn 1 tên cho một ứng dụng web duy nhất.

Để biết thêm thông tin xem các liên kết

http://nisanthkv.blog.com/2012/07/06/name-of-web-applications-using-powershell/

Hy vọng nó giúp ..

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