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

求助:修改SharePoint 2016 PowerShell脚本,用ForEach批量删用户配置文件

修改后的SharePoint 2016用户配置文件删除脚本

以下是适配需求的PowerShell脚本,支持从CSV读取用户信息并批量删除存在的用户配置文件:

# 导入SharePoint PowerShell模块(防止未自动加载)
Add-PSSnapin Microsoft.SharePoint.PowerShell -ErrorAction SilentlyContinue

# 配置参数
$DEACTIVATED_AD_USERS_CSV = "D:\Te……Deactivated_Users_WDRmg_208.csv"
$SiteURL = "https://你的SharePoint站点完整URL"

# 读取Tab分隔的CSV文件(请确认列名匹配)
$deactUsers = Import-Csv $DEACTIVATED_AD_USERS_CSV -Delimiter "`t"

# 初始化用户配置文件管理对象
$ServiceContext  = Get-SPServiceContext -Site $SiteURL
$UserProfileManager = New-Object Microsoft.Office.Server.UserProfiles.UserProfileManager($ServiceContext)

# 遍历CSV中的每个用户
foreach ($user in $deactUsers) {
    # 获取当前用户的SamAccountName(注意:需与CSV中对应的列名一致)
    $accountName = $user.SamAccountName

    # 跳过空账号记录
    if ([string]::IsNullOrWhiteSpace($accountName)) {
        Write-Warning "检测到空账号名,跳过当前行"
        continue
    }

    # 检查用户配置文件是否存在
    if ($UserProfileManager.UserExists($accountName)) {
        try {
            # 执行删除操作
            $UserProfileManager.RemoveUserProfile($accountName)
            Write-Host "已成功删除用户配置文件:$accountName" -ForegroundColor Green
        }
        catch {
            Write-Error "删除用户 $accountName 失败:$($_.Exception.Message)"
        }
    }
    else {
        Write-Warning "用户配置文件 $accountName 不存在,跳过"
    }
}

关键修改说明

  • 新增foreach循环遍历CSV中的所有用户记录,替代原固定账号逻辑
  • 加入账号存在性检查:通过UserExists()方法避免删除不存在的用户时抛出错误
  • 增加空账号过滤:跳过CSV中无有效账号的行,减少无效操作
  • 添加异常捕获:用try-catch处理删除过程中的意外错误,输出详细报错信息
  • 优化输出提示:用不同颜色区分成功、警告、错误信息,便于直观查看执行结果

注意事项

  1. 确认CSV中存储SamAccountName的列名为SamAccountName,若你的CSV列名不同(如AccountName),需修改$user.SamAccountName为对应列名
  2. 运行脚本需拥有SharePoint用户配置文件服务的管理员权限
  3. 建议先在测试环境验证脚本,再在生产环境执行

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.17 13:31:08