Benutzer mit den meisten Antworten
Powershell ISE kann keine Umlaute

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 .....
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''
- Als Antwort markiert Denniver ReiningMVP, Moderator Mittwoch, 1. August 2018 12:58
Alle Antworten
-
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 .....
- Bearbeitet Peter Murschall Donnerstag, 26. Juli 2018 19:11
-
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''
- Als Antwort markiert Denniver ReiningMVP, Moderator Mittwoch, 1. August 2018 12:58
-
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.
-
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 .....
- Bearbeitet Peter Murschall Freitag, 27. Juli 2018 11:18
-
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 .....
- Bearbeitet Peter Murschall Freitag, 27. Juli 2018 12:28
-
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.
-
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
- Bearbeitet Peter Murschall Freitag, 27. Juli 2018 13:37
-
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''
-
Ja mach' ich :-)
mit freundllichsten Grüßen Peter
- Bearbeitet Peter Murschall Freitag, 27. Juli 2018 13:39
-
.......
Requirements
- Visual Studio 2017
Ernthaft ? Ächz ! :-)
mit freundllichsten Grüßen Peter
- Bearbeitet Peter Murschall Freitag, 27. Juli 2018 13:41