我最难从PowerShell获得以下输出。控制台只是在命令运行时停在闪烁的光标处,但是我等了20分钟左右,我仍然没有输出,无论是在powershell控制台中,还是在我尝试导出为csv时。我使用以下命令:
Search-ADAccount -AccountExpiring -DateTime "01/29/2017" | where {$_.ObjectClass -eq 'user'} | FT Name,ObjectClass -A | Export-Csv C:\temp
有人可以帮忙吗?我在互联网上搜索无济于事。
答案 0 :(得分:1)
您正在使用format-table
。如果您需要在该点之后处理数据,请不要使用任何 Format-*
cmdlet - 格式化使其无法实现。始终保存最终格式,并仅用于用户演示。
此外,您最终会在名为C:\
的{{1}}根目录中找到一个不完全可用作CSV文件的文件,至少来自Excel和其他读者,因为其他信息将由temp
插入。这将由Export-CSV
开关消除。
此外,您可以通过为-notypeinformation
指定-UsersOnly
开关并跳过Search-ADAccount
循环来加快速度 - 管道非常有用,但这样的构造可能会降低速度。尽可能向左侧过滤数据,如果可以在提供过滤器的cmdlet中进行,请在那里进行。
更正了应该按预期工作的脚本:
where-object
答案 1 :(得分:0)
如果这不是完美的代码,请原谅我,但是此脚本会让您的帐户在接下来的7天内过期。您可以更改$ DaysAhead变量以更改时间范围。
$maxPwdAge=(Get-ADDefaultDomainPasswordPolicy).MaxPasswordAge.Days;
$daysAhead = 7;
$dateMin=(get-date).AddDays(-$maxPwdAge);
$dateMax=$DateMin.AddDays($daysAhead);
Get-ADUser -filter {Enabled -eq $True -and PasswordNeverExpires -eq $False -and PasswordLastSet -gt 0} –Properties * | where {($_.PasswordLastSet) -ge $dateMin} |where {($_.PasswordLastSet) -le $dateMax} | select CN,EmailAddress,passwordLastSet | Format-Table;