christines
Goto Top

Hilfe bei Foreach benötigt (Anfänger)

Hallo,


ich habe (bereits mit Hilfe) ein funktionierendes Script mit dem die Gruppen aller aktiven AD User ausgelesen werden (Im Code von get-aduser bis zum export). Das ganze benötige ich aber für 9 OU's.

Darüber habe ich einiges gefunden und so meine OUs in eine Variable geschrieben und ein zweites Foreach eingebaut. Das klappt so nicht wie ich bemerkt habe face-smile Wäre nett wenn mir jemand erklären kann was und warum es falsch ist?

Foreach($OU in $OUs){
get-aduser -Filter * -SearchBase $OU | %{
    $groups = Get-ADPrincipalGroupMembership $_.SamAccountName | Select -ExpandProperty Name
    foreach($group in $groups){
        [pscustomobject]@{
		     SamAccountName = $_.SamAccountName
             Gruppe = $group
			 }
			 }
} | export-csv $Ausgabe1 -Delimiter ';' -NoType -Append -Encoding UTF8/  
}



Danke

Content-ID: 452290

Url: https://administrator.de/contentid/452290

Ausgedruckt am: 12.11.2024 um 19:11 Uhr

139708
139708 16.05.2019 aktualisiert um 15:41:16 Uhr
Goto Top
Moin,
in Zeile 10 die angehängte Pipe ist indem Fall falsch platziert. Du überschreibst damit für jede OU die selbe Datei, also liegen im File am Schluss immer nur die User der letzten OU, logisch ne face-wink.
Außerdem ist am Ende von Zeile 10 der Slash falsch, der hat keine Funktion und führt zu Fehlern.
Ergänze einfach -Append bei Export-CSV.


Gruß W.
ChristineS
ChristineS 16.05.2019 um 15:19:22 Uhr
Goto Top
Hallo W.

Danke, aber ich verstehe das wahrscheinlich falsch, denn ich bekomme einen Fehler "An empty pipe element is not allowed"

Foreach($OU in $OUs){
get-aduser -Filter * -SearchBase $OU | %{
    $groups = Get-ADPrincipalGroupMembership $_.SamAccountName | Select -ExpandProperty Name
    foreach($group in $groups){
        [pscustomobject]@{
		     SamAccountName = $_.SamAccountName
             Gruppe = $group
			 }
			 }
} 
} | export-csv $Ausgabe1 -Delimiter ';' -NoType -Append -Encoding UTF8  
139708
Lösung 139708 16.05.2019 aktualisiert um 15:56:02 Uhr
Goto Top
Sorry, falscher Film...
$Ausgabe1 = "c:\Pfad\datei.csv"  
$OUs = "OU=Test,DC=domain,DC=tld","OU=Test2,DC=domain,DC=tld"  
$data = @()
Foreach($OU in $OUs){
    $data += get-aduser -Filter * -SearchBase $OU | %{
        $groups = Get-ADPrincipalGroupMembership $_.SamAccountName | Select -ExpandProperty Name
        foreach($group in $groups){
            [pscustomobject]@{
		     SamAccountName = $_.SamAccountName
                     Gruppe = $group
             }
         }
    } 
} 
If ($data.Count -gt 0){
    $data | export-csv -Path $Ausgabe1 -Delimiter ';' -NoType -Encoding UTF8  
}
Was aber in deinen Variablen $OUs und $Ausgabe1 steht kann hier keiner erraten, das klappt hier einwandfrei.
ChristineS
ChristineS 16.05.2019 um 17:17:00 Uhr
Goto Top
Vielen Dank für deine Hilfe. Die Variablen Inhalte habe ich weggelassen da ich mir sicher war das diese funktionieren.
Jetzt gönne ich mir ein langes Wochenende und wenn ich mir das Script am Dienstag wieder ansehe hoffe ich das ich es noch immer verstehe.