DOS/BAT

关注公众号 jb51net

关闭
首页 > 脚本专栏 > DOS/BAT > bat用户和组篇

批处理系统管理之6 - 用户和localgroup组篇

作者:batcher

本文主要介绍 net localgroup 命令、net user 命令、WMIC 命令有关本地用户和组的增删查改等实例,以及结合BAT脚本实现批量操作

对于 Windows 系统管理员来说,经常遇到的操作可能包括:

1、基本命令实例

# 创建本地组 BatHomeAdmins

net localgroup BatHomeAdmins /add /comment:"The group of administrators"

# 创建本地组 BatHomeUsers

net localgroup BatHomeUsers /add

# 添加组的描述

net localgroup BatHomeUsers /comment:"The group of users"

# 删除组的描述

net localgroup BatHomeUsers /comment:""

# 创建本地用户 BatAdmName1 密码为 BatAdmPass1

net user BatAdmName1 BatAdmPass1 /add

# 创建本地用户 BatUsrName1 密码为 BatUsrPass1

net user BatUsrName1 BatUsrPass1 /add

# 创建本地用户 BatUsrName2 密码为 BatUsrPass2

net user BatUsrName2 BatUsrPass2 /add

# 把用户添加到一个组

net localgroup BatHomeAdmins BatAdmName1 /add
net localgroup BatHomeUsers BatUsrName1 /add
net localgroup BatHomeUsers BatUsrName2 /add

# 查看一个组里面有哪些用户

net localgroup BatHomeAdmins
net localgroup BatHomeUsers

# 从组里面删除一个用户

net localgroup BatHomeUsers BatUsrName2 /delete

# 删除本地组

net localgroup BatHomeAdmins /delete
net localgroup BatHomeUsers /delete

# 查看一个用户属于哪些组

net user BatAdmName1 | findstr /i /b "本地组成员"
net user BatUsrName1 | findstr /i /b "本地组成员"

# 查看用户列表

net users
wmic useraccount get name /value | findstr "="

# 查看某个用户的详细信息

net user BatAdmName1
wmic useraccount where name='BatAdmName1' get * /value

# 添加用户的描述

net user BatAdmName1 /comment:"The administrator user"

# 删除用户的描述

net user BatAdmName1 /comment:""

# 设置一个用户的全名

net user BatAdmName1 /fullname:"Guan Liyuan"

# 更改用户的密码

net user BatAdmName1 BatAdmPassNew

# 把用户的密码更改为空

net user BatAdmName1 ""

# 禁用一个用户

net user BatAdmName1 /active:no

# 启用一个用户

net user BatAdmName1 /active:yes

# 设置用户可以登录的时间为周一到周五早九晚六

net user BatAdmName1 /time:M-F,09:00-18:00

# 设置用户随时可以登录

net user BatAdmName1 /time:all

# 删除一个用户

net user BatUsrName2 /delete

# 获取某个用户的SID

wmic useraccount where name='BatUsrName1' get SID /value

# 设置某个用户下次登录须修改密码

net user BatUsrName1 /logonpasswordchg:yes

# 取消某个用户下次登录须修改密码

net user BatUsrName1 /logonpasswordchg:no

# 设置某个用户的密码永不过期

wmic useraccount where name='BatUsrName1' set PasswordExpires=false

# 设置某个用户不能更改密码

wmic useraccount where name='BatUsrName1' set PasswordChangeable=false
net user BatUsrName1 /passwordchg:no

# 设置某个用户可以更改密码

wmic useraccount where name='BatUsrName1' set PasswordChangeable=true
net user BatUsrName1 /passwordchg:yes

# 更改用户名

wmic useraccount where name='BatUsrName1' call rename BatUsrNameNew

2、批处理脚本实例

2.1 BAT + net user 导出用户详细信息

@echo off
cd /d "%~dp0"
(for /f "skip=4 tokens=1-3" %%a in ('net user ^| findstr /v /i "命令成功完成。"') do (
    if "%%a" neq "" (
        net user %%a
        if "%%b" neq "" (
            net user %%b
            if "%%c" neq "" (
                net user %%c
            )
        )
    )
))>"UserDetail_1.txt"

2.2 BAT + WMIC + net user 导出用户详细信息

@echo off
cd /d "%~dp0"
(for /f "tokens=2 delims==" %%a in ('wmic useraccount get name /value') do (
    for %%b in (%%a) do (
        net user %%b
    )
))>"UserDetail_2.txt"

2.3 BAT批量创建用户并加入指定组

把待创建的用户名和待加入的组按照下面的格式写入文件UserList.txt

;============================================================
;第一列: 用户名
;第二列及后面的列: 用户组
;每列之间以英文逗号分隔(逗号左右两侧不要有空格)
;每个组名左右两侧添加英文双引号(不要有多余空格)
;============================================================
BatAdm1,"Administrators","Remote Desktop Users"
BatAdm2,"Remote Desktop Users"
BatUsr1,"Remote Desktop Users","Power Users"
BatUsr2,"Remote Desktop Users"

执行脚本CreateUser.bat

@echo off
cd /d "%~dp0"
setlocal enabledelayedexpansion
set "FilePass=UserPass.txt"
>"%FilePass%" echo ;Username  Password
for /f "tokens=1* delims=," %%a in ('type "UserList.txt"') do (
    call :GetPass
    >>"%FilePass%" echo %%a  !PassStr!
    echo net user %%a !PassStr! /add
    net user %%a !PassStr! /add
    for %%c in (%%b) do (
        echo net localgroup %%c %%a /add
        net localgroup %%c %%a /add
    )
)
pause
goto :eof
:GetPass
set "PassLen=11"
set /a LoopNum=PassLen/3+3
set "PassStr="
for /l %%i in (1,1,%LoopNum%) do (
    call :GetRand PassStr
)
set PassStr=!PassStr:~1,%PassLen%!
goto :eof
:GetRand
set "str1=ABCDEFGHIJKLMNOPQRSTUVWXYZ"
set "str2=abcdefghijklmnopqrstuvwxyz"
set "str3=0123456789"
set /a x=%random%%%26
set /a y=%random%%%26
set /a z=%random%%%10
set "PassStr=!PassStr!-!str1:~%x%,1!!str2:~%y%,1!!str3:~%z%,1!"
goto :eof

创建用户之后随机生成的密码自动写入UserPass.txt

到此这篇关于批处理系统管理之6 - 用户和localgroup组篇的文章就介绍到这了,更多相关bat用户和组篇内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

阅读全文