2010-11-13 112 views
16

我想使用PowerShell Get-Website cmdlet檢索有關特定IIS 7網站的信息。遺憾的是,Get-Website返回所有網站的信息,而不管我傳入的-Name參數。看起來-Name參數被忽略。Powershell Get-WebSite名稱參數被忽略

舉例來說,如果我使用:

Import-Module WebAdministration 
Get-Website -Name "Test Website" 

我會收到信息,我的機器上的所有網站:

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 
Test Website  2 Started C:\websites\test    http *:80:test.mydomain.com 

根據文檔獲取,網站應該對指定的網站返回的信息在-Name參數中。我必須誤解文檔或濫用cmdlet,或者兩者兼而有之。

我應該如何使用Get-Website來返回特定網站的信息?

回答

23

根據this forum post,這是Get-Website cmdlet中的一個錯誤。解決這個問題的方法是使用Get-Item。

$website = "Test" 
Get-Item "IIS:\sites\$website" 

確保使用雙引號,當使用單引號時不會擴展變量。

+0

附註引用的連接主題中提到的工作圍繞: [連接該錯誤的主題](http://connect.microsoft.com/PowerShell/feedback/details/597787/get-website-always-returns-full-list-of-web-sites) – Joey 2010-11-14 00:29:12

+0

只是爲了清晰和新手(像我一樣):沒有必要聲明一個變量。 – LosManos 2012-04-10 07:12:18

13

我意識到這是一個較舊的帖子,但我最近碰到這個問題,並發現你的問題。我有運氣的語法如下太:

get-website | where { $_.Name -eq 'foobar' } 
+0

此變通辦法的問題是_all_網站已列出,然後進行過濾。當你擁有少數幾個網站時,這並不算什麼,但我們中的一些人合法地在單個IIS服務器上擁有多個網站。 – Mels 2015-12-09 11:35:05

+0

確實,它確實會返回所有網站,然後進行過濾。我寧願過濾左邊和格式正確,但這不是一個選項,這是我必須做這個解決方法的原因。我每臺服務器也有200-300個站點,運行這個命令並不是很大的延遲。 – Marcus 2016-01-04 22:35:51

8

使用通配符也將圍繞這個問題得到由@Joey

get-website -name "*Default Web Site*"