查明域里所有被锁定帐户的批处理(原创)

发表于:2007-06-08来源:作者:点击数: 标签:
前几天写的一个windows平台的批处理,可以列出公司域里所有被锁定或被禁用的帐户。 XX, 看来没有什么简单的办法来实现这种特殊的用户或组,我这里可以提供一个简单的脚本来简化管理,供参考。 我在自己的THINKPAD上用批处理命令可以发现公司域里当前被锁定

    前几天写的一个windows平台的批处理,可以列出公司域里所有被锁定或被禁用的帐户。


XX,

    看来没有什么简单的办法来实现这种特殊的用户或组,我这里可以提供一个简单的脚本来简化管理,供参考。

    我在自己的THINKPAD上用批处理命令可以发现公司域里当前被锁定或被禁用的所有帐户(WINDOWS下好象分辨不出DISABLED和LOCKED帐户的区别)如下:
(略)
    批处理内容如下,根据具体的环境和需求的不同,下面红字的部分可能需要修改:
 REM This batch file can only be used on windows2000 or later OS in chinese simplified version.
 REM And this batch file can be used on workstations or member servers in a domain.
 REM The function of it is to get a list of all locked or disabled users of a domaim.
 REM Making a little change, you can use this batch file on windows in other language version or on domian controller.
 REM I marked those lines as follow.
 REM author: beginner@yeah.net http://blog.chinaunix.net/index.php?blogId=739

cd /d %TEMP%
for %%i in (user2.txt lockedusers.txt) do if exist %%i del %%i
 REM Changing the next 4 lines can meet your special require.
net user /domain |find /v "命令成功完成" >user.txt
for /f "skip=6 tokens=1" %%i in (user.txt) do echo %%i >>user2.txt
for /f "skip=6 tokens=2" %%i in (user.txt) do echo %%i >>user2.txt
for /f "skip=6 tokens=3" %%i in (user.txt) do echo %%i >>user2.txt

 REM Changing the next line can meet your special require.
echo net user %%1 /domain ^|find "帐户启用               No" >user.bat
echo goto answer%%errorlevel%% >>user.bat
echo :answer0 >>user.bat
echo echo %%1 ^>^> lockedusers.txt >>user.bat
echo goto end >>user.bat
echo :answer1 >>user.bat
echo :end >>user.bat

for /f %%i in (user2.txt) do call user.bat %%i
for %%i in (user.txt user2.txt user.bat) do if exist %%i del %%i
cls

@if exist lockedusers.txt (
date /t >> lockedusers.txt
time /t >> lockedusers.txt
notepad.exe lockedusers.txt
) else (
echo   There is no locked user!
pause
)

几点说明:
1、我的机器是win2000中文版,这个BAT文件若要用在英文版的操作系统上,就需要稍加修改。
2、我的机器是公司域的WORKSTATION,这个BAT文件可以用在公司域的任何中文版win2000及以上的WORKSTATION和MEMBER SERVER上。能否直接在DC上使用,我不太肯定,因为我印象中在DC上列出所有用户的命令好象不是net user /domain,而是net group "domain users"或其它。我没有DC可供测试,所以就不知道了。
3、我当前的帐户是XXX,也许比非IT部门的普通帐户权限要高,但可以肯定的是,任何DOMAIN ADMINISTRATORS和ACCOUNT OPERATORS组的成员都可以用这个BAT文件。
4、公司域里共1770多个帐号,所以这个BAT执行完大约要4分钟,但我肯定任何手工找出公司域里所有被锁定的帐号的方法都会大于4分钟,而且BAT若直接在DC上使用,时间肯定可以会缩减不少。
5、除了BAT,WINDOWS的其它脚本技术(比如WSH、ADSI)可能效率更高,不过我没有研究过,如果WINDOWS TEAM中有人对这块比较熟悉,那可以向他问问。
6、这个BAT也可以用在各种环境下,比如:可以每天0:00点自动执行,以便我们从长期的观察中发现这些被锁定的帐户,是否存在一定的规律。

Best Regards,

 XXX

========================================================
我也学一下别人,呵呵!
任何形式的转载,请写明出处:
email: beginner@yeah.net
website: http://blog.chinaunix.net/index.php?blogId=739
========================================================

原文转自:http://www.ltesting.net