web-dev-qa-db-fra.com

Répertorier tous les comptes d'utilisateurs sur un système Windows via la ligne de commande

Je souhaite qu'une commande répertorie tous les comptes d'utilisateurs d'un système Windows (Vista, 7, etc.) de manière à pouvoir les parcourir à l'aide d'une commande ultérieure.

Net User me donne les données pour lesquelles je cherche, mais ajoute un tas d'autres fichiers indésirables qui pourraient rendre difficile l'analyse de l'utilisateur.

Idéalement, je recevrais une sortie comme:

> usercommand
user1
user2
user3
6
palswim

Si vous souhaitez parcourir les utilisateurs strictement dans la ligne de commande Windows, la méthode la plus simple consiste à combiner wmicet une boucle forname__.

for /f "tokens=* skip=1" %%a in ('wmic UserAccount get Name') do (
    if not "%%a"=="" (
        :: %%a is a variable containing an account name
    )
)

Le coeur de la commande est wmic UserAccount get Name, qui devrait afficher une liste de comptes. Vous voudrez peut-être filtrer, comme Karan l’a fait dans sa réponse VBScript, avec quelque chose comme wmic UserAccount where "LocalAccount=True" get Name. Tout champ est filtrable; pour les afficher tous, utilisez wmic UserAccount get (en omettant Namename__).

La boucle forsert simplement à analyser le résultat de la commande. Il ignore la première ligne (qui affiche l'en-tête de colonne) et la dernière ligne est ignorée avec la commande ifname__, car elle est vide. Voir for /? pour plus d'informations.

7
Bob

Pour tous ceux qui sont ici et qui cherchent simplement un moyen de répertorier tous les utilisateurs de votre machine en ligne de commande, sans avoir besoin d'une boucle. Il suffit de lancer cette commande:

Net User

Et il produira ce dont vous avez besoin dans ce format

-------------------------------------
User1    User2    User3    User4
The command completed successfully.
10
trueCamelType

Cela produira littéralement ce que vous demandez:

dir/b C:\Utilisateurs

0
Guest

Ce script Windows PowerShell fournira une liste d'utilisateurs dans un format de tableau. Ce n'est pas exactement ce que vous recherchez, mais il ne devrait pas être trop difficile de reformater la sortie dans un format que vous pourriez utiliser pour alimenter dans une autre commande.

$computerName = "$env:computername"
$computer = [ADSI]"WinNT://$computerName,computer" 
$computer.psbase.Children | Where-Object { $_.psbase.schemaclassname -eq 'user' } | Format-Table Name, Description -autoSize 
0
Richard Lucas
  1. Enregistrez les éléments suivants sous un nom tel que GetLocalUsers.vbs:

    Set colItems = GetObject("winmgmts:\\.\root\cimv2").ExecQuery("Select * from Win32_UserAccount Where LocalAccount=True")
    For Each objItem in colItems
        Wscript.Echo objItem.Name
    Next
    
  2. Exécuter à partir de la ligne de commande comme suit:

    cscript //NoLogo GetLocalUsers.vbs
    
0
Karan