none
Encoding Problem Export-Csv RRS feed

  • Frage

  • Hallo Zusammen

    Ich habe in der Firma ein Powershellscript geschrieben, das die Mitglieder einer Mailboxgruppe auslesen und in eine CSV-Datei schreiben soll. Beim Öffnen der CSV-Datei steht dann nur folgendes drin: ÿþ

    Ich vermute das Problem liegt bei der Encodierung. Ich habe schon alles versucht und komme nicht weiter

    Script sieht so aus:

    #Enable Exchange cmdlets
    add-pssnapin *exchange* -erroraction SilentlyContinue
    $mbcombCollection = @()
    [Int] $intSucceeded = 0
    [Int] $intTotalRules = 0
    ForEach ($i in $args)
    {
        [string]$CurrGroup = $i
        $GroupMembers = Get-DistributionGroupMember -Identity $CurrGroup -ResultSize unlimited
        ForEach ($mbx in $GroupMembers)
        {
        	Write-Progress -Activity "Checking Mailbox Rules" -Status "Mailboxes Successfully Processed: $intSucceeded"
            $user = ""
            
            $mbcomb = "" | Select "Anrede", "Vorname", "Nachname", "Mail" ,"Gruppe"
            
            if ($mbx.RecipientType -eq "UserMailbox"){
            $mbxstr = Get-Mailbox -Identity $mbx.SamAccountName
            $mbxstr = $mbxstr.SamAccountName
            $user = Get-User -Identity $mbxstr
            }
            
            $mbcomb."Anrede" = $user.title
            $mbcomb."Vorname" = $mbx.FirstName
            $mbcomb."Nachname" = $mbx.LastName
            $mbcomb."Mail" = $mbx.PrimarySmtpAddress
            $mbcomb."Gruppe" = $CurrGroup
            $mbcombCollection += $mbcomb
    
        	$intSucceeded++
        }
    }
    
    #$mbcombCollection
    $mbcombCollection | Export-Csv C:\_Support\Mail-Adressen\export\MailAddresses.csv
    
    
    #Pause: beide Befehle einkommentieren
    #Write-Host "Press any key to continue ..."
    #$x = $host.UI.RawUI.ReadKey("NoEcho,IncludeKeyDown")

    Ich wäre sehr froh, wenn mir jemand weiterhelfen könnte.

    Gruss
    codesofa

    Dienstag, 18. August 2015 06:59

Antworten

  • Hi,

    Encoding:
    Versuch mal -Encoding Default als Parameter von Export-Csv. Das Default hier bezieht sich auf das Umgebungsdefault, nicht das Befehlsdefault. Der deutsche Standard sollte ANSI sein, was dir explizit nicht einmal angeboten wird. Ohne "Default" wird's UTF8 ohne BOM (Um einfach das Encoding zu prüfen verwende Notepad++ - oben gibt's da einen Menü-Punkt "Kodierung".

    Ansonsten, falls die Csv anwenderfreundlich sein soll, empfehle ich -Delimiter ";" und -NoTypeInformation zu verwenden. Der Standard Delimiter im deutschen Excel ist ";", mit dem parameter kann man die Datei dann einfach in Excel öffnen und hat eine Tabelle.

    Grüße,
    Friedrich


    There's no place like 127.0.0.1

    Mittwoch, 19. August 2015 06:38

