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-Key: 452290

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

Printed on: April 26, 2024 at 07:04 o'clock

Mitglied: 139708
139708 May 16, 2019 updated at 13:41:16 (UTC)
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.
Member: ChristineS
ChristineS May 16, 2019 at 13:19:22 (UTC)
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  
Mitglied: 139708
Solution 139708 May 16, 2019 updated at 13:56:02 (UTC)
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.
Member: ChristineS
ChristineS May 16, 2019 at 15:17:00 (UTC)
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.