PowerShell AD用户组操作脚本运行后闪退、无法显示用户所属组结果如何解决
问题分析
- 脚本最后查询用户组的逻辑存在变量覆盖错误:你写的
foreach($user in $groups)会把之前用户输入的用户名变量$user覆盖为AD组名,导致最后实际执行的是查询每个AD组的所属组,完全没有查询目标用户的组权限,自然看不到你要的结果 - 若你是直接双击运行ps1脚本,PowerShell默认执行完所有命令后会自动关闭窗口,即便有输出也会一闪而过
修正后可用脚本
$user = Read-host "Please enter user" $groups = 'M365-E3-Laptop-Office-Desktop','M365-E3-Laptop-EXO' $groupsremove = 'M365-F3-WebOnly-Apps' foreach($group in $groups){ Add-ADGroupMember -Identity $group -Members $user } foreach($removeGroup in $groupsremove){ # 加-Confirm:$false可跳过删除确认提示,不需要可以删除该参数 Remove-ADGroupMember -Identity $removeGroup -Members $user -Confirm:$false } # 直接查询目标用户的所属组,输出名称 Get-ADPrincipalGroupMembership $user | Select-Object Name Start-Sleep -Seconds 30 # 额外加按任意键退出逻辑,避免没看清内容窗口就关闭 Read-Host "按任意键退出"
改动说明
- 移除了错误的遍历组的查询循环,直接用最初输入的用户名查询所属组,输出结果就是目标用户的所有AD组列表
- 调整了删除组循环的变量名,避免和原有变量名冲突引发逻辑错误
- 新增可选的跳过删除确认参数,无需手动点确认即可完成组移除操作
- 新增按键退出逻辑,就算30秒sleep结束也不会立刻关窗口,需要你手动按任意键才会关闭
内容的提问来源于stack exchange,提问作者Moe Ismail
相关产品推荐
相关产品推荐

