从多个OU查找Active Directory中的非活动计算机对象

时间:2018-12-31 03:59:36

标签: powershell active-directory

我正在努力制作PowerShell脚本,无法在线找到完整的解决方案。

基本上,脚本需要具有多种功能:

  1. 需要根据30、60、90天的LastLogon属性返回不活动的计算机对象。
  2. 需要从多个OU返回结果,而不仅仅是一个。
  3. 需要排除其中包含笔记本电脑一词的所有OU。
  4. 需要将.csv中的结果通过电子邮件发送到电子邮件地址。

请在这里找到我cr脚的开始,输出30,60,90天,但仅来自一个OU。 PowerShell Inactive Computers

1 个答案:

答案 0 :(得分:0)

由于获得了所需的结果,因此只需要进行迭代即可。

要从AD获取所有OU的所有列表,可以使用以下命令。

$OUs=Get-ADOrganizationalUnit -Filter *  | Select-Object -ExpandProperty DistinguishedName

要排除其中包含“笔记本电脑”一词的任何OU,可以使用以下代码段。

$OUsWithoutLaptop=$OUs | where {$_ -notlike '*Laptop* '}

然后,您可以像下面的示例中那样使用迭代。

foreach ($item in $OUsWithoutLaptop)
{
    $time = (Get-Date).Adddays(-60)
Get-ADComputer -SearchBase $item -Filter {LastLogon -lt $time -and enabled -eq $true} -Properties LastLogon, description| ? {$_.distinguishedname -notlike '*OU=SydLaptops,OU=SydComputers,OU=Sydney,DC=domain,DC=domain,DC=domain'} |
select-object Name,DistinguishedName, description, enabled,@{Name="Stamp"; Expression={[DateTime]::FromFileTime($_.LastLogon)}} | export-csv $logfile60 -notypeinformation
}