确保将IIS AppPool用户添加到Windows组

时间:2017-04-04 00:27:03

标签: windows powershell iis-8 adsi

我正在尝试使用Powershell(由Ansible运行)将ASP.NET应用程序部署到IIS。

我希望我的应用程序能够查询性能计数器,因此我使用此Powershell脚本将其添加到性能监视器用户中:

appPoolName=$args[0]

$group = [ADSI]"WinNT://$Env:ComputerName/Performance Monitor Users,group"

$ntAccount = New-Object System.Security.Principal.NTAccount("IIS AppPool\$appPoolName")
$strSID = $ntAccount.Translate([System.Security.Principal.SecurityIdentifier])
$user = [ADSI]"WinNT://$strSID"

$group.Add($user.Path)

它实际上来自另一个SO问题:Add IIS AppPool\ASP.NET v4.0 to local windows group

部署后,可能会将用户添加到组中,但应用程序仍无法访问性能计数器。

脚本在启动App Pool和应用程序之前运行。 我尝试了以下事情,没有成功:

我已通过以下方式修改了部署脚本,但没有成功:

  • 在添加用户之前从该组中删除用户
  • 添加用户后重新启动应用程序池。 IIS实际上抱怨(“此时服务无法接受消息”)。
  • 启动应用程序后将用户添加到组
  • 在部署开始时(停止应用程序和池之前)将用户添加到组中

我必须解决问题的唯一方法是重启机器。我想知道是否有更好的一个!

如果有可能,我认为让App Pool用户注销并重新启用可以解决我的问题。我还没有找到如何做到这一点(重新启动或回收App Pool不起作用)。

1 个答案:

答案 0 :(得分:1)

答案很简单iisreset(在命令行或Powershell中)。