4

Я пытаюсь распечатать всех пользователей группы "Студенты" в текстовый файл «Students.txt».

Я не в домене, так что это не работает:

net group "Students" >>  students.txt

потому что я получаю следующее:

This command can be used only on a Windows Domain Controller.

заранее спасибо

Если кто-то заинтересован в решении VB.Net, я запрограммировал решение Winform с многострочным текстовым полем для копирования / вставки элементов (в любом случае, спасибо за вашу помощь):

  Imports System.DirectoryServices 'first add a refernce to it from .Net Tab'

....

  Public Function MembersOfGroup(ByVal GroupName As String) As List(Of DirectoryServices.DirectoryEntry)
        Dim members As New List(Of DirectoryServices.DirectoryEntry)
        Try
            Using search As New DirectoryServices.DirectoryEntry("WinNT://./" & GroupName & ",group")
                For Each member As Object In DirectCast(search.Invoke("Members"), IEnumerable)
                    Dim memberEntry As New DirectoryEntry(member)
                    members.Add(memberEntry)
                Next
            End Using
        Catch ex As Exception
            MessageBox.Show(ex.ToString)
        End Try
        Return members
    End Function

    Private Sub TxtGroup_KeyDown(ByVal sender As Object, ByVal e As System.Windows.Forms.KeyEventArgs) Handles TxtGroup.KeyDown
        If e.KeyCode = Keys.Enter Then
            Me.TxtGroupMembers.Text = String.Empty
            If Me.TxtGroup.Text.Length <> 0 Then
                Dim members As List(Of DirectoryServices.DirectoryEntry) = MembersOfGroup(Me.TxtGroup.Text)
                For Each member As DirectoryServices.DirectoryEntry In members
                    Me.TxtGroupMembers.Text &= member.Name & vbCrLf
                Next
            End If
        End If
    End Sub

2 ответа2

4

Если вы можете использовать PowerShell, то это должно сработать (работает на локальном компьютере, измените переменную $GroupName и путь к выходному файлу в соответствии с вашими потребностями):

$GroupName = "Administrators"
$GroupMembers = @()
$Server = $env:computername
$Group= [ADSI]"WinNT://$Server/$GroupName,group"
$Members = @($Group.psbase.Invoke("Members"))
$Members | ForEach-Object { $GroupMembers += $_.GetType().InvokeMember("Name", 'GetProperty', $null, $_, $null) }
Write-Output $GroupMembers | out-File "C:\somefolder\somefile.txt"
2

Вы можете попробовать использовать net localgroup с параметром /domain :

net localgroup "Students" /domain >> students.txt

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .