web-dev-qa-db-ja.com

コマンドラインを介してWindowsシステム上のすべてのユーザーアカウントを一覧表示する

Windows(Vista、7など)システムのすべてのユーザーアカウントを一覧表示して、後続のコマンドでユーザーアカウントを反復処理できるようにしたいと考えています。

Net Userは検索対象のデータを提供しますが、ユーザーの解析を困難にする他のジャンクを追加します。

理想的には、次のような出力を受け取ります。

> usercommand
user1
user2
user3
7
palswim

Windowsコマンドラインで厳密にユーザーを反復処理する場合、最も簡単な方法は、wmicforループの組み合わせです。

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、アカウントのリストを出力する必要があります。 KaranがVBScriptの回答で行ったように、wmic UserAccount where "LocalAccount=True" get Name。どのフィールドもフィルター可能です。それらすべてを表示するには、wmic UserAccount getNameを省略)。

forループは、単にコマンド出力を解析するために使用されます。最初の行はスキップされ(列見出しが出力されます)、最後の行は空なので、ifコマンドでスキップされます。見る for /? 詳細については。

8
Bob

コマンドラインでマシン上のすべてのユーザーを一覧表示する方法を探しているだけで、ループを必要としない人のために。次のコマンドを実行するだけです:

Net User

そして、それはあなたがこのフォーマットで必要なものを出力します

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

これは文字通りあなたが求めているものを出力します:

dir/b C:\ Users

0
Guest

この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
Richard Lucas
  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
    
0
Karan