6

Я хотел бы, чтобы команда перечисляла все учетные записи пользователей в системе Windows (Vista, 7 и т.д.) Таким образом, чтобы я могла использовать их для последующей итерации с помощью следующей команды.

net user дает мне данные, которые я ищу, но добавляет кучу другого мусора, который может вызвать затруднения при разборе пользователей.

В идеале я хотел бы получить вывод, как:

> usercommand
user1
user2
user3

5 ответов5

11

Для тех, кто здесь, просто ищет способ перечислить всех пользователей на вашем компьютере в командной строке и не нуждается в цикле. Просто запустите эту команду:

net user

И он выведет то, что вам нужно в этом формате

-------------------------------------
User1    User2    User3    User4
The command completed successfully.
7

Если вы хотите перебирать пользователей строго в командной строке Windows, самым простым способом было бы сочетание wmic и цикла for .

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

Сердцем команды является wmic UserAccount get Name , который должен распечатать список учетных записей. Возможно, вы захотите выполнить некоторую фильтрацию, как это сделал Каран в своем ответе на VBScript, с помощью чего-то вроде wmic UserAccount where "LocalAccount=True" get Name . Любое поле фильтруется; чтобы просмотреть все из них, используйте wmic UserAccount get (без Name).

Цикл for просто используется для анализа выходных данных команды. Он пропускает первую строку (которая печатает заголовок столбца), а последняя строка пропускается с помощью команды if , поскольку она пуста. Смотрите for /? для дополнительной информации.

0

Это выведет буквально то, что вы просите:

dir /b C:\Users

0

Этот сценарий Windows PowerShell предоставит список пользователей в табличном формате, это не совсем то, что вы ищете, но не должно быть слишком сложно переформатировать вывод в формат, который вы могли бы использовать для подачи в другую команду.

$computerName = "$env:computername"
$computer = [ADSI]"WinNT://$computerName,computer" 
$computer.psbase.Children | Where-Object { $_.psbase.schemaclassname -eq 'user' } | Format-Table Name, Description -autoSize 
0
  1. Сохраните следующее с именем, подобным 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. Запустите из командной строки следующим образом:

    cscript //NoLogo GetLocalUsers.vbs
    

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .