Elencare tutti gli account utente in un gruppo di domini Windows tramite riga di comando?


2

Vorrei trovare \ create un comando per elencare tutti gli account utente con tutti i dettagli su un controller di dominio Windows (Server 2012 R2) da un gruppo specificato.

L'uso di "utenti di rete" sarebbe perfetto, ma non ho idea di come eseguire l'output di questo comando per tutti gli utenti in una sola azione (cioè devo scrivere questo comando per ogni utente separatamente se voglio conoscere i dettagli).

Se non c'è modo di usare "Utenti Net", allora

WMIC USERACCOUNT

sarebbe bello anche. Ma ho anche bisogno di ottenere informazioni dal gruppo specificato (Enterprise Admins, Domain Admins ecc.).
So che posso usare PowerShell, ma sto cercando di trovare una soluzione per CMD.

Risposte:


2

Puoi semplicemente usare PowerShell all'interno di uno script batch per eseguire la logica necessaria in cmd per ottenere il meglio da entrambi i mondi. Di seguito ho riportato un semplice esempio del fatto che è sufficiente modificare il GroupNamevalore della variabile in modo che sia il gruppo di cui è necessario eseguire una query e che fornirà un elenco dei membri di quel gruppo in cmd proprio come previsto.

Dal momento che hai detto che lo stai eseguendo su un controller di dominio, usa semplicemente Get-ADGroupMember e svolgi il compito con facilità con facilità usando cmd come desideri.

Script batch (solo membri di un gruppo)

Nota: aggiungere l' -Recursiveopzione per ottenere membri di altri membri del gruppo nidificati, se applicabile.

@ECHO OFF

SET "GroupName=Domain Admins"
CALL :DynamicPSScriptBuild

SET PowerShellDir=C:\Windows\System32\WindowsPowerShell\v1.0
CD /D "%PowerShellDir%"
Powershell -ExecutionPolicy Bypass -Command "& '%PSScript%'"
PAUSE
EXIT /B

:DynamicPSScriptBuild
SET PSScript=%temp%\~tmp%~n0.ps1
IF EXIST "%PSScript%" DEL /Q /F "%PSScript%"
ECHO Get-ADGroupMember -Identity "%GroupName%" ^| Select-Object Name>>"%PSScript%"
GOTO :EOF

Esempio di output

inserisci qui la descrizione dell'immagine


Inoltre, se è necessario ottenere più di un semplice membro del gruppo del gruppo di cui si esegue la query, è possibile salvare i dettagli in una variabile e quindi reindirizzare l'oggetto variabile dell'array su un ciclo ForEach-Object e quindi iterare su Get-ADUser e estrarre le proprietà specifiche da lì, se necessario.

Script batch (membri del gruppo più altri dettagli)

@ECHO OFF

SET "GroupName=Domain Admins"
CALL :DynamicPSScriptBuild

SET PowerShellDir=C:\Windows\System32\WindowsPowerShell\v1.0
CD /D "%PowerShellDir%"
Powershell -ExecutionPolicy Bypass -Command "& '%PSScript%'"
PAUSE
EXIT /B

:DynamicPSScriptBuild
SET PSScript=%temp%\~tmp%~n0.ps1
IF EXIST "%PSScript%" DEL /Q /F "%PSScript%"
ECHO $m = Get-ADGroupMember -Identity "domain admins" ^| Select-Object SamAccountName>>"%PSScript%"
ECHO $m ^| %% {Get-ADUser $_.SamAccountName -Properties * ^| Select SamAccountName, DisplayName, Description, accountExpires, ScriptPath, HomeDrive ^| fl }>>"%PSScript%"
GOTO :EOF

Esempio di output

inserisci qui la descrizione dell'immagine


Ulteriori risorse


Hm. Grazie! Userò PowerShell se non trovo una soluzione per CMD. Sembra che l'uscita non sia molto istruttiva. Quindi utilizzo "Utenti netti" e ottengo molte informazioni come: commento, ultimo aggiornamento password, ultimo accesso, appartenenza al gruppo globale ecc. Immagino di dover modificare "Seleziona nome oggetto" in "Seleziona"?
Nick,

Sì. "Vorrei trovare \ create un comando per elencare tutti gli account utente con tutti i dettagli" - mb la mia formulazione non era davvero buona.
Nick,

@Nick Tutto quel dettaglio per account è .... Get-ADUser "<username>" -Properties *da quello che posso dire con i test, quindi vuoi conoscere i membri del gruppo e quindi per ognuno di quei membri vuoi anche tutti i dettagli da quel comando?
Pimp Juice IT

@Nick Ho appena aggiornato la mia risposta con maggiori dettagli e un piccolo esempio, ma è così che funziona e non è poi così difficile. Puoi ampliarlo e ottenere altre proprietà e valori, inserire un formato diverso se necessario, ecc. Aiutami a capire più precisamente quali valori hai bisogno e vedrò se posso aiutare ulteriormente, ma questa è la logica che potresti usare e ottenere il resto è banale da lì.
Pimp Juice IT

@ Nick Infine, FYI nel caso in cui si è interessati ... ho usato comandi come ldifde, dsget groupe dsquery groupper scopi simili in passato, ma PowerShell è il modo più semplice e più robusto. Alcuni di questi comandi diventano lunghi e brutti e non ricordo se fornisce tutti i dettagli richiesti. Anch'io stavo cercando una soluzione cmd molti anni fa ed è quello che ho scoperto da una vecchia serie di script che ho usato in passato .... PowerShell dovrebbe essere la strada da percorrere per gli amministratori di dominio di Windows con questa attività penso. Puoi comunque eseguirlo in batch o cmd.exe in entrambi i modi. Buona fortuna a prescindere !!
Pimp Juice IT

0

net group WHATEVERelenca i membri del gruppo WHATEVER.

L'equivalente per un gruppo locale è net localgroup WHATEVER.


Sfortunatamente non include le appartenenze ai gruppi nidificati (né menziona nemmeno che il gruppo ha altri gruppi come membri, rendendo il suo output in qualche modo fuorviante).
Grawity
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.