将 NET USER 命令的用户名结果导出到文本文件中

将 NET USER 命令的用户名结果导出到文本文件中

我有一个包含用户名列表的文本文件。对于每个用户名,我想导出以下结果:

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"
  }
}

相关内容