我正在尝试编写一个Powershell脚本,该脚本标识已经90天没有登录的用户,但我一直收到以下错误消息:
无法找到"op_Subtraction“的重载,参数计数为"2”。起初,我认为这是一个变量类型不匹配,但看看变量的减法,它看起来很好。
PS C:\> $today.GetType()
IsPublic IsSerial Name BaseType
-------- -------- ---- --------
True True DateTime System.ValueType
PS C:\> $users[198].LastLogonDate.GetType()
IsPublic IsSerial Name BaseType
-------- -------- ---- --------
True True DateTime System.ValueType$today = Get-Date
$days = 90
$users = Get-ADUser -Properties * -Filter *
foreach ($i in $users)
{
$difference = $today - $i.LastLogonDate
#Write-Host $i.Name + $difference.Days
if ($difference.Days -ge $days){Write-Host $i.name " hasn't logged on in 90 days"}
elseif ($i.LastLogonDate -eq $null) {Write-Host $i.name " has null value"}
else {Write-Host " No Value"}
}思想??
谢谢!!
发布于 2013-07-29 22:48:49
对于从未登录的用户,您将得到错误信息。LastLogonDate属性为null,因此不能从$today中减去它。为了防止错误,首先在if语句中检查属性是否为null,否则只尝试减法。
foreach ($i in $users) {
if ($i.LastLogonDate -eq $null) {
Write-Host $i.name " has null value"
} else {
$difference = $today - $i.LastLogonDate
if ($difference.Days -ge $days) {
Write-Host $i.name " hasn't logged on in 90 days"
} else {
Write-Host " No Value"
}
}
}顺便说一句,我不太确定您打算在哪种情况下输出“No Value"消息,但这将显示给在过去90天中登录的任何用户。
发布于 2013-07-30 06:49:14
这个怎么样:
Search-ADAccount -AccountInactive -TimeSpan "90" -UsersOnlyhttps://stackoverflow.com/questions/17934662
复制相似问题