将网络组输出排序到一列中

将网络组输出排序到一列中

该命令net group "Groupname" /domain > c:\temp\users.txt将在文本文件中生成以下输出。

Group name     GroupABC
Comment        XXXXXXXXXXXXXXXXXXXXX

Members

--------------------------------------------------------------------
MemberA                  MemberB                  MemberC 
MemberD                  MemberE                  MemberF 
MemberG                  MemberH                  MemberI
The command completed successfully.

我需要删除文件末尾不必要的标题和注释,只需将输出按以下顺序排列:

MemberA
MemberB
MemberC
MemberD
MemberE
MemberF
...

有没有一种简单的方法可以做到这一点,而不必输出到文件并手动删除标题?非常感谢您对排序和删除不必要空格的帮助!

答案1

我能想到的最简单的方法是使用 Active Directory cmdlet 在 powershell 中执行此操作。在域控制器或安装了 RSAT 的计算机上,运行以下命令

Get-ADGroupMember GroupName | select name | out-file GroupName.txt

答案2

net如果您缺少 AD cmdlet,您可以在 Powershell 中格式化结果。

# store the results in an array.
$results = net group "Groupname" /domain

# the size of the header and footer is always the same. select the data between these sections.
$results = $results[8..($results.Length-3)]

# replace the empty spaces with a comma. join on the comma, getting rid of blank lines.
foreach($result in $results) { 
    ($result -replace '\s+',',') -split ',' | ? { $_ } >> 'C:\temp\users.txt'
}

答案3

仅使用批处理文件将输出转换为单列。

创建一个名为“convert-to-single-column.bat”或类似名称的批处理文件并粘贴此代码。

@echo off

if "%~1" == "" (
echo Usage: %0 file.txt
exit /b 1
)

for /f "usebackq tokens=1,2,3*" %%A in (%1) do (
echo %%A
echo %%B
echo %%C
)

运行命令:

net user /domain >> users.txt

然后运行命令:

convert-to-single-column.bat users.txt > users-single-column.txt

现在您只有一列,无需 powershell 或 python。请注意,文本文件的顶部仍将包含...

The
request
will
User
accounts
for
-------------------------------------------------------------------------------
ECHO is off.
ECHO is off.

底部将包含...

The
command
completed

但所有用户名都会位于中心。

快乐黑客!

相关内容