【问题标题】:migrate from get-qaduser to get-aduser从 get-qaduser 迁移到 get-aduser
【发布时间】:2015-01-02 15:22:35
【问题描述】:

我已经使用 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 提供宽限期)。我想选择 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)

:)

现在我只需要过滤不登录超过 30 天的 ID。 任何帮助表示赞赏。

【问题讨论】:

    标签: powershell active-directory


    【解决方案1】:

    怎么样:

    $LastLogonCutoff = (Get-Date).Date.AddDays(-30)
    

    那是 30 天前的午夜。如果您想要第二个,请使用(Get-Date).AddDays(-30)

    随后将-Filter 更改为包括:

    `-and (LastLogonTimeStamp -lt $LastLogonCutoff)`
    

    还要注意LastLogonTimeStamp 属性是not very accurate。我相信,使用已保存凭据的笔记本电脑离线登录不会触发。如果您没有启用“等待网络”,客户端可能永远不会真正更新此值,IIRC。

    【讨论】:

    • 嗨培根,是的,我也想通了,只需遵循 CreationCutOff 的相同概念 :) 我们没有连接到我们的域的笔记本电脑,所以不用担心。是的,我也知道 DC 之间 LastLogonTimeStamp 同步的延迟。我的完整脚本实际上将继续从每个 DC 检索这些 ID 的 LastLogon 日期,我相信这是我在 AD 中可以获得的最新登录信息。非常感谢! :)
    • 嗨,我还有一个问题,我正在考虑是否可以再次获得帮助而不是打开一个新线程。我在下面有 SET-ADUSER 命令: Set-ADUser $user.SamAccountName -Description "$TodaysDate - Account Disabled due to Inactivity - $($user.Description)" -Enabled $False |移动 ADObject -TargetPath $DisabledOU。除 MOVE-ADOBJECT 外,一切正常。 SET-ADUSER 允许这种方式的管道吗?
    • 只能让 MOVE-ADOBJECT 与 GET-ADUSER 而不是 SET-ADUSER 一起工作。所以让我别无选择,只能使用 2 行命令。谢谢。
    • @nlks 将-Passthru 常用参数添加到Set-AdUser 以返回受影响用户的对象。
    • 是的,这很有效!我还在学习中,再次感谢您的指导。
    猜你喜欢
    • 2012-07-23
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-10-24
    • 1970-01-01
    • 1970-01-01
    • 2015-08-18
    相关资源
    最近更新 更多