我有一个包含用户名列表的文本文件。对于每个用户名,我想导出以下结果:
net user <username> /domain | findstr /R /C:"Account active"
在另一个文本文件中,结果格式如下:
userA - result of the command
userB - result of the command
userC - result of the command
...
我有这段代码,但是它只完成了我想要做的一半的事情,因为它只在命令提示符中显示:
@echo off
for /F %%i in (users.txt) do (
echo %%i
net user %%i /domain | findstr /R /C:"Account active"
)
请你帮助我好吗 ?
多谢 :)
答案1
先决条件
- 您有一个填充了 SAM 帐户名称的输入文本文件:
user1
user2
user3
- 结果将是(假设用户 1 和用户 3 处于活动状态,而用户 2 处于非活动状态):
user1 - Yes
user2 - No
user3 - Yes
然后(设置%InputFile%
为输入文件路径和%ResultPath%
结果文件路径)您可以使用这个:
@Echo off & Setlocal EnableDelayedExpansion
Set "InputFile=users.txt" & Set "ResultPath=result.txt"
For /f "Delims=" %%a in ('type "%InputFile%"') do (
For /f "Tokens=3 Delims= " %%b in ('net user "%%a" /domain ^| find /i "Account active"') do set "active=%%~b"
Echo %%~a - !active! >>"%ResultFile%"
)
使用 Powershell 进行 Active Directory 管理和脚本编写非常灵活:
Import-Module ActiveDirectory
(Get-Content users.txt) | Foreach {
If((Get-ADUser -Identity $_).Enabled){
"$($_) - Yes" >>"result.txt"
}Else{
"$($_) - No" >>"result.txt"
}
}