Alle Antworten

  • Hi,

    ich hab das bei mir so gelöst, dass ich für die ganzen Properties ein Powershell-Objekt erstelle:

    New-Object PSObject -Property @{
                                   <Eigenschaft 1> = <Wert 1>
                                   <Eigenschaft 2> = <Wert 2>
                                   ...
                                   } | Export-CSV <Datei> -Append

    Der Parameter "-Append" ist wichtig, wenn Du Daten einer vorhandenen Datei hinzufügen willst, anstatt diese zu überschreiben.

    Mit "-Delimiter" kannst Du noch ein Trennzeichen definieren, so dass die Eigenschaften jeweils in eine eigene Spalte geschrieben werden, anstatt in einer Spalte hintereinander (z.B. ; ,).


    Gruß

    Ben

    MCSA Windows 8 (.1) MCSA Windows Server 2012 (R2)

    Wenn Dir meine Antwort hilft, markiere sie bitte entsprechend als Antwort! Danke! :-)

    Hinweis: Meine Posts werden "wie besehen" ohne jedwede Gewähr bereitgestellt, da menschliche, technische und andere Fehler nicht ausgeschlossen werden können.

    Dienstag, 18. August 2015 07:12
  • Hallo Ben

    Danke für die Antwort. Ich habe dies so eingefügt: 

    $mbcombCollection New-Object PSObject -Property @{
                                   -Encoding = ASCII
                                   } | Export-CSV <Datei> -Append
     | Export-Csv C:\_Support\Mail-Adressen\export\MailAddresses.csv -NoTypeInformation -Append

    Leider gibt es immernoch dieses "ÿþ"- Zeichen in der CSV Datei.
    Gibt es noch eine andere Variante?

    Gruss

    codesofa

    Dienstag, 18. August 2015 08:32
  • Hallo

    hänge mal noch den Parameter -Encoding utf8 an dein Export-Csv Befehl.

    Grüße Andy

    Dienstag, 18. August 2015 09:05
  • Hallo Andy

    Habe ich gemacht, leider ohne erfolg...

    Noch ein paar Hintergrundinformationen:

    Unsere Mitarbeiter können uns eine Email schreiben mit folgendem Inhalt im Betreff: Adressen: <Mailgruppe>
    Im Hintergrund wird dann ein AutoIT Programm ausgeführt, dass den Betreff der Email ausliest und den Wert <Mailgruppe> an das Powershellscript weitergibt. Danach nimmt das AutoIT Script das CSV-File und schickt es dem Benutzer zurück.

    Wenn du willst, kann ich das AutoIT Script dir zuschicken.

    Grüsse
    Steve

    Dienstag, 18. August 2015 09:27
  • Irgendwie verstehe ich da ein paar Sachen nicht:

    - Was soll das $mbcombCollection vor "New-Object"? Das muss da weg.
    - Du hast jetzt zweimal Export-CSV drinstehen, da musst Du eins davon rausschmeißen
    - Im PSObject fehlen die ganzen Parameter - Du musst dort die Spaltennamen definieren und diese mit einem Wert versehen, so wie ich es oben angegeben habe


    Gruß

    Ben

    MCSA Windows 8 (.1) MCSA Windows Server 2012 (R2)

    Wenn Dir meine Antwort hilft, markiere sie bitte entsprechend als Antwort! Danke! :-)

    Hinweis: Meine Posts werden "wie besehen" ohne jedwede Gewähr bereitgestellt, da menschliche, technische und andere Fehler nicht ausgeschlossen werden können.

    Dienstag, 18. August 2015 10:06
  • Hallo Ben

    Sorry, habe ich auch gerade bemerkt...

    Was meinst du genau mit Spaltennamen? Kannst du mir ein Beispiel geben?

    Gruss

    codesofa

    Dienstag, 18. August 2015 10:22
  • Z.B.

    ... -Property @{
                   Anrede = $user.title
                   Vorname = $mbx.firstname
                   ...
                   } | Export-CSV...
    So, wie Du es schon im Prinzip bei Dir aufgelistet hast, nur eben im Objekt verpackt. Links stehen die Spaltennamen, rechts der Inhalt.


    Gruß

    Ben

    MCSA Windows 8 (.1) MCSA Windows Server 2012 (R2)

    Wenn Dir meine Antwort hilft, markiere sie bitte entsprechend als Antwort! Danke! :-)

    Hinweis: Meine Posts werden "wie besehen" ohne jedwede Gewähr bereitgestellt, da menschliche, technische und andere Fehler nicht ausgeschlossen werden können.

    Dienstag, 18. August 2015 12:18
  • Hi,

    Encoding:
    Versuch mal -Encoding Default als Parameter von Export-Csv. Das Default hier bezieht sich auf das Umgebungsdefault, nicht das Befehlsdefault. Der deutsche Standard sollte ANSI sein, was dir explizit nicht einmal angeboten wird. Ohne "Default" wird's UTF8 ohne BOM (Um einfach das Encoding zu prüfen verwende Notepad++ - oben gibt's da einen Menü-Punkt "Kodierung".

    Ansonsten, falls die Csv anwenderfreundlich sein soll, empfehle ich -Delimiter ";" und -NoTypeInformation zu verwenden. Der Standard Delimiter im deutschen Excel ist ";", mit dem parameter kann man die Datei dann einfach in Excel öffnen und hat eine Tabelle.

    Grüße,
    Friedrich


    There's no place like 127.0.0.1

    Mittwoch, 19. August 2015 06:38