Listar todas as contas de usuário em um sistema Windows via linha de comando

6

Eu gostaria que um comando listasse todas as contas de usuário em um sistema Windows (Vista, 7, etc.) de uma maneira que eu possa usar para iterar através delas com um comando subsequente.

net user me fornece os dados para os quais estou pesquisando, mas acrescenta um monte de lixo que causaria dificuldades na análise dos usuários.

O ideal seria receber uma saída como:

> usercommand
user1
user2
user3
    
por palswim 18.06.2013 / 08:31

4 respostas

6

Se você deseja iterar usuários estritamente na linha de comando do Windows, a maneira mais fácil seria uma combinação de wmic e for loop.

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

O coração do comando é wmic UserAccount get Name , que deve imprimir uma lista de contas. Você pode querer fazer alguma filtragem, como Karan fez em sua resposta VBScript, com algo como wmic UserAccount where "LocalAccount=True" get Name . Qualquer campo é filtrável; para ver todos eles, use wmic UserAccount get (omitindo Name ).

O loop for é simplesmente usado para analisar a saída do comando. Ele pula a primeira linha (que imprime o cabeçalho da coluna) e a última linha é ignorada com o comando if , pois está vazia. Veja for /? para mais informações.

    
por 18.06.2013 / 10:19
11

Para quem está aqui apenas procurando uma maneira de listar todos os usuários em sua máquina na linha de comando e não precisa de um loop. Apenas execute este comando:

net user

E ele produzirá o que você precisa neste formato

-------------------------------------
User1    User2    User3    User4
The command completed successfully.
    
por 12.07.2016 / 22:46
0

Este script Windows PowerShell fornecerá uma lista de usuários em um formato de tabela, não é exatamente o que você está procurando, mas não deve ser muito difícil reformatar a saída em um formato que você possa use para alimentar outro comando.

$computerName = "$env:computername"
$computer = [ADSI]"WinNT://$computerName,computer" 
$computer.psbase.Children | Where-Object { $_.psbase.schemaclassname -eq 'user' } | Format-Table Name, Description -autoSize 
    
por 18.06.2013 / 09:33
0
  1. Salve o seguinte com um nome como 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. Execute a partir da linha de comando da seguinte forma:

    cscript //NoLogo GetLocalUsers.vbs
    
por 18.06.2013 / 10:04