我有一个小脚本,可以检索AD中特定OU中所有用户的LastLogonTimestamp和SAMAccount,并将时间戳转换为日期,并从字符串中仅提取日期。那部分工作正常。然后我想将它输出到CSV,这样它就可以在Excel中打开并完美地组成列,看起来很漂亮。
我尝试过ConvertTo-Csv和Export-Csv,但一直不成功。问题是我是Powershell的新手。这是我的第一个脚本,我不完全理解这是如何工作的。我的剧本可能非常混乱和不合逻辑,但它到目前为止完成了工作。
请帮忙。感谢。
$userlist = Get-ADUser -SearchBase "OU=IT,DC=whatever,DC=com,DC=au" -Filter * -Properties * | Select-Object -Property Name,LastLogonTimestamp,SAMAccountName | Sort-Object -Property Name
$userlist | ForEach-Object {
$last = $_.LastLogonTimestamp;
$ADName = $_.SAMAccountName;
$tstamp = w32tm /ntte $last;
if($tstamp.Length -lt "40"){}else
{
$ADDate = [DateTime]::Parse($tstamp.Split('-')[1]).ToString("dd/MM/yyyy")
write-host $ADDate;
write-host $ADName;
}
}
答案 0 :(得分:4)
您必须为每个用户创建对象并将其传递给Export-CSV
cmdlet:
$usersList | %{
# current logic
$user = new-object psobject
$user | add-member -membertype noteproperty -name LastLogon -value $last
$user | add-member -membertype noteproperty -name ADName -value $ADName
$user | add-member -membertype noteproperty -name ADDate -value $ADDate
$user
} | export-csv test.csv -notype
填充对象的替代语法:
$properties = @{"LastLogon" = $last; "ADName" = $ADName; "ADDate" = $ADDate}
$user = new-object psobject -property $properties