从 get-qaduser 迁移到 get-aduser
migrate from get-qaduser to get-aduser
我已经使用 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(select 用户在某些天未登录)和 -CreatedBefore(为新创建的 ID 提供宽限期)。我想 select ID NotLogon 30 天并且不希望 ID 创建少于 30 天。
如果有人可以让我知道是否有内置属性或任何手动方法来实现这一点,我将不胜感激。
已编辑:
我通过以下方式解决了 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天未登录即可。
感谢任何帮助。
怎么样:
$LastLogonCutoff = (Get-Date).Date.AddDays(-30)
那是 30 天前的午夜。如果你想要它到第二个,使用 (Get-Date).AddDays(-30)
.
随后将 -Filter
更改为包括:
`-and (LastLogonTimeStamp -lt $LastLogonCutoff)`
还要注意 LastLogonTimeStamp
属性 是 not very accurate。我相信,使用已保存凭据的笔记本电脑离线登录不会触发。如果您没有启用 "Wait for network",客户端可能永远不会真正更新此值,IIRC。
我已经使用 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(select 用户在某些天未登录)和 -CreatedBefore(为新创建的 ID 提供宽限期)。我想 select ID NotLogon 30 天并且不希望 ID 创建少于 30 天。
如果有人可以让我知道是否有内置属性或任何手动方法来实现这一点,我将不胜感激。
已编辑: 我通过以下方式解决了 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天未登录即可。 感谢任何帮助。
怎么样:
$LastLogonCutoff = (Get-Date).Date.AddDays(-30)
那是 30 天前的午夜。如果你想要它到第二个,使用 (Get-Date).AddDays(-30)
.
随后将 -Filter
更改为包括:
`-and (LastLogonTimeStamp -lt $LastLogonCutoff)`
还要注意 LastLogonTimeStamp
属性 是 not very accurate。我相信,使用已保存凭据的笔记本电脑离线登录不会触发。如果您没有启用 "Wait for network",客户端可能永远不会真正更新此值,IIRC。