19

我对 powershell 很陌生,我正在尝试自动删除网站的早期版本,并将较新版本添加为 TFS 2010 构建模板(Windows 工作流 4.0)的一部分。是否可以使用powershell查看IIS7中是否存在网站或Web应用程序池?我试过运行以下命令:

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

输出列出了盒子上安装的所有网站,而不仅仅是默认网站。

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

如果我尝试运行不带“-Name”参数的命令,结果完全相同。

4

2 回答 2

51

您可以使用 Test-Path 来检查网站和应用程序池:

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." }
于 2012-06-15T06:38:07.290 回答
20

我只是注意到了同样的行为。似乎它没有按预期工作。但是,您可以自己滚动:

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

这只是将get-website返回的列表通过管道传输到where-object cmdlet 并返回该单个对象。

如果您是 PowerShell 新手,那么我推荐的Master PowerShell 再合适不过了。

于 2012-06-14T21:22:19.153 回答