我已经编写了一个powershell脚本来使用" webadministration"来更新apppool的用户名和密码。管理单元。
Import-Or-Snapin -Module "Webadministration"
Function Change-AppPoolIdentity {
Param (
$AppPool,
$OldUserName,
$NewUserName,
$Password
)
If (Test-Path $AppPool)
{
LogWrite "Function :Change-AppPoolIdentity"
$MyAppPool = Get-Item $AppPool
If ($($MyAppPool.processModel.userName) -eq $OldUserName) {
$MyAppPool.Stop()
LogWrite "Trying to change App pool user name and password"
$MyAppPool | Set-ItemProperty -Name "processModel.username" -Value $NewUserName
$MyAppPool | Set-ItemProperty -Name "processModel.password" -Value $Password
$MyAppPool.Start()
}
Else {
LogWrite "Apppool $AppPool does not run using $OldUserName"
}
}
Else {
LogWrite "Apppool $AppPool not available "
}
}
执行脚本后,我试图访问它没有显示的网站。当我们手动设置密码时,它工作。我们怀疑密码未正确更新。
如何确保更改应用池密码?在Set-item之后,是否可以添加条件来验证?
答案 0 :(得分:1)
我对IIS powershell提供程序相对较新,但我相信您可能需要调用 set-item 才能将配置更改保存到应用程序池中。
要测试,获取应用程序池项,打印出processModel密码值以查看原始值(当我看到这个时感到惊讶),然后更新它,然后一定要调用 set-item 更新IIS。
e.g。
$pool = IIS:\apppools\myapppool
$pool.processModel.password
$pool.processModel.password = $new_password
# doens't take effect until this
#
$pool | set-item
# should show updated value
#
$pool.processModel.password