如何验证应用程序池用户名和密码是否已更新?

时间:2012-08-02 12:23:33

标签: iis powershell iis-7 iis-7.5 powershell-v2.0

我已经编写了一个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之后,是否可以添加条件来验证?

1 个答案:

答案 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