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
.
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.
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
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.
@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
Standard Alias pour Foreach-Object: The
'%'
symbole,ForEach
Standard alias pour la liste de formats:
fl