【发布时间】:2015-12-15 15:42:51
【问题描述】:
我正在编写一个基本的 PowerShell 脚本,该脚本输入一对日期,然后获取密码在这些时间之间到期的所有帐户。我想以与Export-Csv 兼容的方式将数据输出到控制台。这样,运行脚本的人既可以在控制台中查看,也可以获取文件。
这是我的脚本:
[CmdletBinding()]
param(
[string]$StartDate = $(throw "Enter beginning date as MM/DD/YY"),
[string]$EndDate = $(throw "Enter end date as MM/DD/YY")
)
$start = Get-Date($StartDate)
$end = Get-Date($EndDate)
$low = $start.AddDays(-150)
$high = $end.AddDays(-150)
$passusers = Get-ADUser -Filter { PasswordLastSet -gt $low -and PasswordLastSet -lt $high -and userAccountControl -ne '66048' -and userAccountControl -ne '66080' -and enabled -eq $true} -Properties PasswordLastSet,GivenName,DisplayName,mail,LastLogon | Sort-Object -Property DisplayName
$accts = @()
foreach($user in $passusers) {
$passLastSet = [string]$user.PasswordLastSet
$Expiration = (Get-Date($passLastSet)).addDays(150)
$obj = New-Object System.Object
$obj | Add-Member -MemberType NoteProperty -Name Name -Value $user.DisplayName
$obj | Add-Member -MemberType NoteProperty -Name Email -Value $user.mail
$obj | Add-Member -MemberType NoteProperty -Name Expiration -Value $expiration
$accts += $obj
}
Write-Output ($accts | Format-Table | Out-String)
这完美地打印到控制台:
Name Email Expiration
---- ----- ----------
Victor Demon demonv@nsula.edu 1/3/2016 7:16:18 AM
但是,当使用 | Export-Csv 调用时,它不会:
#TYPE System.String
Length
5388
我尝试过使用对象和数据表的多种变体,但似乎我只能让它在控制台或 CSV 上工作,而不是同时用于两者。
【问题讨论】: