none
Powershell ISE kann keine Umlaute RRS feed

  • Frage

  • Hallo verehrtes Forum :-)

    ich beschäftige mich jetzt seit gut 2 Monaten mit der Powershell.
    Zum Lernen bin ich dabei, einige von meinem (teilweise ziemlich komplexen) BAT/CMD/BTM-Skripts
    umzuschreiben auf Powershell.Eines davon verwendet DISKPART, das habe ich auch schon
    funktionsfähig umgesetzt. Dabei ist mir aufgefallen, daß die PowerShell ISE zurückgelieferte
    Texte anders codiert als die PowerShell selbst, z.B.
    "List Disk"|DISKPART
    liefert in der ISE

    PS C:\Users\PMurschall.WSA\Documents\WindowsPowerShell\Skripte> "List Disk"|Diskpart

    Microsoft DiskPart-Version 6.1.7601
    Copyright (C) 1999-2008 Microsoft Corporation.
    Auf Computer: WSA-GAZ77-DS3H

    DISKPART>
      Datentr„ger ###  Status         Gr”áe    Frei     Dyn  GPT
      ---------------  -------------  -------  -------  ---  ---
      Datentr„ger 0    Online          447 GB    41 GB        *
      Datentr„ger 1    Online         1863 GB      0 B        *
      Datentr„ger 2    Online         1863 GB  1024 KB        *
      Datentr„ger 3    Online          119 GB  2048 KB        *
      Datentr„ger 4    Online          238 GB     8 MB        *

    während die PowerShell selber korrekt arbeitet:
    PS C:\Users\PMurschall.WSA\Documents\WindowsPowerShell\Skripte> "List DISK"|DISKPART

    Microsoft DiskPart-Version 6.1.7601
    Copyright (C) 1999-2008 Microsoft Corporation.
    Auf Computer: WSA-GAZ77-DS3H

    DISKPART>
      Datenträger ###  Status         Größe    Frei     Dyn  GPT
      ---------------  -------------  -------  -------  ---  ---
      Datenträger 0    Online          447 GB    41 GB        *
      Datenträger 1    Online         1863 GB      0 B        *
      Datenträger 2    Online         1863 GB  1024 KB        *
      Datenträger 3    Online          119 GB  2048 KB        *
      Datenträger 4    Online          238 GB     8 MB        *

    DISKPART>
    Das ärgerliche ist, daß in der ISE sowohl der Debugger als auch das Skript dann "falsch" arbeitet, so daß
    solche Sachen wie

      $aktZeile -Match "  Datenträger (?<disknr>...) +(?<status>.............) +(?<groesse>.......) +(?<frei>.......) +(?<dyn>...) +(?<gpt>...)" | Out-Null
    
    dann nicht funktionieren.

    Frage ist jetzt: Was passiert da ? Kann man das irgendwie einstellen ?
    Oder ist das ein Bug ?

    Mit freundlichsten Grüßen
    Peter Murschall


    mit freundllichsten Grüßen Peter ____________________________________________________________ Your OS is like a Wigwam - no Windows, no Mouse, Apache inside .....

    Donnerstag, 26. Juli 2018 15:52

Antworten

  • Dieses Problem ist nicht neu und wurde, soviel ich weiß, auch schon mehrfach an Microsoft gemeldet und wird immer mal wieder (oder auch permanent) auf verschiedenen Plattformen diskutiert. Auch schon hier im Forum ;-) Bug in Powershell_ISE.

    Am Ende des Tages, wirst Du vermutlich dafür keine einfache, schnelle Lösung finden.

    ABER: Die Powershell_ISE ist ja sowieso "nur" die Entwicklungsumgebung für Powershell-Scripte. Fertige Scripte müssen in der Konsole lauffähig sein.

    Nach meiner Erfahrung bringt es wenig, viel Energie in etwas zu stekcen, was man wahrschienlich sowieso nicht ändern kann. Um manche/bekannte Fehler arbeitet man eben einfach "drumherum" und investiert seine gesparte Energie in ewtas Nutzbringenderes. ;-) :-D


    Best regards,

    (79,108,97,102|%{[char]$_})-join''

    Donnerstag, 26. Juli 2018 19:56

