如何查找IIS应用的MACHINE/WEBROOT/APPHOST位置及对应网站名称?
如何获取IIS网站名称及确认MACHINE/WEBROOT/APPHOST路径(针对PowerShell IIS审计脚本)
刚接触IIS就着手写安全审计脚本,挺棒的!我来帮你解决这两个关键问题:
一、查找命令中的<IIS网站名称>
有两种简单的方法可以获取你需要的网站名称:
- PowerShell命令行方式:直接运行
Get-IISSite,这个命令会列出服务器上所有IIS网站的详细信息,包括Name(就是你要填的<website name>)、State(运行状态)、PhysicalPath(物理路径)等。比如默认安装的IIS网站名称通常是Default Web Site。 - 图形界面方式:打开IIS管理器,在左侧的「连接」面板里展开「网站」节点,下面显示的每个名称就是对应的网站名,直接复制即可。
二、关于MACHINE/WEBROOT/APPHOST路径
首先要明确:这个路径不是文件系统里的实际文件夹,而是IIS配置系统中的元数据库路径(metabase path),用来定位网站的配置节点:
MACHINE/WEBROOT/APPHOST是固定的前缀,代表IIS全局的网站配置容器,后面拼接网站名称就能精准定位到单个网站的配置项。- 如果要找这个路径对应的实际配置文件存储位置,它指向的是
C:\Windows\System32\inetsrv\config\applicationHost.config——这是IIS的核心配置文件,所有网站的设置都保存在这里。 - 你可以用
Get-WebConfiguration -pspath 'MACHINE/WEBROOT/APPHOST'命令验证这个路径的有效性,运行后会返回所有网站的配置根节点。
额外实用技巧(针对你的安全审计脚本)
如果需要批量审计所有网站的Forms保护设置,可以用下面的脚本片段自动遍历所有网站:
# 获取所有IIS网站的名称列表 $allSiteNames = Get-IISSite | Select-Object -ExpandProperty Name # 循环检查每个网站的Forms protection配置 foreach ($siteName in $allSiteNames) { try { $protectionValue = Get-WebConfigurationProperty -pspath "MACHINE/WEBROOT/APPHOST/$siteName" ` -filter 'system.web/authentication/forms' -name 'protection' Write-Host "✅ 网站 [$siteName] 的Forms保护设置: $protectionValue" } catch { Write-Warning "⚠️ 网站 [$siteName] 未配置Forms认证或读取失败: $_" } }
内容的提问来源于stack exchange,提问作者Jesse_Pinkman




