如何通过PowerShell脚本基于CSV修改IIS服务器应用程序池配置
实现方案
首先你需要先调整此前导出的CSV文件:仅保留你需要修改配置的应用程序池对应行,删除不需要调整的应用池数据,列保留AppPoolName(用于匹配目标应用池)和所有你需要修改的配置字段列即可,不需要保留无关字段。
然后替换原有的导出脚本为以下修改配置的脚本即可实现需求:
# 检查IIS是否安装 $IISInstalled = (Get-WindowsFeature -Name "Web-Server").Installed If ($IISInstalled -eq $false){ Write-Output "IIS not installed" exit } # 导入IIS管理模块 Import-Module WebAdministration -ErrorAction Stop # 配置参数:修改为你的CSV文件实际路径 $csvPath = "\\w2-cmn-util02\Reports\app-pool-azure-20210729.csv" # 读取CSV配置 $poolConfigList = Import-Csv -Path $csvPath -Encoding UTF8 foreach ($config in $poolConfigList) { $poolPath = "IIS:\AppPools\$($config.AppPoolName)" # 检查应用池是否存在 if (-not (Test-Path $poolPath)) { Write-Warning "应用池 $($config.AppPoolName) 不存在,跳过修改" continue } # 逐个修改配置项,以下字段请和你CSV里的列名对应,不需要的字段可以删掉 Set-ItemProperty -Path $poolPath -Name "managedRuntimeVersion" -Value $config.NETCLRVer Set-ItemProperty -Path $poolPath -Name "enable32BitAppOnWin64" -Value [bool]::Parse($config.'32-bit') Set-ItemProperty -Path $poolPath -Name "managedPipelineMode" -Value $config.ManagedPipeline Set-ItemProperty -Path $poolPath -Name "queueLength" -Value [int]$config.QueueLength Set-ItemProperty -Path $poolPath -Name "startMode" -Value $config.StartMode Set-ItemProperty -Path $poolPath -Name "recycling.periodicRestart.time" -Value [TimeSpan]::Parse($config.'recycling-periodicRestarttime') # 保存修改 Start-WebAppPool -Name $config.AppPoolName Write-Output "应用池 $($config.AppPoolName) 配置修改完成" }
注意事项
- 脚本需要以管理员权限运行,避免权限不足导致修改失败
- 首次测试可以在所有
Set-ItemProperty末尾添加-WhatIf参数,运行后只会输出模拟修改结果,不会实际改动配置,确认无误后再去掉该参数即可 - 如果需要批量在多台服务器执行该脚本,可以配合
Invoke-Command远程命令执行,无需逐台登录服务器操作 - 如果你的CSV里还有其他需要修改的配置项,参照示例格式新增对应的
Set-ItemProperty语句即可
内容的提问来源于stack exchange,提问作者Aro
相关产品推荐
相关产品推荐

