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

PowerShell脚本导出CSV时多属性合并同一列问题求助

问题解决与脚本优化

核心问题原因

你用Out-File导出CSV是错误的——Out-File只是将对象的字符串形式输出到文件,不会处理结构化的对象属性,导致多个属性被挤到同一列。正确的做法是用Export-Csv,它专门用于将PowerShell对象导出为标准CSV格式。

修正后的脚本

# 计算14天后的日期(筛选密码将在14天内过期的用户)
$ExpiryThreshold = (Get-Date).AddDays(14).Date
# 初始化存储结果的集合
$pwExpList = [System.Collections.Generic.List[System.Object]]::new()

# 你的OU列表,自行补充
$OUs = @(
    # "OU=Users,DC=domain,DC=com"
    # 更多OU...
)

foreach($OU in $OUs) {
    # 只获取需要的属性,避免-properties *带来的性能浪费
    $Users = Get-ADUser -Filter * -SearchBase $OU -Properties PasswordLastSet, EmailAddress, msDS-UserPasswordExpiryTimeComputed
    foreach($User in $Users) {
        # 跳过无有效邮箱的用户
        if([string]::IsNullOrEmpty($User.EmailAddress) -or $User.EmailAddress -like 'noreply*') {
            continue
        }
        
        # 用AD计算的实际密码过期时间,比硬加180天更准确(适配不同密码策略)
        if($User.'msDS-UserPasswordExpiryTimeComputed') {
            $pwExpires = [DateTime]::FromFileTime($User.'msDS-UserPasswordExpiryTimeComputed')
            # 判断是否在14天内过期
            if($pwExpires -le $ExpiryThreshold) {
                $userObj = [PSCustomObject]@{
                    Email = $User.EmailAddress
                    PwExpires = $pwExpires
                }
                $pwExpList.Add($userObj)
            }
        }
    }
}

# 导出为标准CSV,-NoTypeInformation避免生成类型信息行(PowerShell 5及之前需要)
$pwExpList | Export-Csv -FilePath "G:\pwExpList2.csv" -NoTypeInformation -Encoding UTF8

关键优化点

  • 替换Out-File为Export-Csv:确保结构化属性被导出为独立列,-Encoding UTF8避免中文乱码(如果有)
  • 避免-properties *:只获取PasswordLastSet、EmailAddress、msDS-UserPasswordExpiryTimeComputed三个必要属性,提升脚本执行速度
  • 使用AD原生过期时间属性:msDS-UserPasswordExpiryTimeComputed是AD根据密码策略自动计算的实际过期时间,比硬编码AddDays(180)更准确(比如如果你的域密码策略是90天,硬加180天就完全错误)
  • 更严谨的邮箱判断:用[string]::IsNullOrEmpty替代-notlike '',覆盖$null或空字符串的情况

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.19 12:42:36