如何让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
相关产品推荐
相关产品推荐

