在PowerShell中显示所有站点和绑定

san*_*084 44 iis powershell powershell-3.0 iis-8

我正在从IIS记录与站点相关的所有站点和绑定.有没有一种简单的方法可以通过PowerShell脚本获取此列表,而不是手动键入查看IIS?

我希望输出是这样的:

Site                          Bindings
TestSite                     www.hello.com
                             www.test.com
JonDoeSite                   www.johndoe.site
Run Code Online (Sandbox Code Playgroud)

Chr*_*las 82

试试这个:

Import-Module Webadministration
Get-ChildItem -Path IIS:\Sites
Run Code Online (Sandbox Code Playgroud)

它应该返回如下所示的内容:

Name             ID   State      Physical Path                  Bindings
----             --   -----      -------------                  --------
ChristophersWeb 22   Started    C:\temp             http *:8080:ChristophersWebsite.ChDom.com
Run Code Online (Sandbox Code Playgroud)

从这里你可以改进结果,但要小心.select语句的管道不会提供您所需的内容.根据您的要求,我将构建一个自定义对象或哈希表.

  • `Get-Website`基本上做同样的事情并且有点短. (2认同)

Fro*_* F. 50

尝试这样的东西来获得你想要的格式:

Get-WebBinding | % {
    $name = $_.ItemXPath -replace '(?:.*?)name=''([^'']*)(?:.*)', '$1'
    New-Object psobject -Property @{
        Name = $name
        Binding = $_.bindinginformation.Split(":")[-1]
    }
} | Group-Object -Property Name | 
Format-Table Name, @{n="Bindings";e={$_.Group.Binding -join "`n"}} -Wrap
Run Code Online (Sandbox Code Playgroud)

  • 非常好.我不会想到添加正则表达式来评估对象,但这非常好地使用New\Group-Object cmdlet.我将不得不根据这一点更新一些代码. (3认同)

Ale*_*kin 22

我看到的最简单的方法:

Foreach ($Site in get-website) { Foreach ($Bind in $Site.bindings.collection) {[pscustomobject]@{name=$Site.name;Protocol=$Bind.Protocol;Bindings=$Bind.BindingInformation}}}
Run Code Online (Sandbox Code Playgroud)


Arm*_* G. 19

如果你只想列出所有网站(即找到一个绑定)

将工作目录更改为"C:\ Windows\system32\inetsrv"

cd c:\ Windows\system32\inetsrv

接下来运行"appcmd list sites"(复数)并输出到文件.例如c:\ IISSiteBindings.txt

appcmd list sites> c:\ IISSiteBindings.txt

现在从命令提示符处打开记事本.

记事本c:\ IISSiteBindings.txt