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

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

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

Member: Kraemer
Kraemer May 02, 2018 at 13:08:05 (UTC)
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
Mitglied: 136037
136037 May 02, 2018 updated at 13:47:18 (UTC)
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.
Member: oesi1989
oesi1989 May 02, 2018 at 14:11:27 (UTC)
Goto Top
Ja funktioniert aber nicht
Member: oesi1989
oesi1989 May 02, 2018 updated at 14:13:54 (UTC)
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  
}
Member: Kraemer
Kraemer May 02, 2018 at 15:02:14 (UTC)
Goto Top
Zitat von @oesi1989:

Ja funktioniert aber nicht
Na, dann beschreibe doch einmal, was da nicht so funktioniert, wie du es erwartest?
Member: oesi1989
oesi1989 May 02, 2018 at 15:04:20 (UTC)
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?
Member: Kraemer
Kraemer May 02, 2018 at 15:07:05 (UTC)
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?
Member: oesi1989
oesi1989 May 02, 2018 at 15:14:13 (UTC)
Goto Top
Es wird nicht sortiert?!?
Mitglied: 136037
136037 May 02, 2018 updated at 15:52:13 (UTC)
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.
Member: Kraemer
Kraemer May 02, 2018 updated at 16:12:27 (UTC)
Goto Top
So herum kann man es auch erklären face-smile
Member: oesi1989
oesi1989 May 03, 2018 updated at 08:03:45 (UTC)
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
Member: Kraemer
Kraemer May 03, 2018 at 08:19:13 (UTC)
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...
Mitglied: 136037
136037 May 03, 2018 updated at 08:22:52 (UTC)
Goto Top
Lassen wir ihn mal selber machen, irgendwann findet auch er den ON/OFF Switch an seiner Birne, hoffen wir's.
Member: oesi1989
oesi1989 May 03, 2018 at 08:46:16 (UTC)
Goto Top
Halt die Klappe, ich dachte, das wäre ein Hilfe Forum hier
Member: Kraemer
Kraemer May 03, 2018 at 10:02:35 (UTC)
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
Mitglied: 136037
136037 May 03, 2018 updated at 12:07:58 (UTC)
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.