Alle Antworten

  • Vielleicht wirst du ja hier fündig:
    https://stackoverflow.com/questions/22349139/utf-8-output-from-powershell

    Donnerstag, 26. Juli 2018 16:42
  • Nicht so ganz, da war ich nämlich schon :-)
    Es geht ja auch nicht um die Powershell sondern um die PowerShell ISE
    PowerShell selber und die darin ablaufenden Skripte arbeiten wie erwartet.
    Selbst wenn ich in der ISE mit Textumleitungen in Dateien arbeite, komme ich nicht weiter ...


    mit freundllichsten Grüßen Peter ____________________________________________________________

    Your OS is like a Wigwam - no Windows, no Mouse, Apache inside .....


    Donnerstag, 26. Juli 2018 17:57
  • Dieses Problem ist nicht neu und wurde, soviel ich weiß, auch schon mehrfach an Microsoft gemeldet und wird immer mal wieder (oder auch permanent) auf verschiedenen Plattformen diskutiert. Auch schon hier im Forum ;-) Bug in Powershell_ISE.

    Am Ende des Tages, wirst Du vermutlich dafür keine einfache, schnelle Lösung finden.

    ABER: Die Powershell_ISE ist ja sowieso "nur" die Entwicklungsumgebung für Powershell-Scripte. Fertige Scripte müssen in der Konsole lauffähig sein.

    Nach meiner Erfahrung bringt es wenig, viel Energie in etwas zu stekcen, was man wahrschienlich sowieso nicht ändern kann. Um manche/bekannte Fehler arbeitet man eben einfach "drumherum" und investiert seine gesparte Energie in ewtas Nutzbringenderes. ;-) :-D


    Best regards,

    (79,108,97,102|%{[char]$_})-join''

    Donnerstag, 26. Juli 2018 19:56
  • Moin,

    einen CMD-Wrapper für DISKPART in einen PowerShell-Wrapper für DISKPART umzuschreiben, ist in der Regel nicht sinnvoll. Am Ende des Tages rufst Du doch wieder eine "fremde" EXE auf.

    Ab Windows 8/Server 2012 kann man das allermeiste, wenn nicht sogar alles, was DISKPART kann, direkt in PowerShell umsetzen. Hier ein paar Beispiele: https://www.thomasmaurer.ch/2012/04/replace-diskpart-with-windows-powershell-basic-storage-cmdlets/ . Und hier arbeitest Du mit "richtigen" Objekten, Textkodierungen spielen also keine Rolle.


    Evgenij Smirnov

    I work @ msg services ag, Berlin -> http://www.msg-services.de
    I blog (in German) @ http://it-pro-berlin.de
    my stuff in PSGallery --> https://www.powershellgallery.com/profiles/it-pro-berlin.de/
    Exchange User Group, Berlin -> https://exusg.de
    Windows Server User Group, Berlin -> http://www.winsvr-berlin.de
    Mark Minasi Technical Forum, reloaded -> http://newforum.minasi.com


    In theory, there is no difference between theory and practice. In practice, there is.

    Donnerstag, 26. Juli 2018 20:34
  • Danke Olaf,
    diese Gedanken habe ich auch schon gehabt :-)
    Deshalb hatte ich ja schon den Bug unterstellt.
    Das "DrumherumArbeiten" ist natürlich möglich aber lästig :-)


    mit freundllichsten Grüßen Peter ____________________________________________________________

    Your OS is like a Wigwam - no Windows, no Mouse, Apache inside .....


    Freitag, 27. Juli 2018 11:11
  • Danke für die Antwort Evgenij,
    mein Ziel ist ja auch nicht ein CMD-Wrapper für DISKPART etc., sondern erstmal das Kennenlernen der PowerShell.
    Dazu versuche ich ja auch diverse Skripte aus CMD/VBS-Zeiten umzustricken, um halt die andersartigen Konzepte der PowerShell zu erfassen.
    Ich weiß schon, daß es da entsprechende CMDLETs gibt, aber soweit bin ich noch nicht.

    Kommt aber noch :-)


    mit freundllichsten Grüßen Peter ____________________________________________________________

    Your OS is like a Wigwam - no Windows, no Mouse, Apache inside .....




    Freitag, 27. Juli 2018 11:16
  • Vielleicht hilft ja dieser Hinweis:

    https://community.spiceworks.com/topic/527939-powershell-ise-encoding

    Im Windows gibt es neben der Default-Codepage (abhängig von der Sprache, in deutsch = 1252) noch die OEM-Codepage (meist 850) für die CMD-Box, und zwischen diesen beiden sind Umlaute anders kodiert. Die ISE nimmt da wohl die OEM-Codepage.

    Probiere also einfach mal einen CHCP 1252.

    Freitag, 27. Juli 2018 11:41
  • Den "Hinweis" habe ich schon verfolgt, auch den Link auf die Seite, hat aber nix gebracht.
    Ich habe einige Sachen durchprobiert, mit $OutputEncoding bzw. [Console]::OutputEncoding usw., hat aber nix geändert. Die ISE läßt sich von CHCP 1252 absolut nicht beeindrucken, Powershell selber schon !
    Es muß ein Bug sein, denn ich bin erst vor ca. 2 Wochen von PowerShell 2 auf 5.1 umgestiegen, und in PowerShell 2 hat die ISE richtig gearbeitet.
    Also bleibe ich jetzt dabei, mit diesem Zustand zu leben und drumherumzuarbeiten :-)


    mit freundllichsten Grüßen Peter




    Freitag, 27. Juli 2018 12:35
  • Die ISE wird meines Wissens, wie auch die Windows Powershell selbst, nicht weiterentwickelt. Über kurz oder lang werden wir uns wohl an VSCode gewöhnen müssen. Schau's Dir doch mal an, vielleicht gefällt's Dir ja so gut, dass Du die ISE gar nciht mehr brauchst.  ;-)

    Best regards,

    (79,108,97,102|%{[char]$_})-join''

    Freitag, 27. Juli 2018 12:57
  • Vielleicht noch eine Alternative (da die VS-Comunity-Edition ja auch frei ist):
    https://marketplace.visualstudio.com/items?itemName=AdamRDriscoll.PowerShellToolsforVisualStudio2017-18561
    Freitag, 27. Juli 2018 13:11
  • Ja mach' ich :-)

    mit freundllichsten Grüßen Peter

    Freitag, 27. Juli 2018 13:38
  • .......

    Requirements

    • Visual Studio 2017

    Ernthaft ? Ächz ! :-)


    mit freundllichsten Grüßen Peter

    Freitag, 27. Juli 2018 13:41
  • Wieso nicht?
    Für .Net-/C++Anwendungen nehme ich das schon lange (seit 2005), warum nicht nun auch für PowerShell;-)?
    Freitag, 27. Juli 2018 13:55