PowerShell导出CSV时如何新增并绑定非活跃用户(Inactive Users)列
解决方案
你可以在try块中给Active列赋值、Inactive列留空,catch块中给Inactive列赋值、Active列留空,同时将每次生成的对象追加到$Output数组中即可,修正后的代码如下:
# 初始化存储结果的空数组 $Output = @() foreach($sca in $scaColl) { if($sca.Email -ne "") { # 初始化每行的两个字段默认值为空 $rowProperties = @{ Active = "" Inactive = "" } try{ $ActiveUser = Get-AzureADUser -ObjectId $sca.Email | Select-Object -Property DisplayName $rowProperties.Active = $ActiveUser.DisplayName } catch { write-host "Error: User Not Found $($sca.Email)" -foregroundcolor Red $rowProperties.Inactive = $sca.Email } # 将当前行对象追加到结果数组 $Output += New-Object -TypeName PSObject -Property $rowProperties | Select-Object Active,Inactive } } $Output | Export-Csv -Path D:\CSV\myVar.csv -NoTypeInformation -Encoding UTF8
修改说明
- 新增空的
$Output数组存储所有导出行数据,避免导出时为空 - 每行对象统一包含
Active、Inactive两个字段,符合导出CSV的列要求 - try块查询到有效用户时,给
Active字段赋值,Inactive字段保留空值 - catch块触发用户不存在逻辑时,给
Inactive字段赋值为对应用户邮箱,Active字段保留空值 - 导出CSV新增
-Encoding UTF8参数避免中文乱码(如果不需要可以删除)
内容的提问来源于stack exchange,提问作者Murali Krishna
相关产品推荐
相关产品推荐

