Como imprimir todos os usuários do windows-group para um textfile?

4

Estou tentando imprimir todos os usuários de um grupo "Alunos" em um arquivo de texto "Students.txt".

Eu não estou em um domínio, então isso não funciona:

net group "Students" >>  students.txt

porque eu recebo o seguinte:

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

Obrigado antecipadamente

Se alguém estiver interessado em uma solução VB.Net, eu programou uma solução WinForm com uma caixa de texto multilinha para copiar / colar os membros (enfim, obrigado pela sua ajuda):

  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
    
por Tim Schmelter 10.01.2011 / 14:53

2 respostas

4

Se você puder usar o PowerShell, isso deve funcionar (funciona no computador local, altere a variável $GroupName e o caminho do arquivo de saída de acordo com suas necessidades):

$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"
    
por 10.01.2011 / 15:48
2

Você pode tentar usar net localgroup com o parâmetro /domain :

net localgroup "Students" /domain >> students.txt
    
por 10.01.2011 / 15:49