问题描述
只要每个用户在备份位置有一个文件夹,以下脚本就会备份每个用户的 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