Se você importar o módulo do PowerShell do AD, não precisará usar objetos extras do diretório de serviços (pelo menos não nesta ocasião). Você pode usar o cmdlet Get-ADGroupMember
com -Resursive
e também deve encontrar seus usuários aninhados.
Editar: adicionei -Server
argumentos aos cmdlets do AD para que você possa especificar determinados DCs. Atributos de carimbo de data / hora podem diferir (eles também fazem meus 12 CDs). Verifique este blog para um writeup decente.
Isso obtém o horário do último logon e é um pouco mais fácil de ler:
$groupname = "name_of_AD_group"
Import-Module ActiveDirectory
Get-ADDomainController -Filter * | % {
$DC = $_
$group = Get-ADGroup -Identity $groupname -Server $DC.Name -ErrorAction SilentlyContinue
If ($group) {
$members = Get-ADGroupMember -Identity $group.Name -Recursive -Server $DC.Name -ErrorAction SilentlyContinue
ForEach ($member In $members) {
If (-not $member.objectClass -ieq "user") { Continue }
$user = Get-ADUser $member.SamAccountName -Server $DC.Name -ErrorAction SilentlyContinue
If ($user) {
$lastlogon = ($user | Get-ADObject -Properties lastLogon).LastLogon
New-Object PSObject -Property @{
"First Name" = $user.GivenName
"Last Name" = $user.Surname
"DC" = $DC.Name
"Last Logon" = [DateTime]::FromFileTime($lastlogon)
"SamAccountName" = $user.SamAccountName
}
} Else {
# $user not found on $DC
}
}
} Else {
# $groupname not found on $DC
}
} | ft -auto