Powershell表达式哈希表到CSV

Powershell表达式哈希表到CSV,powershell,Powershell,我试图将我从ActiveDirectory中提取的一些数据输出到CSV中,但输出不是我所期望的。如何将这些哈希表值导出到CSV中?我毫不怀疑有一个简单的答案,但我的谷歌fu今天似乎让我失望 foreach ($user in $user_data) { @{ name = 'DisplayName'; expression = { $user.DisplayName } }, @{ name = 'Email'; expre

我试图将我从ActiveDirectory中提取的一些数据输出到CSV中,但输出不是我所期望的。如何将这些哈希表值导出到CSV中?我毫不怀疑有一个简单的答案,但我的谷歌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
        } 

由于您使用的是计算属性语法,因此只需使用
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

对于您想要的输出,我想最好使用自定义对象数组

$users = @()
ForEach($user in $user_data)
{

    $users += New-Object PSObject -Property @{
        DisplayName = [String]$user.DisplayName;
        Email = [String]$user.EmailAddress;
        AccountName = [String]$user.SamAccountName;
        Description = [String]$user.Description;
        PasswordLastSet = [datetime]::FromFileTime($user.pwdLastSet);
        StaffNumber = [String]$user.pager;
        LastBadPasswordAttempt = [datetime]::FromFileTime($user.LastBadPasswordAttempt);
        LastLogonDate = [datetime]::FromFileTime($user.LastLogonDate);
        logonCount = [Int]$user.logonCount;
        Enabled = [Bool]$user.Enabled;
    }
}
$users | Export-Csv -Path $path2 -NoTypeInformation

既然可以输出自定义对象,为什么还要使用哈希表呢。谢谢你们,我知道我正在使用计算属性语法。这可能就是为什么我的谷歌搜索引擎没那么好用的原因。再次感谢