AD неактивный пользователь с OU - PullRequest
0 голосов
/ 16 марта 2020

Я хотел бы получить список пользователей, которые не использовали свою учетную запись в течение последних 90 дней. И я хотел бы видеть, в каком OU / D C они не получают CN. Это возможно? Я использую PowerShell ISE для этого

У меня в настоящее время есть

Search-ADAccount -UsersOnly –AccountInActive –TimeSpan 90:00:00:00 
                 –ResultPageSize 2000 –ResultSetSize $null 
      | ?{$_.Enabled –eq $True} 
      | Select-Object Name, SamAccountName, DistinguishedName, LastLogonDate  
      | Export-CSV “C:\Temp\InActiveUsers.CSV” –NoTypeInformation

Это возвращает полное отличительное имя, и я должен впоследствии удалить CN в Excel, что является раздражающим беспорядком - я Я бы не хотел иметь дело с этим неоднократно.

Решение не должно основываться на search-adaccount, но я хочу, чтобы оно было в одном коде, поэтому мне не нужно получать список пользователей, а затем использовать этот список с другим битом кода, чтобы получить их OU / D C.

Ответы [ 2 ]

1 голос
/ 16 марта 2020

Если ваш домен работает как минимум Windows 2012, вы можете запросить атрибут msDS-parentdistname, который даст вам DN родительского объекта. Это составной атрибут, который означает, что он рассчитывается в тот момент, когда вы его запрашиваете. Вы должны специально попросить об этом, а это значит, что в этом случае я думаю, что вам придется передать результат в Get-ADUser, чтобы сделать это. Это может немного затормозить (есть более быстрые способы сделать это), но это должно сработать.

Search-ADAccount -UsersOnly –AccountInActive –TimeSpan 90:00:00:00 
                 –ResultPageSize 2000 –ResultSetSize $null 
      | ?{$_.Enabled –eq $True}
      | Get-AdUser -Properties Name, SamAccountName, "msDS-parentdistname", LastLogonDate
      | Select-Object Name, SamAccountName, "msDS-parentdistname", LastLogonDate
      | Export-CSV "C:\Temp\InActiveUsers.CSV" –NoTypeInformation
1 голос
/ 16 марта 2020

Вы можете получить старшее DN, разбив строку на первой неэкранированной запятой и отбросив часть CN:

# ...
| Select-Object Name,SamAccountName,@{Name='OU';Expression={($_.DistinguishedName -split '(?<!\\),',2)[1]}}, LastLogonDate
...