Issues when getting a list of user profiles using WMIC

末鹿安然 提交于 2020-06-13 00:46:09

问题


I was using the following batch command to retrieve all local user profiles (including domain users too) :

for /f "delims=" %%I in ('dir /a:d-h /b "%SystemDrive%\Users\*" 2^>nul ^| %SystemRoot%\System32\findstr.exe /i /l /x /v /g:"%bin%\exclude_users.txt"') do (

The problem is that this command has its limits: it doesn't really check if the users in question do actually have an account.

The user Compo provided me a methodology for retrieving the profile names, using WMIC.

So I ended up writing the following command:

@For /F "tokens=* skip=1" %%I In ('%__AppDir__%wbem\WMIC.exe UserAccount Get Name ^|%__AppDir__%findstr.exe /i /l /x /v /g:"%bin%\exclude_users.txt"') do (

The problem is: it ignores my exclusion file (which contains one user per line) and it ends up a profile without any name.

Any idea How I can solve these issues ?


回答1:


@echo off
setlocal

set "bin=%~dp0"

for /f "tokens=* skip=1" %%I in ('
    %__AppDir__%wbem\WMIC.exe UserAccount where Disabled^="FALSE" get Name ^|
    %__AppDir__%WindowsPowerShell\v1.0\powershell -noprofile -command "$input.trim()" ^|
    %__AppDir__%findstr.exe /i /l /x /v /g:"%bin%\exclude_users.txt"
') do echo "%%~I"

The wmic output is piped to powershell to be trimmed and then piped to findstr.

The wmic command will exclude disabled accounts by use of the where clause.

Change the setting of bin as needed.




回答2:


If you want a solution which still uses WMIC, and your exclusion list, then the following should do as you require.

@For /F Tokens^=4Delims^=^" %%G In ('%__AppDir__%wbem\WMIC.exe UserAccount Where "LocalAccount='TRUE'" Assoc:List /ResultRole:Name 2^>NUL')Do @Echo %%G|%__AppDir__%findstr.exe /VXLIG:"%~dp0exclude_users.txt"

You can split that over multiple lines for easier reading too:

@For /F Tokens^=4Delims^=^" %%G In ('%__AppDir__%wbem\WMIC.exe UserAccount^
 Where "LocalAccount='TRUE'" Assoc:List /ResultRole:Name 2^>NUL'
)Do @Echo %%G|%__AppDir__%findstr.exe /VXLIG:"%~dp0exclude_users.txt"


来源:https://stackoverflow.com/questions/61623633/issues-when-getting-a-list-of-user-profiles-using-wmic

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!