获取net group命令的输出并将其设为用户列表

时间:2017-04-19 17:59:48

标签: windows batch-file scripting

我想获取“net group”命令的输出并解析它,以便组成员是一个列表。除此之外,我无法访问任何实际的域实用程序。 (所以Get-ADGroupMember不是一个选项)

net group /domain MyADGroup

The request will be processed at a domain controller for domain encana.com.

Group name     MyADGroup
Comment        Sccm Deployment

Members

-------------------------------------------------------------------------------

MemberA             MemberB         MemberC
.
.
.
MemberZ

The command completed successfully.

我想要的是一个只有

的文件

MemberA MemberB MemberC 。 。 。 MemberZ

它也必须自动化,所以我可以安排它定期运行。 到目前为止,我有这个 在命令提示符下:

net group /domain MyADGroup |more +8 > output.txt

在电源外壳中:

(Get-Content output.txt)|ForEach-Object { $_ -replace "The command completed successfully.", ""}| ForEach-Object { $_ -replace " ", "`n`r"}|Set-Content output2.txt

我可以将这两者都放入批处理文件中。输出文件有一堆额外的行,但我导入的工具将很乐意忽略它们。我只是想要一些更精简的东西而没有额外的百万行。

1 个答案:

答案 0 :(得分:0)

我制作了一个小脚本,首先将所有组保存到“数组”,然后将它们全部输出。您可以根据需要进行更改。在WinServer 2003和WinServer 2012上测试它。希望它有所帮助。

@echo off

setlocal EnableDelayedExpansion
set "count=0"

for /f "delims=* skip=4" %%i in ('net group') do (
    set /a "count+=1"
    set "groups[!count!]=%%i"
)

set /a "count-=1"
for /l %%i in (1,1,!count!) do (
   echo(!groups[%%i]!
)