启用ADFS Extranet Smart Lockout时缺失指定cmdlet的解决方案咨询
ADFS Extranet Smart Lockout 2016/2019环境缺失cmdlet可行解决方案
Update-AdfsArtifactDatabasePermission 是Windows Server 2022及以上版本ADFS模块才自带的cmdlet,Windows Server 2016/2019的原生ADFS模块确实未包含该命令,可通过以下两种方案解决:
方案1:手动配置数据库权限(推荐,无环境依赖)
该cmdlet的核心作用是为ADFS服务账号授予AdfsArtifactStore数据库的操作权限,可手动完成对应配置:
- 确认ADFS使用的服务账号,通常为组托管服务账号(gMSA),格式为
域\adfsgmsa$,若使用普通域账号作为服务账号则使用对应账号名 - 若使用SQL Server作为ADFS存储:打开SQL Server Management Studio(SSMS),使用管理员权限连接到ADFS对应的SQL实例
- 若使用WID(Windows Internal Database)作为存储:使用本地管理员权限打开SSMS,连接地址填写
\\.\pipe\MICROSOFT##WID\tsql\query - 展开安全性 > 登录名,找到ADFS服务账号,右键选择属性
- 切换到用户映射标签页,勾选
AdfsArtifactStore数据库,在下方数据库角色权限中勾选db_owner、public - 保存配置后执行命令重启ADFS服务:
Restart-Service adfssrv - 完成后即可继续执行Extranet Smart Lockout的剩余配置步骤
方案2:迁移Windows Server 2022的ADFS模块
如果需要使用原生cmdlet操作,可通过模块迁移实现:
- 准备一台已安装Windows Server 2022、并部署了ADFS角色的服务器
- 找到ADFS模块路径:
C:\Windows\System32\WindowsPowerShell\v1.0\Modules\ADFS - 将路径下的所有文件复制到目标Windows Server 2016/2019服务器的相同路径下,覆盖原有文件
- 执行命令重新导入ADFS模块:
Import-Module ADFS -Force - 此时即可正常调用
Update-AdfsArtifactDatabasePermissioncmdlet
配置验证
所有操作完成后,执行以下命令验证Extranet Smart Lockout是否正常启用:
Get-AdfsProperties | Select-Object *ExtranetLockout*
确认返回结果中ExtranetSmartLockoutEnabled属性值为True即为配置成功。
注意:若使用WID数据库,所有配置操作必须在ADFS场的主节点执行,操作完成后同步配置到所有从节点;操作前建议提前备份ADFS配置和数据库,避免异常。
内容的提问来源于stack exchange,提问作者JoshHill
相关产品推荐
相关产品推荐

