首页 > 解决方案 > Powershell 表达式哈希表到 CSV

问题描述

我正在尝试将从 ActiveDirectory 中提取的一些数据输出到 CSV,但输出不是我所期望的。如何将这些哈希表值导出到 CSV?毫无疑问,对此有一个简单的答案,但我的 google fu 今天似乎让我失望了。

    foreach ($user in $user_data)
        {
            @{ name = 'DisplayName'; expression = { $user.DisplayName } },
            @{ name = 'Email'; expression = { $user.EmailAddress } },
            @{ name = 'AccountName'; expression = { $user.SamAccountName } },
            @{ name = 'Description'; expression = { $user.Description } },
            @{ name = "PasswordLastSet"; expression = { [datetime]::FromFileTime($user.pwdLastSet) } },
            @{ name = 'Staff Number'; expression = { $user.pager } },
            @{ name = 'LastBadPasswordAttempt'; expression = { $user.LastBadPasswordAttempt } },
            @{ name = 'LastLogonDate'; expression = { $user.LastLogonDate } },
            @{ name = 'logonCount'; expression = { $user.logonCount } },
            @{ name = 'Enabled'; expression = { $user.Enabled } } |
            Export-Csv $path2 -Append -NoTypeInformation
        } 

标签: powershell

解决方案


由于您使用的是计算属性语法,因此您可以简单地使用Select-Object而不是循环:

$user_data | Select-Object @{ name = 'DisplayName'; expression = { $_.DisplayName } },
        @{ name = 'Email'; expression = { $_.EmailAddress } },
        @{ name = 'AccountName'; expression = { $_.SamAccountName } },
        @{ name = 'Description'; expression = { $_.Description } },
        @{ name = "PasswordLastSet"; expression = { [datetime]::FromFileTime($_.pwdLastSet) } },
        @{ name = 'Staff Number'; expression = { $_.pager } },
        @{ name = 'LastBadPasswordAttempt'; expression = { $_.LastBadPasswordAttempt } },
        @{ name = 'LastLogonDate'; expression = { $_.LastLogonDate } },
        @{ name = 'logonCount'; expression = { $_.logonCount } },
        @{ name = 'Enabled'; expression = { $_.Enabled } } |
            Export-Csv $path2 -NoTypeInformation

推荐阅读