我已经设置了我的脚本,使用Quest的AD工具GET-QADUSER在我的Win 2003 AD服务器中禁用非活动用户,现在我要将AD迁移到Win 2008 R2。由于存在Active Directory模块且Quest's tool不再可以免费下载(是吗?),我将迁移到GET-ADUSER。
我要转换自:
Foreach ($ou in $searchBase) {
#$inactUsr += @(Get-QADUser -SearchRoot $ou -Enabled -PasswordNeverExpires:$false -NotLoggedOnFor $inactiveDays -CreatedBefore $creationCutoff -SizeLimit $sizeLimit | Select-Object Name,SamAccountName,LastLogonTimeStamp,Description,passwordneverexpires,canonicalName | Sort-Object Name)
}
为:
$inactUsr += @(Get-ADUser -SearchRoot $ou -Filter 'enabled -eq $true -and PasswordNeverExpires -eq $False' -Properties Name,SamAccountName,LastLogonTimeStamp,Description,passwordneverexpires,canonicalName | Select Name,SamAccountName,@{N='LastLogonTimeStamp'; E={[DateTime]::FromFileTime($_.LastLogonTimeStamp)}},Description,passwordneverexpires,canonicalName | Sort Name)
我几乎就在那里,只留下-NotLogonFor(选择那些未登录某些天的用户)和-CreatedBefore(为新创建的ID提供宽限期)。我想在30天内选择ID NotLogon,并且不要在不到30天的时间内创建ID。
感谢是否有人可以告诉我是否有内置属性或任何手动方法来实现这一点。
编辑: 我把CreatedBefore解决了:
$inactUsrdraft += @(Get-ADUser -SearchBase $ou -Filter 'enabled -eq $true -and PasswordNeverExpires -eq $False -and whenCreated -le $CreationCutOff' -Properties Name,SamAccountName,LastLogonTimeStamp,Description,passwordneverexpires,canonicalName | Select Name,SamAccountName,@{N='LastLogonTimeStamp'; E={[DateTime]::FromFileTime($_.LastLogonTimeStamp)}},Description,passwordneverexpires,canonicalName | Sort Name)
:)
现在我只需要过滤ID而不是登录超过30天。 任何帮助表示赞赏。
答案 0 :(得分:1)
怎么样:
$LastLogonCutoff = (Get-Date).Date.AddDays(-30)
30天前的那个午夜。如果您想要它,请使用(Get-Date).AddDays(-30)
。
然后将-Filter
更改为包括:
`-and (LastLogonTimeStamp -lt $LastLogonCutoff)`
还要注意LastLogonTimeStamp
属性为not very accurate。我相信,笔记本电脑登录网络使用保存的凭据不会触发。如果你没有"等待网络"启用后,客户端可能永远不会实际更新此值,IIRC。