我正在运行一个简单的脚本来列出我的所有域用户,他们上次登录时,他们的帐户是否已启用,以及他们是哪些组成员。
我有两个问题。一,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
答案 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
经过测试,该代码对我有用。