web-dev-qa-db-fra.com

Énumérez tous les comptes d'utilisateur dans un groupe de domaine Windows via la ligne de commande?

Je souhaite trouver une commande\Créer une commande pour répertorier tous les comptes d'utilisateurs avec tous les détails d'un contrôleur de domaine Windows (serveur 2012 R2) à partir d'un groupe spécifié.

L'utilisation de "utilisateurs nets" serait parfaite, mais je n'ai aucune idée de la production de cette commande pour tous les utilisateurs d'une action (c'est-à-dire que je dois écrire cette commande pour chaque utilisateur séparément si je veux apprendre à connaître les détails).

S'il n'y a aucun moyen d'utiliser des "utilisateurs nets" alors

WMIC USERACCOUNT

serait bien aussi. Mais j'ai aussi besoin d'obtenir des informations du groupe spécifié (administrateurs d'entreprise, administrateurs de domaine, etc.).
[.____] Je sais que je peux utiliser PowerShell, mais j'essaie de trouver une solution pour CMD.

2
Nick

Vous pouvez simplement utiliser PowerShell dans un script de lot pour exécuter la logique nécessaire à CMD pour obtenir le meilleur des deux mondes. J'ai placé un exemple simple ci-dessous que vous modifiez simplement la valeur variable GroupName pour être le groupe dont vous avez besoin pour interroger et vous fournira une liste des membres de ce groupe dans la CMD comme vous vous attendez.

Puisque vous avez dit que vous exécutez ceci sur un contrôleur de domaine, utilisez simplement get-adgroupmember et obtenez la tâche effectuée avec simple facilité tout en utilisant cmd comme vous le souhaitez.

Script de lots (membres d'un groupe uniquement)

Remarque: Ajouter le -Recursive Basculer pour obtenir des membres d'autres membres de groupe imbriqués, le cas échéant.

@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

Exemple de sortie

enter image description here


En outre, si vous avez besoin d'obtenir plus que des membres du groupe du groupe, vous pouvez enregistrer ce détail à une variable puis tuyer cet objet de réseau variable sur une boucle A Object-objet , puis itérer sur le get-aduseur et retirez les propriétés spécifiques de là au besoin.

Script de lots (membres de groupe plus autres détails)

@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

Exemple de sortie

enter image description here


Ressources supplémentaires

2
Pimp Juice IT