Eu estava entediado em uma pausa para o almoço, então eu fiz isso para você.
$strLocalMachine = $env:computername
$arrLocalGroups = Get-CimInstance -ClassName Win32_Group -filter "Domain = '$strLocalMachine'"
$arrDomainGroups = Get-CimInstance -ClassName Win32_Group -filter "Domain = '[YOUR DOMAIN NAME HERE]'"
ECHO ""
ECHO "Local Groups"
ECHO ""
foreach($objLocalGroup in $arrLocalGroups)
{
$groupname = $objLocalGroup.Name
$group = [ADSI]"WinNT://./$groupname"
ECHO "-----$($objLocalGroup.caption)-----"
@($group.Invoke("Members")) | foreach {$_.GetType().InvokeMember("Name", 'GetProperty', $null, $_, $null)}
}
ECHO ""
ECHO "Domain Groups"
ECHO ""
foreach($objDomainGroup in $arrDomainGroups)
{
$groupname = $objDomainGroup.name
$groupmembers = Get-QADGroupMember $groupname
ECHO "-----$groupname-----"
foreach($entry in $groupmembers)
{
IF($entry.type -eq 'group')
{
Echo "$($entry.name)'n GROUP MEMBERS"
$subgroupmembers = Get-QADGroupMember $($entry.name)
foreach($member in $subgroupmembers){ECHO " $($member.name)"}
}
else{echo "$($entry.name)"}
$entry = $null
}
}
-
Isso tem uma dependência para os commandlets gratuitos da Quest para enumerar as associações de grupos de domínio . Você poderia alterá-lo para fazer o mesmo com os cmdlets do Microsoft AD, caso tenha instalado o RSAT ou executado em um DC.
-
Eu não testei isso em várias máquinas, então não posso prometer o quão bem ele vai funcionar além do meu teste Win 7 box, mas isso deve ser ok, enquanto você estiver executando como administrador de domínio.
-
Sinto que a saída dos grupos de domínios é muito alta para o PC membro do domínio. O comando
Get-CimInstance -ClassName Win32_Group -filter "Domain = '[YOUR DOMAIN NAME HERE]'"
retornou muito mais do que eu esperava para o YMMV, mas se eles são os grupos corretos, ele deve percorrer e listar as naves-membro. -
Não consigo descobrir como identificar se os membros dos grupos locais são um usuário ou grupo. A linha:
@($group.Invoke("Members")) | foreach {$_.GetType().InvokeMember("Name", 'GetProperty', $null, $_, $null)}
deve nos permitir invocar outro nome que não seja o nome, mas não consigo fazê-lo funcionar. Se alguém puder esclarecer isso para você, você poderá usar isso para listar os membros dos grupos locais.
espero que isso ajude.