powershell - 从广告中随机选择用户

  显示原文与译文双语对照的内容

我们的任务是创建一个每季度审查随机员工网络流量的流程。 我已经在Powershell中启动了一个脚本,从特定的OU中选择 10个随机用户,但我仍然得到一些不必要的数据。 我需要帮助进一步过滤名单。 输出为我提供了已经禁用和离开的用户,以及在长时间内没有签名的员工。 我想搜索在最近 3个月内修改过, 有电子邮件地址 下面是我目前所使用的代码示例。


Get-ADUser -SearchBase"ou=ouname,ou=ouname,dc=domainname,dc=suffix" -Filter * | Select-Object -Property Name | Sort-Object{Get-Random} | select -First 10



时间:

尝试这个:


$timeFrame = (get-Date).AddDays(-90)



get-aduser -SearchBase 'ou=ouname,ou=ouname,dc=domainname,dc=suffix' -Filter * -Properties * | 


 Where-Object {$_.whenChanged -gt $timeFrame -and $_.mail -ne $null} |


 Select-Object -Property Name | Sort-Object{Get-Random} | select -First 10



更改 -Filter 值:


# LastLogontimeStamp is not guaranteed to be updated on every login, so 30 days + 14 days margin


$threshold = (Get-Date).AddDays(-44).ToFileTime()


Get-ADUser -Filter {Enabled -eq $true -and LastLogontimeStamp -gt $threshold} -SearchBase"ou=ouname,ou=ouname,dc=domainname,dc=suffix" | Sort-Object {Get-Random} | Select Name -First 10



这个过滤器将确保广告只返回已经启用的用户,并且它的lastLogontimeStamp 值在上个月和半年内已经更新。

基于启用的用户的过滤器:


$timeFrame = (get-Date).AddDays(-90)


get-aduser -SearchBase 'YourOU,DC=Domain,DC=com' -Filter * -Properties * | 


Where-Object {$_.whenChanged -gt $timeFrame -and $_.mail -ne $null -and $_.Enabled -eq $true} |


Select-Object -Property Name | Sort-Object{Get-Random} | select -First 10







Get-ADUser -Properties name, mail, lastlogondate -Filter {enabled -eq $True} -SearchBase"ou=ouname,ou=ouname,dc=domainname,dc=suffix" | select name, mail, lastlogondate | where { $_.lastlogondate -gt (Get-Date).AddDays(-90) -and $_.mail -ne $null }




这是一个开始。

...