自动化重置应用程序池凭据的PowerShell脚本

在管理Web服务器时,经常需要对应用程序池的账户或密码进行刷新或更改。这可以通过编写一个PowerShell脚本来实现自动化,从而提高效率并减少人为错误。以下是一个简单的脚本示例,它将遍历所有应用程序池(不包括默认应用程序池),并重置用户和密码。该脚本可以根据需要进行定制,以在密码更改时更新密码。

首先,需要检查appcmd.exe是否存在于默认路径中。如果存在,将设置appcmd.exe的路径变量,以便后续使用。然后,将获取应用程序池的列表,并排除内置的应用程序池。对于每个应用程序池,将获取其用户名和密码。如果凭据存在,将使用相同的凭据重新设置应用程序池。最后,将执行IIS重置以应用更改。

以下是脚本的详细步骤:

# 检查appcmd.exe是否存在于默认路径 if (Test-Path "c:\windows\system32\inetsrv\appcmd.exe") { # 设置AppCmd.exe路径变量 $AppCmdPath = 'c:\windows\system32\inetsrv\appcmd.exe' # 获取应用程序池列表 & $AppCmdPath list apppools /text:name | ForEach-Object { # 获取应用程序池名称 $PoolName = $_ # 排除内置应用程序池 if ($PoolName -eq "DefaultAppPool" -Or $PoolName -eq "Classic .NET AppPool" -Or $PoolName -eq ".NET v2.0 Classic" -Or $PoolName -eq ".NET v2.0" -Or $PoolName -eq ".NET v4.5 Classic" -Or $PoolName -eq ".NET v4.5") { Write-Host "Inbuild Pool" + $PoolName } else { # 获取用户名 $PoolUserCmd = $AppCmdPath + ' list apppool "' + $PoolName + '" /text:processmodel.username' $PoolUser = invoke-expression $PoolUserCmd # 获取密码 $PoolPasswordCmd = $AppCmdPath + ' list apppool "' + $PoolName + '" /text:processmodel.password' $PoolPassword = invoke-expression $PoolPasswordCmd # 检查凭据是否存在 if ($PoolPassword -ne "") { # 使用相同的凭据重新设置应用程序池 & $AppCmdPath set config -section:system.applicationHost/applicationPools "/[name='$($PoolName)'].processModel.identityType:SpecificUser" "/[name='$($PoolName)'].processModel.userName:$($PoolUser)" "/[name='$($PoolName)'].processModel.password:$($PoolPassword)" } } } # 在重置密码后执行IISRESET & {iisreset} } else { Write-Host -Object 'Could not find the appcmd.exe path at default location, please try at different place.' }
沪ICP备2024098111号-1
上海秋旦网络科技中心:上海市奉贤区金大公路8218号1幢 联系电话:17898875485