You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何使用PowerShell获取IIS所有站点web.config的NTLM认证配置信息

问题根因
  1. 原代码调用Get-IISConfigSection时未指定站点上下文,循环遍历所有站点时读取的都是全局IIS配置,而非每个站点的独立配置
  2. providers节点本身没有自定义属性,你需要遍历providers下的所有add类型子元素,再读取这些子元素的value属性即可拿到身份验证提供程序名称
修正后可用代码
# 导入IIS管理模块
Import-Module IISAdministration

# 获取所有IIS站点
$site_list = Get-IISSite
foreach($site in $site_list)
{
    # 获取当前站点的Windows身份验证配置段
    $ConfigSection = Get-IISConfigSection -SectionPath "system.webServer/security/authentication/windowsAuthentication" -Location $site.Name
    $winAuthEnabled = $ConfigSection.Attributes | Where-Object {$_.Name -eq "enabled"} | Select-Object -ExpandProperty Value
    Write-Host "站点名称:$($site.Name),Windows身份验证启用状态:$winAuthEnabled"

    # 定位providers配置节点
    $providersNode = $ConfigSection.ChildElements | Where-Object {$_.ElementTagName -eq "providers"}
    if($null -ne $providersNode)
    {
        Write-Host "配置的身份验证提供程序列表:"
        # 遍历providers下的所有add子元素
        foreach($addElement in $providersNode.ChildElements)
        {
            # 读取add元素的value属性获取提供程序名称
            $providerName = Get-IISConfigAttributeValue -ConfigElement $addElement -AttributeName "value"
            Write-Host "- $providerName"
            # 检测是否启用NTLM
            if($providerName -eq "NTLM")
            {
                Write-Host "* 检测到该站点启用NTLM身份验证"
            }
        }
    }
    Write-Host "================================"
}
运行说明
  • 必须以本地管理员权限启动PowerShell执行脚本,否则无权限读取IIS站点配置
  • 脚本会依次输出所有站点的Windows身份验证启用状态、配置的提供程序列表,同时自动标记启用了NTLM的站点
  • 如需批量跨主机执行,可结合Invoke-Command远程调用该脚本即可

内容的提问来源于stack exchange,提问作者Joshua K

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.09 01:15:04