在Get-AdUser中格式化MemberOf字符串

时间:2014-10-15 18:39:35

标签: powershell

我正在运行一个简单的脚本来列出我的所有域用户,他们上次登录时,他们的帐户是否已启用,以及他们是哪些组成员。

我有两个问题。一,lastLogon值不是日期/时间格式。第二,更重要的是,当我真正想要的是CN值时,MemberOf列列出了关于组对象的所有内容。此外,对于多个组中的用户,一些信息被截断。

我该如何解决这个问题?

这是我正在运行的脚本:

Get-AdUser -Filter * -Properties Name,Description,Enabled,lastLogon,MemberOf | FT Name,Description,Enabled,lastLogon,MemberOf -autosize | format-list | out-string -width 4096 | Out-File C:\test.txt

1 个答案:

答案 0 :(得分:2)

所以,首先我建议将信息输出为CSV而不是尝试将其输出到文本文件中。试图将所有帐户放在一行是非常不切实际的。例如,我的用户对象在我的环境中有133个不同的组。

其次,我会放弃将其作为一个衬垫并使用实际脚本来构建可导出为CSV的自定义对象。这是一些顶级的代码,可以帮助您朝着正确的方向前进。如果我有机会,我会在以后制作实际的功能测试代码。

$results = @()
$users = Get-ADUser -Filter * -Properties Name,Description,Enabled,lastLogon,MemberOf
foreach($user in $users){
    $lastlogon = [datetime]::FromFileTime($user.lastlogon)
    foreach($group in $user.MemberOf){
        $temp = New-Object PSCustomObject -Property @{'Name' = $user.Name;
                                                      'Description' = $user.Description;
                                                      'Enabled' = $user.Enabled;
                                                      'LastLogon' = $lastlogon;
                                                      'Group' = '';
        }
        $temp.Group = $group.Split(',')[0]
        $results += $temp
    }
}
$results | Export-CSV C:\Temp\SomeFile.csv -NoTypeInformation

经过测试,该代码对我有用。