2010-11-13 82 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*"