You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

使用LithnetRMA从MIM应用中批量移除离职用户的实现逻辑咨询

LithnetRMA移除MIM应用成员代码修正

原代码存在的问题

  • $userList 被定义为纯文本字符串,未转换为结构化CSV对象,循环遍历的时候无法通过$item.ObjectID正常读取到用户ID,导致逻辑完全无法执行
  • 应用对象查询逻辑放在了循环内部,每次遍历用户都会重复查询同一个应用的资源,无意义增加MIM服务的请求开销
  • 冗余的用户对象查询步骤,移除应用显式成员仅需要传入用户的ObjectID,不需要提前调用Get-Resource获取用户资源
  • 没有异常校验逻辑,遇到无效ID、用户不在当前应用成员列表内等场景时会抛出未捕获的错误,可能导致批量任务中断

修正后可正常运行的代码

# 加载Lithnet Service PowerShell模块
Import-Module LithnetRMA

# 定义待移除的用户ID列表
$userList = @"
ObjectID;
139b8058-052c-459d-b3c0-1600fo417d1a
195b8057-042c-439d-b2c0-1800fp117d1b
169b8047-022c-449d-b0c0-1900fi217d1c
162b8037-012c-489d-b1c0-1000fu417d1d
164b8027-002c-488d-b8c0-1300fy317d1e
163b8017-012c-449d-b7c0-1500fr517d1f
"@ | ConvertFrom-Csv -Delimiter ';'

# 提前一次性获取目标应用资源,避免循环内重复查询
$application = Get-Resource -ID "168b8077-052c-489d-b4c0-1700ff817d1f"

# 批量移除用户
foreach($item in $userList) {
    $userId = $item.ObjectID.Trim()
    # 跳过空ID行
    if([string]::IsNullOrWhiteSpace($userId)){
        continue
    }
    # 校验用户是否在应用显式成员列表中,避免报错
    if($application.ExplicitMember.Contains($userId)){
        $application.ExplicitMember.Remove($userId)
    }
}

# 所有修改完成后统一保存一次即可,无需循环内重复保存
Save-Resource -Resources $application

优化说明

  • 把应用资源查询、最终资源保存都移到循环外,仅需调用2次MIM服务接口,相比原代码每次循环都查询+保存的逻辑,性能提升明显
  • 增加了空ID过滤、成员存在性校验逻辑,避免无效报错
  • 如需单独处理每个ID的执行状态,可在循环内增加try/catch捕获单条记录的异常,不影响整体批量任务执行

内容的提问来源于stack exchange,提问作者ak2595

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.24 13:54:07