使用 SID 从 Active Directory 批量获取用户名?

问题描述

只要每个用户在备份位置有一个文件夹,以下脚本就会备份每个用户的 Windows 配置文件的数据:

@echo off

set Target=D:\backup

for /f "tokens=*" %%I in ('dir /a:d-h /b "%systemDrive%\Users\*"') do if exist "%Target%\%%~nXI\" (

........

)

pause 
exit

我需要更改一位用户登录名。在 Active Directory 中更改后,用户配置文件文件夹 (C:\Users) 保留旧名称

据我所知:SID 与 AD 帐户相关联,更改用户名和其他属性用户的 Windows 配置文件没有影响。

我想知道是否有办法从其 SID 中批量获取名称?如果是,如何?

任何帮助都会对我有很大帮助。

解决方法

如果要获取所有用户名,可以使用 % 作为通配符

命令行:

wmic useraccount get Name,SID

wmic useraccount where "sid like 'S-1-5-21%'" get name

当你将它与批处理文件一起使用时,你应该用 %% 将它加倍以将其转义!

批处理文件

@echo off
wmic useraccount where "sid like 'S-1-5-21%%'" get name
pause

你可以试试这个批处理文件,如果你知道的话,只需修改成你想要的SID!

@echo off
Title Batch Getting user name from Active Directory using SID
Set "SID=S-1-5-21-1718693495-2001798431-3107361897-500"
Set "UserName="
for /f "skip=1 delims=" %%a in ('"wmic useraccount where sid="%%SID%%" get name"') do (
    for /f "delims=" %%b in ("%%a") do if not defined UserName set "UserName=%%~nb"
)
echo UserName = "%UserName%"
pause