PowerShell批量管理IIS站点绑定需以管理员身份运行并加载WebAdministration模块,通过New-WebBinding、Get-IISSiteBinding和Remove-IISSiteBinding配合数组或CSV实现HTTP/HTTPS绑定增删改,支持主机头、证书指纹、IPv6及标准化部署。
powershell 批量管理 iis 站点绑定,核心是用 new-webbinding、get-iissitebinding 和 remove-iissitebinding 这类 cmdlet,配合循环或列表操作,避免逐个在 iis 管理器里手动配置。关键在于统一结构化输入(如 csv 或数组),再批量执行。
准备:导入模块并确认权限
必须以管理员身份运行 PowerShell,并确保 WebAdministration 模块已加载:
Import-Module WebAdministration- 若报错“模块未找到”,说明 IIS 未安装或角色未启用;可先运行
Enable-WindowsOptionalFeature -Online -FeatureName IIS-ManagementScriptingTools -All - 检查当前是否有站点:
Get-IISSite,确认环境就绪
批量添加绑定(HTTP/HTTPS 主机头)
例如,为多个站点统一添加 :80:www.example.com 绑定:
- 用数组定义目标站点和绑定信息:
$sites = @("SiteA", "SiteB", "SiteC")<br>foreach ($site in $sites) {<br> New-WebBinding -Name $site -Protocol http -Port 80 -HostHeader "www.$site.local"<br>} - 添加 HTTPS 绑定需指定证书指纹(从本地计算机个人证书库获取):
$thumbprint = (Get-ChildItem cert:\LocalMachine\My | Where-Object {$_.Subject -match "example.com"}).Thumbprint<br>New-WebBinding -Name "SiteA" -Protocol https -Port 443 -HostHeader "api.example.com" -SslFlags 0<br>Set-ItemProperty "IIS:\SslBindings\0.0.0.0!443" -Name thumbprint -Value $thumbprint
批量修改或清理旧绑定
常见需求:替换所有站点的旧域名、删除默认的无主机头绑定、或统一启用 IPv6 绑定。
直播话术巡检系统(Windows版) — 实时语音转写、关键词检测、场景自动切换、告警推送、大屏可视化。支持 Windows VB-Cable 虚拟声卡音频采集,阿里云 ASR 实时识别。一键启动脚本,自动安装环境。
- 删除某站点所有非 443 的 HTTP 绑定:
Get-IISSiteBinding -Name "SiteA" | Where-Object {$_.Protocol -eq "http" -and $_.Port -ne "443"} | ForEach-Object { Remove-IISSiteBinding -Name "SiteA" -BindingInformation $_.bindingInformation -Protocol $_.Protocol } - 为全部站点添加 IPv6 绑定(监听 ::):
Get-IISSite | ForEach-Object {<br> New-WebBinding -Name $_.Name -Protocol http -Port 80 -IPAddress "::" -HostHeader $_.Name.ToLower() + ".local"<br>}
从 CSV 文件驱动绑定配置
适合生产环境标准化部署。准备一个 bindings.csv:
PortalApp,http,80,*,portal.contoso.com,
ApiApp,https,443,*,api.contoso.com,1
然后执行:
$csv = Import-Csv .\bindings.csv<br>foreach ($row in $csv) {<br> if ($row.Protocol -eq "https") {<br> New-WebBinding -Name $row.SiteName -Protocol https -Port $row.Port -IPAddress $row.IPAddress -HostHeader $row.HostHeader -SslFlags $row.SSLFlags<br> } else {<br> New-WebBinding -Name $row.SiteName -Protocol $row.Protocol -Port $row.Port -IPAddress $row.IPAddress -HostHeader $row.HostHeader<br> }<br>}

















