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

如何让PowerShell的Remove-PublicFolderClientPermission输出每条权限移除记录

解决方案

你可以将管道执行逻辑拆分为显式循环,手动捕获每一步的执行结果,自定义输出内容,完全规避Verbose输出的多余信息:

修改后完整代码

# 从"PFPerm.csv"导入数据并移除文件中所有用户的权限
Write-Host "正在移除用户权限...白色文字 = 移除成功!" -ForegroundColor Green
Write-Host "如果用户不存在,会出现*红色文字*提示未找到该用户.." -ForegroundColor Magenta
Write-Host "处理过程中会实时输出执行进度,请等待处理完成.." -ForegroundColor Yellow
"`n"
$Users = Import-CSV -Encoding Unicode H:\Temp\PublicFolder-powershell\PFPerm.csv 

foreach ($User in $Users){
    $publicFolders = Get-PublicFolder -identity \$($User.Identity) -recurse
    foreach ($folder in $publicFolders) {
        try {
            # 添加-ErrorAction Stop让所有错误触发catch逻辑
            Remove-PublicFolderClientPermission -Identity $folder.Identity -Confirm:$false -User $User.User -ErrorAction Stop
            Write-Host "已成功移除用户 $($User.User) 在公用文件夹 $($folder.Identity) 的权限" -ForegroundColor White
        }
        catch {
            Write-Host "移除用户 $($User.User) 在公用文件夹 $($folder.Identity) 的权限失败:$($_.Exception.Message)" -ForegroundColor Red
        }
    }
}

自定义精简输出可选方案

如果不需要逐文件夹展示结果,仅需要按CSV每行的用户维度输出处理统计,可以用以下逻辑:

foreach ($User in $Users){
    $successNum = 0
    $failNum = 0
    Get-PublicFolder -identity \$($User.Identity) -recurse | ForEach-Object {
        try {
            Remove-PublicFolderClientPermission -Identity $_.Identity -Confirm:$false -User $User.User -ErrorAction Stop
            $successNum++
        }
        catch {
            $failNum++
        }
    }
    Write-Host "用户 $($User.User) 处理完成:成功移除 $successNum 个文件夹权限,失败 $failNum 个"
}

该方案完全自定义输出格式,没有多余前缀和无关信息,也可以根据需求扩展添加日志写入、异常告警等逻辑。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.01 03:15:02