繁体   English   中英

如何检查 powershell 中是否存在用户 'IIS AppPool\MyAppPoolName'

[英]How do I check if user 'IIS AppPool\MyAppPoolName' exists in powershell

我正在尝试为我的开发人员自动化一些数据库配置。 对于开发和测试,我们只是使用 ApplicationPoolIdentity 服务帐户(我们的一个测试服务器讨厌 NETWORK SERVICE,所以这不是一个选项),所以我需要配置数据库以自动授予 IIS 的正确帐户的权限。 但开发人员往往只运行数据库脚本,而不运行数据库和 web 脚本。

因此,IIS AppPool 在运行 DB 脚本时可能不存在,这意味着 IIS AppPool\myAppPoolName 用户也将不存在。 因此,当我尝试授予他们访问本地 SQL 数据库的权限时,他们会收到错误消息。

那么问题来了,如何检查这些 IIS AppPool 服务帐户是否存在于 Powershell 中? 我知道如何确认 AD 用户或本地用户的存在,但这些 IIS apppool 服务帐户不在列表中。 他们住在哪里? 它是 Powershell 无法访问的列表吗?

我可以做一些愚蠢的事情,比如在权限步骤中捕获和处理错误,但我宁愿请求许可而不是宽恕。

据我所知,IIS 应用程序池标识的权限帐户是 IIS AppPool\myAppPoolName。 如果我们要检查此帐户是否存在。 我们只需要检查 myAppPoolName 是否存在。

为此,我建议您可以参考下面的 powershell 命令来检查应用程序池是否存在。

命令:

import-module webadministration

$AppPoolName="Test"

if(Test-Path IIS:\AppPools\$AppPoolName)
{
"AppPool is already there"
return $true;
}
else
{
return $false;
}

结果:

在此处输入图像描述

AppPool 身份是一个虚拟帐户,它不会在 Windows 用户管理控制台中显示为用户。 该文档可能会有所帮助:( https://docs.microsoft.com/en-us/iis/manage/configuring-security/application-pool-identities )。 还有这个( https://blogs.msdn.microsoft.com/ericparvin/2015/04/14/how-to-add-the-applicationpoolidentity-to-a-sql-server-login/

最后,我在这里接受了原谅 - 不允许。 我尝试创建 SQL 登录名和相应的用户,如果不能,则处理异常。

编辑:

这似乎是获取它们的实际列表的最佳方式:

$appPoolIdentities = Get-IISAppPool |
   Where-Object {$_.ProcessModel.IdentityType -eq 'ApplicationPoolIdentity'} |
   ForEach-Object {"IIS AppPool\$($_.Name)"}

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM