oesi1989
Goto Top

Bei der Erstellung von csv-Dateien nach Spalten sortieren

Ich würde gerne, bevor ich eine csv-Datei erstellen lasse, 2 Spalten sortieren.
1. nach Name, 2. nach ADGroup

Wie kann man das mit PS realsisieren? Ich habs schon mit folgendem Code probiert.

Select-Object -Property Name, sAMAccountName, ADGroup, Berechtigung | sort -Property Name,ADGroup |
            Export-Csv -Path $CSVOut -Delimiter ';' -NoTypeInformation -Append -Encoding UTF8 -ErrorAction SilentlyContinue  

Content-ID: 372734

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

Ausgedruckt am: 22.11.2024 um 16:11 Uhr

Kraemer
Kraemer 02.05.2018 um 15:08:05 Uhr
Goto Top
https://docs.microsoft.com/en-us/powershell/module/microsoft.powershell. ...

Und evtl. solltest du dir einfach mal ein wenig mehr Mühe geben
136037
136037 02.05.2018 aktualisiert um 15:47:18 Uhr
Goto Top
Zitat von @oesi1989:
> Select-Object -Property Name, sAMAccountName, ADGroup, Berechtigung | sort -Property Name,ADGroup |
>             Export-Csv -Path $CSVOut -Delimiter ';' -NoTypeInformation -Append -Encoding UTF8 -ErrorAction SilentlyContinue  
> 
Wo kein Input da kein Output!
"Nichts" zu sortieren bringt relativ wenig face-big-smileface-big-smile.
oesi1989
oesi1989 02.05.2018 um 16:11:27 Uhr
Goto Top
Ja funktioniert aber nicht
oesi1989
oesi1989 02.05.2018 aktualisiert um 16:13:54 Uhr
Goto Top
Zitat von @136037:

Zitat von @oesi1989:
>> Select-Object -Property Name, sAMAccountName, ADGroup, Berechtigung | sort -Property Name,ADGroup |
>>             Export-Csv -Path $CSVOut -Delimiter ';' -NoTypeInformation -Append -Encoding UTF8 -ErrorAction SilentlyContinue  
>> 
Wo kein Input da kein Output!
"Nichts" zu sortieren bringt relativ wenig face-big-smileface-big-smile.

Wieso?
Hier ist der ganze Code:

$path = 'C:\temp\AnlageA\'   
$alleGruppen = Get-ADGroup -Filter * -SearchBase 'OU=Neues_FS,...' -Properties CanonicalName    
$Result = foreach($Gruppe in $alleGruppen) {
    $MemberList = Get-ADGroupMember -Identity $Gruppe
    $Gruppe.Name -match '_(C|R)_' | Out-Null  
    $Berechtigung = If( $Matches[1] -eq 'c'){'Ändern'}Else{'Lesen'}  
    Foreach($Member in $MemberList){
        [PSCustomObject]@{
            ADGroup = $Gruppe.Name
            OU = Split-Path $Gruppe.CanonicalName -Parent
            Name= $Member.name
            sAMAccountName = $Member.sAMAccountName
            Berechtigung = $Berechtigung
        }
    }
}

$Result | 
    ForEach-Object {
        $FileBaseName = $_.OU.replace('Domain\01_Benutzer_Gruppen\Neues_FS\',$null)  
        $out = $FileBaseName.Substring(0,5)
        $CSVOut = Join-Path -Path $path -ChildPath ($out + '.csv')  
        $_ | 
            Select-Object -Property Name, sAMAccountName, ADGroup, Berechtigung | sort-object -Property Name,ADGroup |
            Export-Csv -Path $CSVOut -Delimiter ';' -NoTypeInformation -Append -Encoding UTF8 -ErrorAction SilentlyContinue  
}
Kraemer
Kraemer 02.05.2018 um 17:02:14 Uhr
Goto Top
Zitat von @oesi1989:

Ja funktioniert aber nicht
Na, dann beschreibe doch einmal, was da nicht so funktioniert, wie du es erwartest?
oesi1989
oesi1989 02.05.2018 um 17:04:20 Uhr
Goto Top
Habe, wie man im Code unten sieht, das "sort-object" eingesetzt, es macht da für mich Sinn.
Muss es evtl woanders hin und wenn ja, wo?
Kraemer
Kraemer 02.05.2018 um 17:07:05 Uhr
Goto Top
Zitat von @oesi1989:

Muss es evtl woanders hin und wenn ja, wo?
nö - die Stelle ist in Ordnung. Und was stimmt nun nicht in deiner CSV?
oesi1989
oesi1989 02.05.2018 um 17:14:13 Uhr
Goto Top
Es wird nicht sortiert?!?
136037
136037 02.05.2018 aktualisiert um 17:52:13 Uhr
Goto Top
Zitat von @oesi1989:

Wieso?
Weil keine Daten = keine Ausgabe, ganz einfach.
Meine Glaskugel ist in der Reinigung.
Es wird nicht sortiert?!?
Naja überleg doch einfach mal vorher, du sortierst innerhalb einer For-Each Schleife ein einziges Objekt wie soll das also gehen ... Ein Objekt bleib ein Objekt und das kannst du sortieren wir du willst face-big-smile, es bleibt eins..., also das Array vorher sortieren!
$Result | sort Name,ADGroup | 
    ForEach-Object {
        $FileBaseName = $_.OU.replace('Domain\01_Benutzer_Gruppen\Neues_FS\',$null)  
        $out = $FileBaseName.Substring(0,5)
        $CSVOut = Join-Path -Path $path -ChildPath ($out + '.csv')  
        $_ |  Select Name, sAMAccountName, ADGroup, Berechtigung |
            Export-Csv -Path $CSVOut -Delimiter ';' -NoTypeInformation -Append -Encoding UTF8 -ErrorAction SilentlyContinue  
}
Herr lass es Hirn regnen.
Kraemer
Kraemer 02.05.2018 aktualisiert um 18:12:27 Uhr
Goto Top
So herum kann man es auch erklären face-smile
oesi1989
oesi1989 03.05.2018 aktualisiert um 10:03:45 Uhr
Goto Top
Und wo muss ich die Prüfung reinsetzen, ob die Datei schon existiert?

$Result | sort Name,ADGroup |
ForEach-Object {
    $FileBaseName = $_.OU.replace('Domain\01_Benutzer_Gruppen\Neues_FS\',$null)  
    $out = $FileBaseName.Substring(0,5)
    $CSVOut = Join-Path -Path $path -ChildPath ($out + '.csv')  
    if(Test-Path $CSVOut)
    { 'Datei existiert bereits!'}  
    else {
    $_ | 
        Select-Object -Property Name, sAMAccountName, ADGroup, Berechtigung |
        Export-Csv -Path $CSVOut -Delimiter ';' -NoTypeInformation -Append -Encoding UTF8 -ErrorAction SilentlyContinue  
    }
}

Wenn ich es dort mache, macht er es ja für jeden Nutzer und vor der Foreach-Schleife macht es auch keinen Sinn, weil er dann nur 1x die Prüfung macht
Kraemer
Kraemer 03.05.2018 um 10:19:13 Uhr
Goto Top
Zitat von @oesi1989:

Und wo muss ich die Prüfung reinsetzen, ob die Datei schon existiert?
das kommt ganz darauf an, was du versuchst zu erreichen...
136037
136037 03.05.2018 aktualisiert um 10:22:52 Uhr
Goto Top
Lassen wir ihn mal selber machen, irgendwann findet auch er den ON/OFF Switch an seiner Birne, hoffen wir's.
oesi1989
oesi1989 03.05.2018 um 10:46:16 Uhr
Goto Top
Halt die Klappe, ich dachte, das wäre ein Hilfe Forum hier
Kraemer
Kraemer 03.05.2018 um 12:02:35 Uhr
Goto Top
Zitat von @oesi1989:

Halt die Klappe, ich dachte, das wäre ein Hilfe Forum hier
Von mir und ich denke auch @136037 wirst du sicher keine Hilfe mehr erhalten...
Wir brauchen hier unbedingt eine Ignorierenfunktion
136037
136037 03.05.2018 aktualisiert um 14:07:58 Uhr
Goto Top
Zitat von @oesi1989:
Halt die Klappe
Gut da war ich wohl zu voreilig , in diesem Leben wird das wohl mit dir nichts mehr.
ich dachte, das wäre ein Hilfe Forum hier
Ist es, aber kein "mach mir meine Arbeit" Forum, wie man ja hier schön sehen kann.