IIS自动生成的网页列出了所有托管的网站

时间:2018-01-23 20:34:08

标签: iis appcmd

基本上是标题所说的。是否有一个/ addon-for IIS的功能,它允许在单个网页中显示一个列表,其中包含指向IIS中托管的网站的链接?

我知道我可以通过以下方式从命令行获取所述列表:

%windir%\system32\inetsrv\appcmd list site > c:\sites.xls

然后,这将创建一个Excel电子表格,其中包含每个站点的IIS +站点相关信息中的站点列表。

但是我必须解析CSV文件并将其转换为html。这样可行,但如果已经有一个功能或插件完全相同,我会完全避开它。

1 个答案:

答案 0 :(得分:1)

您可以使用Powershell:您可以遍历IIS站点,虚拟目录,Web应用程序并动态构建一个简单的html页面。

这是一个简单的脚本,它创建一个html文件,其中包含指向每个虚拟目录或Web应用程序的链接列表。这只是一个基本脚本,您可以自定义它并添加更多详细信息:

#Import WebAdministration to manage IIS contents
Import-Module WebAdministration

#define a variable that will hold your html code
$html = "<html>`n<body>"

#define the root path of your sites (in this example localhost)
$rootFolder = "http://localhost"

$Websites = Get-ChildItem IIS:\Sites 

#loop on all websites inside IIS
foreach($Site in $Websites)
{
    $VDirs = Get-WebVirtualDirectory -Site $Site.name
    $WebApps = Get-WebApplication -Site $Site.name

    #loop on all virtual directories    
    foreach ($vdir in $VDirs )
    {
    $html += "`n<a href='" + $rootFolder + $vdir.path +"'>" + $vdir.path + "</a><br/>"
    }
    #loop on all web applications
    foreach ($WebApp in $WebApps)
    { 
    $html += "`n<a href='" + $rootFolder + $WebApp.path +"'>" + $WebApp.path + "</a><br/>"
    }
}
#add final tags to html
$html += "`n</body>`n</html>"

#write html code to file
$html >> "d:\sites.html" 

例如,使用此IIS结构:

enter image description here

你得到以下html:

<html>
<body>
<a href='http://localhost/vd'>/vd</a><br/>
<a href='http://localhost/test'>/test</a><br/>
<a href='http://localhost/test2'>/test2</a><br/>
</body>
</html>

渲染如下:

enter image description here