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

如何远程批量修改多台服务器的IIS应用程序池密码?

批量修改多台服务器IIS应用池密码方案

当然可以一次性对多台服务器执行该操作,核心是利用PowerShell的远程执行能力,无需逐个登录。以下是具体实现方案:

1. 核心实现逻辑

使用Invoke-Command cmdlet将修改脚本分发到目标服务器远程执行,全程无需手动登录单台机器。

2. 具体步骤

步骤1:准备目标服务器列表

可以直接在脚本中定义服务器数组,或从文本文件读取(每行一个服务器名/IP):

# 方式1:直接定义服务器列表
$servers = @("Server01", "Server02", "Server03")

# 方式2:从文本文件读取(文件路径自行调整)
$servers = Get-Content "C:\Scripts\target-servers.txt"

步骤2:编写远程执行的脚本块

移除原脚本中的Read-Host交互命令(远程会话无需手动输入),同时修正原脚本中Doma的笔误:

$updateScript = {
    Import-Module WebAdministration
    # 匹配指定账号的应用池
    $targetAppPools = Get-ChildItem IIS:AppPools | Where-Object { $_.processModel.userName -eq "Domain\XXXXX12345" }

    foreach ($pool in $targetAppPools) {
        $pool.processModel.userName = "Domain\XXXXX12345"
        $pool.processModel.password = "XXXXXXXXXXXXXXXXX"
        $pool | Set-Item
    }

    # 输出带服务器名的执行结果,方便排查
    Write-Host "[$env:COMPUTERNAME] 应用池密码已更新" -ForegroundColor Magenta
}

步骤3:执行批量远程命令

使用拥有目标服务器管理员权限的账号执行,确保该账号能访问目标服务器并修改IIS配置:

# 弹出窗口输入有权限的账号凭据
$adminCred = Get-Credential -Message "输入目标服务器管理员账号"

# 批量执行脚本
Invoke-Command -ComputerName $servers -ScriptBlock $updateScript -Credential $adminCred

3. 关键注意事项

  • WinRM服务要求:目标服务器需开启WinRM服务(Windows Server 2012及以上默认开启,手动开启命令:Enable-PSRemoting -Force)
  • 权限要求:执行账号必须拥有每台目标服务器的本地管理员权限,以及IIS应用池的修改权限
  • 密码安全优化:避免硬编码密码,可改用上述Get-Credential方式传递,或使用加密的凭据文件存储密码
  • 防火墙配置:确保目标服务器防火墙允许WinRM端口(默认HTTP为5985,HTTPS为5986)

4. 更安全的版本(避免硬编码密码)

如果不想在脚本块中硬编码密码,可通过参数传递凭据:

$adminCred = Get-Credential -Message "输入目标服务器管理员账号"
$targetUser = "Domain\XXXXX12345"

$secureScript = {
    param($user, $pwd)
    Import-Module WebAdministration
    $targetAppPools = Get-ChildItem IIS:AppPools | Where-Object { $_.processModel.userName -eq $user }

    foreach ($pool in $targetAppPools) {
        $pool.processModel.userName = $user
        $pool.processModel.password = $pwd
        $pool | Set-Item
    }

    Write-Host "[$env:COMPUTERNAME] 应用池密码已更新" -ForegroundColor Magenta
}

Invoke-Command -ComputerName $servers -ScriptBlock $secureScript -Credential $adminCred -ArgumentList $targetUser, $adminCred.GetNetworkCredential().Password

内容的提问来源于stack exchange,提问作者Sai Darshan

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.22 20:03:29