Последний запрос на вход в Powershell. Помогите настроить массив чтобы все продуманные контроллеры домена - PullRequest
0 голосов
/ 01 ноября 2019

Этот скрипт ниже работает, но каждая попытка циклически повторять все мои контроллеры домена терпит неудачу. Как добавить массив для прохождения всех этих подразделений на всех моих контроллерах домена. Заранее спасибо!

$OUs= “OU=Test1,OU=Test1,OU=Test1,OU=Test1,OU=All Users,DC=domain,DC=local",
"OU=Test2,OU=Test2,OU=Test2,OU=All Users,OU=Test2,DC=domain,DC=local",
"OU=Test3,OU=Test3,OU=Test3,OU=All Users,OU=Test3,DC=domain,DC=local",
"OU=test4,OU=test4,OU=test4,OU=All Users,OU=test4,DC=domain,DC=local", 
"OU=Test5,OU=test5,OU=Test5,OU=All Users,OU=test5,DC=domain,DC=local”

$OUs | ForEach-Object 
  {
    Get-ADUser -Filter {Enabled -eq $TRUE} -SearchBase $_ -Properties Name,SamAccountName,LastLogonDate | 
      Where-Object {($_.LastLogonDate -lt (Get-Date).AddDays(-7)) -and ($_.LastLogonDate -ne $NULL)}
  } | 
  Sort LastLogonDate | 
  Format-Table -Property Name,SamAccountName,LastLogonDate, DistinguishedName | 
  Out-String

Ответы [ 2 ]

0 голосов
/ 01 ноября 2019

Вы упоминаете о циклическом переключении через контроллеры домена, но затем продолжаете спрашивать о подразделениях. Я подозреваю, что вам нужны контроллеры домена, потому что каждый контроллер домена может иметь разное время последнего входа для пользователя.

Вы можете опустить -SearchBase и выполнить поиск по всем подразделениям, если вы хотите получить эти данные для всех пользователей.

$Domains = Get-ADDomainController -Filter * #Note, this shows all DCs- you may have some without ADWS Installed, which won't handle the WHERE. 
foreach ($domain in $Domains) {
    Get-ADUser -Filter {Enabled -eq $TRUE} -Server $domain -Properties Name,SamAccountName,LastLogonDate |
        Where {($_.LastLogonDate -lt (Get-Date).AddDays(-7)) -and ($_.LastLogonDate -ne $NULL)} |
             Export-CSV -Path 'UsersNotRecentlyLoggedIn.CSV' -Append
}

Если вам нужен только один DC, но все OU

$Domains = Get-ADDomainController -Discover -Service ADWS 
foreach ($domain in $Domains) {
    Get-ADUser -Filter {Enabled -eq $TRUE} -Server $domain -Properties Name,SamAccountName,LastLogonDate |
        Where {($_.LastLogonDate -lt (Get-Date).AddDays(-7)) -and ($_.LastLogonDate -ne $NULL)} |
             Export-CSV -Path 'UsersNotRecentlyLoggedIn.CSV' -Append
}
0 голосов
/ 01 ноября 2019

Ниже у вас теперь есть массив ваших OU. Пожалуйста, попробуйте, подходит ли вам это сейчас.

$OUs= @(
  “OU=Test1,OU=Test1,OU=Test1,OU=Test1,OU=All Users,DC=domain,DC=local",
  "OU=Test2,OU=Test2,OU=Test2,OU=All Users,OU=Test2,DC=domain,DC=local",
  "OU=Test3,OU=Test3,OU=Test3,OU=All Users,OU=Test3,DC=domain,DC=local",
  "OU=test4,OU=test4,OU=test4,OU=All Users,OU=test4,DC=domain,DC=local", 
  "OU=Test5,OU=test5,OU=Test5,OU=All Users,OU=test5,DC=domain,DC=local”
)

Я бы также предложил разбивать вашу линию после каждой трубы, чтобы отрезать ее. Это облегчает чтение для вас и ваших коллег.

$OUs | ForEach-Object 
  {
    Get-ADUser -Filter {Enabled -eq $TRUE} -SearchBase $_ -Properties Name,SamAccountName,LastLogonDate | 
      Where-Object {($_.LastLogonDate -lt (Get-Date).AddDays(-7)) -and ($_.LastLogonDate -ne $NULL)}
  } | 
  Sort LastLogonDate | 
  Format-Table -Property Name,SamAccountName,LastLogonDate, DistinguishedName | 
  Out-String

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...