我在 IIS 7.5 上执行此操作:
创建一个应用程序池“testpool”,并将用户名和密码设置为与 AD 中存在的用户名和密码匹配。然后以管理员身份在 powershell 中:
Import-Module webadministration
cd IIS:\AppPools
Get-ItemProperty "testpool" -name "processmodel.username"
它给了我正确的用户名。然后:
Set-ItemProperty "testpool" -name "processmodel.username" -value "mydomain\anotheruser"
Get-ItemProperty "testpool" -name "processmodel.username"
它给了我新的用户名,mydomain\anotheruser。然而,在 IIS 8 上,最后一行仍然给了我旧的用户名,但它上面的一行不会导致错误。
编辑:
我们正在创建用于配置所有 Web 服务器的脚本。如果在编写脚本时无法设置用户名,那就太烦人了。
我已在多台 IIS 7.5 服务器 (Windows 2008) 上尝试过此方法,它们均能正常工作。我已在三台 IIS 8 服务器 (Windows 2012) 上尝试过此方法,但均不能正常工作。
事实证明,虽然我无法设置用户名,但我可以在 IIS 8 上设置密码:
Set-ItemProperty "testpool" -name "processmodel.password" -value "MyPassword"
答案1
我在 IIS 8 中这样做
$testpool = get-item iis:\apppools\$iisAppPoolName;
$testpool.processModel.userName = $un;
$testpool.processModel.password = $pw;
$testpool.processModel.identityType = 3;
$testpool | Set-Item
$testpool.Stop();
$testpool.Start();
对我有用:)
答案2
经过几次实验,这是我的解决方案
$credentials = (Get-Credential -Message "Please enter the Login credentials including Domain Name").GetNetworkCredential()
$userName = $credentials.Domain + '\' + $credentials.UserName
Set-ItemProperty IIS:\AppPools\$app_pool_name -name processModel.identityType -Value SpecificUser
Set-ItemProperty IIS:\AppPools\$app_pool_name -name processModel.userName -Value $userName
Set-ItemProperty IIS:\AppPools\$app_pool_name -name processModel.password -Value $credentials.Password