0

我正在尝试编写一个 Powershellscript,它将组的所有成员(站在 txt 中)读出到我的 csv 的列中。但我有一个问题,我的 csv 中的输出是每个组的最后一个成员打印出大约 300 倍

Clear-Host
#$zusammen = Liste von allen Usern
#$namen = Liste von allen bereits vorgekommenden UserUnids
#$gruppen = Liste von allen bereits vorgekommenden Gruppennamen
$zusammen = New-Object System.Collections.ArrayList($null)


#Pfad zur txt/csv Datei wo die Gruppen enthalten sind
$path = "C:\gruppen.txt"
#Inhalt der Datei laden
$inpt = Get-Content $path
$la = 1
#Objekt für die Ausgabe wird definiert
foreach ($temp in $inpt)
    {
        if($la -eq 1)
        {
            $objAusgabe = New-Object -TypeName PSObject
            $objAusgabe | Add-Member –MemberType NoteProperty –Name $temp -Value $temp
            $la = 2
        }
        else
        {
            $objAusgabe | Add-Member –MemberType NoteProperty –Name $temp -Value $temp
        }
    }
    $mitte = New-Object System.Collections.ArrayList($null)

foreach ($temp in $inpt)
{
#$usr = Gruppenname
$usr = $temp

#Funktion zum Suchen der User
function Findusers($objparam)
{


    foreach($ent in $objparam)
    {

        #$objmitte = New-Object -TypeName PSObject | Select UNID
        $objuser1 = New-Object System.DirectoryServices.DirectoryEntry("LDAP://"+$ent)
        #usrtype gibt durch den samaccounttype an ob es sich um einen user oder eine gruppe handelt
        #wenn es eine gruppe ist wird die if-schleife durchlaufen sonst die else schleife
        $usrtype = $objuser1.sAMAccountType
        if($usrtype -eq 268435456 -or $usrtype -eq 268435457)
        {
                    "`t`t" + $objuser1.name + " -- Gruppe "
                    $Gabe = [string]$objuser1.name
                    $mitte.Add($Gabe) |Out-Null 
        }
        else
        {
                    "`t`t"+$objuser1.cn.ToUpper()+" -- "+$objuser1.sn+","+$objuser1.givenname
                    $unidgroß = [string]$objuser1.cn
                    $gabe = $unidgroß.ToUpper()
                    $mitte.Add($gabe) |Out-Null
        }
    }
    $test = $mitte
    foreach($tempo in $test)
    {
        $objAusgabe.$temp = $tempo
        $zusammen.Add($objAusgabe)|Out-Null
    }
}

$str = $usr + ":-" 
$str
Echo "---------------------------------------------"
$objItem = @()
$strFilter = "(&(objectCategory=Group)(name=$usr))"
$objDomain = New-Object System.DirectoryServices.DirectoryEntry
$objSearcher = New-Object System.DirectoryServices.DirectorySearcher
$objSearcher.SearchRoot = $objDomain
$objSearcher.PageSize = 1000
$objSearcher.Filter = $strFilter
$objSearcher.SearchScope = "Subtree" 
$colResults = $objSearcher.FindAll() 
foreach ($objResult in $colResults)
{  
    $objItem = $objResult.GetDirectoryEntry()
    $objmem = $objItem.member
    Findusers($objmem)
}
}
$zusammen | ConvertTo-Csv | Out-File C:\test.csv -Encoding unicode 
4

0 回答 0