albertminrich
Goto Top

Powershell - Befehl in Powershell-Fenster kopieren

Hallo,

ich komm nicht drauf.
Ich habe in einer Textdatei den Befehl
gci c:
Wenn ich den kopiere ohne den abschließenden Zeilenumbruch und in ein powershell-Fenster einfüge, muss ich ENTER drücken und der Befehl wird ausgeführt.
Dieses ENTER oder RETURN möchte ich mitkopieren, ich markiere also in der Textdatei die Zeile mit dem Befehl incl. Zeilenumbruch, kopiere das und füge es in ein powershell-Fenster ein. Jetzt erscheinen in der nächsten Zeile 2 Pfeile
gci c:
>>
und ich muss wieder ENTER drücken, damit der Befehl ausgeführt wird.
Bei batch ist das kein Problem.

Danke
Gruß
Martin

Content-ID: 7152656754

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

Ausgedruckt am: 24.11.2024 um 05:11 Uhr

Crusher79
Crusher79 14.05.2023 aktualisiert um 20:16:13 Uhr
Goto Top
Hallo,

ist einfach

14-05-_2023_20-15-17

vs.

14-05-_2023_20-15-32

LineFeed lässt es so aussehen, als wenn wir in der neuen Zeilen Sind. Sind ja auch auch. Return ist immer Char(13) - Enter Taste.

Notepad++ hebt diese Zeichen auf Wunsch vor. Mit nur <LF> bekommst du eine neue Zeile, setzt aber das Kommando nicht ab.

mfg Crusher
AlbertMinrich
AlbertMinrich 14.05.2023 um 20:27:20 Uhr
Goto Top
OK, in Notepad++ sehe ich jetzt das CR LF am Ende des Befehls, aber wie kann ich das ändern?
AlbertMinrich
AlbertMinrich 14.05.2023 um 20:42:28 Uhr
Goto Top
Hab gesehen, mit Suchen/Ersetzen kann man das manipulieren.
Mal anders gefragt.
Wie kann ich diese beiden Befehle
gci c:
gci d:
per vb-Script in eine Textdatei schreiben, so dass ich sie einfach mit notepad öffnen, kopieren und in ein powershell-Fenster einfügen kann und sie auch beide hintereinander ohne ENTER ausgeführt werden?
Wie ich in eine Textdatei schreibe, weiß ich natürlich, aber was muss ich am Ende mitgeben? Ein chr(13) geht nicht, das führt nur zu einer Leerzeile in der Textdatei.

Danke
Martin
Crusher79
Crusher79 14.05.2023 um 22:47:48 Uhr
Goto Top
Nein CR und LF sind ja ok.

CHAR13 ist das Gleiche wie CR....

Das wäre ja ok. Was ist mit PS ISE? Kommt da auch alles in einer Zeile?

Normal geht es unter Windows ohne Probleme.
7010350221
7010350221 14.05.2023 aktualisiert um 23:06:40 Uhr
Goto Top
Zitat von @AlbertMinrich:

Hab gesehen, mit Suchen/Ersetzen kann man das manipulieren.
Nein dazu nimmt man in der Regel nicht das Replace-Tool sondern die EOL Konvertierung Unix <=> DOS/Windows.

swwhd

natürlich, aber was muss ich am Ende mitgeben?
vbNewline
bzw.
vbCrLf
https://learn.microsoft.com/de-de/office/vba/language/reference/user-int ...
NordicMike
NordicMike 15.05.2023 aktualisiert um 06:51:32 Uhr
Goto Top
Die Frage ist auch ob der Kopierbefehl das CR mit kopiert bzw in der Powershell mit einfügt. Das könnte man prüfen indem man es in der Powershell in einen Dateieditor einfügt, speichert und dann mit Notepad++ kontrolliert.
mayho33
mayho33 15.05.2023 aktualisiert um 10:12:15 Uhr
Goto Top
Hi,

Einen Zeilenabschluss erreichst du in Powershell mit

;

und einem darauffolgenden Leerzeichen.

Mit einem Backtick
Get-Process `
| where-object...

Kannst du einen Befehl über mehrere Zeilen führen für eine bessere Lesbarkeit

Und übrigends:
gci c:

ist ein unvollständiger Befehl. Vollständig wäre:
gci c:\
AlbertMinrich
AlbertMinrich 15.05.2023 um 13:50:15 Uhr
Goto Top
Also das CR LF ist vorhanden am Ende der Datei. Wenn ich ein zusätzliches vbnewline oder vbcrlf ans Ende der Zeile setze, für das nur zu einer Leerzeile
ps
Brauch ich also gar nicht.
@NordicMike
Die Frage ist auch ob der Kopierbefehl das CR mit kopiert bzw in der Powershell mit einfügt.
Ich glaube, da liegt das Problem.
Wenn ich in einer Eingabeaufforderung diesen Befehl "echo gci c: > datei.txt" ausführe, führt das zu diesem Ergebnis:
ps2
Mache ich das gleiche in einer Powershell: "echo gci c: > .\datei.txt", sieht das so aus:
ps3

Aber warum?
Gruß
Martin
AlbertMinrich
AlbertMinrich 15.05.2023 um 14:05:36 Uhr
Goto Top
Nächste Erkenntnis. Kopiere ich diese Zeile in eine Powershell (ohne Zeilenumbruch)
gci `c:
funktioniert es wie gewünscht.
Leider nicht bei 2 Zeilen auf einmal
gci `c:
gci `d:
Logisch, weil ich ja einen Zeilenumbruch (von der ersten auf die zweite Zeile) mitkopieren muss.
mayho33
mayho33 15.05.2023 aktualisiert um 15:30:37 Uhr
Goto Top
Zitat von @AlbertMinrich:

Nächste Erkenntnis. Kopiere ich diese Zeile in eine Powershell (ohne Zeilenumbruch)
gci `c:
funktioniert es wie gewünscht.
Leider nicht bei 2 Zeilen auf einmal
gci `c:
gci `d:
Logisch, weil ich ja einen Zeilenumbruch (von der ersten auf die zweite Zeile) mitkopieren muss.

Wie oben schon erwähnt:
Einen Zeilenabschluss erreichst du in Powershell mit
;

Nach dem Backtick darf nur noch 1 Leerzeichen sein und dann ein Zeilenumbruch oder eben nach dem Zeilenumbruch ein Leerzeichen. Funkt bei mir einwand frei:
gci c:\ `
| ? { (Split-Path $_ -Leaf) -like "Windows"}; Write-host "HELLLLLOOOOOO!`n`n"; gci c:\ `  
| ? { (Split-Path $_ -Leaf) -like "Program*"}  
Crusher79
Lösung Crusher79 15.05.2023 aktualisiert um 15:59:10 Uhr
Goto Top
ÄHm ich steige hier nicht mehr durch...

Der Mensch ist ja bekanntermaßen ein Gewohnheitstier. Die Frage ist doch: Wie machen wir den Gutenberg?

Strg+V oder rechte Maustaste.

Ich bin so eingefahren, dass ich es nicht gecheckt habe - bis ich nochmal den Post durchgelesen habe. PS kennt generell Abkürzungen. Ein gci C: ist nicht ideal aber funktioniert auch.

Ich habe soeben nochmal folgendes kurz bei mir geprüft - Windows Editor:

gci C:
     

Code mit Strg+C oder über Menü KOPIERT.

1. In PowerShell mit Strg+V einfügen: wir bekommen den "Fehler" - neue Line mit >>.
2. In Powershell Fenster mit RECHTER Maustastatur geklickt: Es fügt ein und führt sofort aus!

Fehlt der Zeilenumbruch macht die rechte Maustaste wie zu erwarten nichts.

Bitte Klick mal munter in in PS mit der RECHTE Maustaste. Dann sollte es passen!
mayho33
mayho33 15.05.2023 um 16:09:34 Uhr
Goto Top
Zitat von @Crusher79:

ÄHm ich steige hier nicht mehr durch...

Der Mensch ist ja bekanntermaßen ein Gewohnheitstier. Die Frage ist doch: Wie machen wir den Gutenberg?

Strg+V oder rechte Maustaste.

Ich bin so eingefahren, dass ich es nicht gecheckt habe - bis ich nochmal den Post durchgelesen habe. PS kennt generell Abkürzungen. Ein gci C: ist nicht ideal aber funktioniert auch.

Ich habe soeben nochmal folgendes kurz bei mir geprüft - Windows Editor:

gci C:
     

Code mit Strg+C oder über Menü KOPIERT.

1. In PowerShell mit Strg+V einfügen: wir bekommen den "Fehler" - neue Line mit >>.
2. In Powershell Fenster mit RECHTER Maustastatur geklickt: Es fügt ein und führt sofort aus!

Fehlt der Zeilenumbruch macht die rechte Maustaste wie zu erwarten nichts.

Bitte Klick mal munter in in PS mit der RECHTE Maustaste. Dann sollte es passen!

Meiner Ansicht nach völlig OK! gci ist der Alias für "Get-ChildItem"
gci

Ich verstehe nur nicht warum ein Zeilenumbruch in der Console jetzt so ein Problem ist. Im Script ist das total irrelevant sobald ";" und "`" im Spiel sind.
Crusher79
Crusher79 15.05.2023 um 16:13:52 Uhr
Goto Top
Zitat von @mayho33:

Ich verstehe nur nicht warum ein Zeilenumbruch in der Console jetzt so ein Problem ist. Im Script ist das total irrelevant sobald ";" und "`" im Spiel sind.

Dachte es ging wie immer um die Zeit? Wir kennnen es doch. Finden einen coolen Codesnippet und wollen den rasch testen.

Ich arbeite so laaange mit der rechten Maustaste, das mir Strg+V nich in den Sinn kam. Wir müssen ja teils eh das PS Fenster in den Vordergrund holen.

Ich hatte nur vermutet, dass es an einen speziellen Editor liegt. \r\n und es passt - Chr(13)Char(10). Je nachdem ob wir z.B. CrystalReports etc. verwenden. Kam ja auch oben die Frage. Normal wenn wir mehr machen, arbeiten wir mit VisualStudio Code und debuggen. Zum Testen nehm ich auch gern den Gutenberg. Da erspart das schon einen Klick. Zwar nicht kriegsentscheidend, aber mich würde das auch nerven face-wink
mayho33
mayho33 15.05.2023 um 16:22:09 Uhr
Goto Top
Zitat von @Crusher79:

Zitat von @mayho33:

Ich verstehe nur nicht warum ein Zeilenumbruch in der Console jetzt so ein Problem ist. Im Script ist das total irrelevant sobald ";" und "`" im Spiel sind.

Dachte es ging wie immer um die Zeit? Wir kennnen es doch. Finden einen coolen Codesnippet und wollen den rasch testen.

Ich arbeite so laaange mit der rechten Maustaste, das mir Strg+V nich in den Sinn kam. Wir müssen ja teils eh das PS Fenster in den Vordergrund holen.

Ich hatte nur vermutet, dass es an einen speziellen Editor liegt. \r\n und es passt - Chr(13)Char(10). Je nachdem ob wir z.B. CrystalReports etc. verwenden. Kam ja auch oben die Frage. Normal wenn wir mehr machen, arbeiten wir mit VisualStudio Code und debuggen. Zum Testen nehm ich auch gern den Gutenberg. Da erspart das schon einen Klick. Zwar nicht kriegsentscheidend, aber mich würde das auch nerven face-wink

Vielleicht das als Erklärung?

about_Special_Characters

und damit
Chapter 4 - One-liners and the pipeline
Crusher79
Crusher79 15.05.2023 um 16:28:50 Uhr
Goto Top
https://superuser.com/questions/405851/copy-and-paste-in-windows-powersh ...

Da kann man sogar das Verhalten einstellen. Stg + Shift + V - dann wird es eingefügt und ausgeführt. Wie beim rechten Mausklick.

15-05-_2023_16-27-38
Crusher79
Crusher79 15.05.2023 um 16:33:35 Uhr
Goto Top
Noch wilder die Menü Punkte:

Im englischen: alt + space + e + p

Sind die hervorgehobenen Buchstaben. Im deutschen wäre es also

alt + leer + b + f

B = Bearbeiten
F = Einfügen.

Eh zu umständlich. ABER auch hier wird der Code sofort ausgeführt!


@AlbertMinrich: Ich empfehle dir die rechte Maustaste. Oder wenn die Maus kaputt ist, könnstest du noch Strg + Shift + V aktivieren. Dann wird der Code auch ausgeführt. Wobei bei so vielen Keystrokes kauft man sich eher eine neue Maus face-wink
Crusher79
Crusher79 15.05.2023 um 16:38:11 Uhr
Goto Top
Zitat von @mayho33:

Vielleicht das als Erklärung?

about_Special_Characters

und damit
Chapter 4 - One-liners and the pipeline

Bin mehr bei `V als Tabulator hängen geblieben. Strg + Shift + V geht ja auch. Fügt ein und führt aus.

Da ich immer die rechte Maustaste nehmen hab ich noch nie drüber nachgedacht. Aber denke das Verketten von Zeilen mit " ` " u.ä. war ja nicht seine Frage. Er wollte doch nur den Gutenberg machen und dass es sofort ausgeführt wird.
AlbertMinrich
AlbertMinrich 15.05.2023 um 16:44:34 Uhr
Goto Top
Vogelwild.
Ich mach normal immer STRG+C und STRG+V.
Aber gut, dann muss ich mir für diese Fälle, so oft brauch ich das ja nicht, die rechte Maustaste angewöhnen.
STRG+SHIFT+V ist auch eine Option, wobei man die Finger schon ganz schön verbiegen muss, wenn man mit einer Hand macht.

Danke für alle Antworten
Gruß
Martin
mayho33
mayho33 15.05.2023 um 16:44:53 Uhr
Goto Top
🤣🤣 omg, die Menü-Shortcuts. Ich weiß nicht. Da klicke ich mich lieber durch anstatt mir die 3 Quadrillionen verschiedenen Kombis jeder Kack IDE, ISE, SDK und was weiß ich zu merken.

Hatte mit STRG-C UND STRG-V nie Probleme. Und was anderes verwende ich gar nicht.

Oder ich bin zu doof das Problem zu verstehen 🤷‍♂️Erinnert mich nur an so manche Diskusion in der Firma wo sich Leute wegen 1 Mausklick mehr tagelang unterhalten können und auch schon mal den ServiceDesk bemühen...
mayho33
mayho33 15.05.2023 um 16:47:37 Uhr
Goto Top
Zitat von @AlbertMinrich:

Vogelwild.
Ich mach normal immer STRG+C und STRG+V.
Aber gut, dann muss ich mir für diese Fälle, so oft brauch ich das ja nicht, die rechte Maustaste angewöhnen.
STRG+SHIFT+V ist auch eine Option, wobei man die Finger schon ganz schön verbiegen muss, wenn man mit einer Hand macht.

Danke für alle Antworten
Gruß
Martin

Machst du das in der ISE? Oder VS-Code? Irgendwie kommt mir vor, dass eventuell die CodePage falsch ist...
AlbertMinrich
AlbertMinrich 15.05.2023 um 16:49:21 Uhr
Goto Top
@mayho33:
Semikolon mit Leerzeichen hatte ich probiert
gci c:; 
gci c:; 
Geht aber auch nur mit Rechtsklick, nicht mit STRG+V
Crusher79
Crusher79 15.05.2023 um 16:49:48 Uhr
Goto Top
Zitat von @mayho33:

Machst du das in der ISE? Oder VS-Code? Irgendwie kommt mir vor, dass eventuell die CodePage falsch ist...

Bei mir ist es in der Kosnole v5.x auch so.

Fehler by Design? Ich nutze seit Jahren rechte Maustaste. Daher denke ich nie drüber nach! Bis heute face-big-smile

Man kann auch in PS Umgebung anpassen. Aber ich meine by Default ist das so oder?
Crusher79
Crusher79 15.05.2023 um 16:52:09 Uhr
Goto Top
https://github.com/microsoft/terminal/issues/6785

Zieht euch das mal rein! Safe Paste.

Damit es NICHT ausgeführt wird. Nun ja - ein gci c: | Remove-Item --force - da kann man nochmal über den Code schauen, bevor er ausgeführt wird.

Scheint by Design so zu sein !
mayho33
mayho33 15.05.2023 aktualisiert um 17:07:38 Uhr
Goto Top
Zitat von @Crusher79:

https://github.com/microsoft/terminal/issues/6785

Zieht euch das mal rein! Safe Paste.

Damit es NICHT ausgeführt wird. Nun ja - ein gci c: | Remove-Item --force - da kann man nochmal über den Code schauen, bevor er ausgeführt wird.

Scheint by Design so zu sein !

Damit ist aber eigentlich gemeint, dass der Code nicht direkt nach dem Paste ausgeführt wird. Siehe cmd.exe.

Für das sas du vermutlich meinst wäre ja eigentlich der "-WhatIf"- Parameter da... 🤔

https://learn.microsoft.com/en-us/powershell/module/microsoft.powershell ...
Crusher79
Crusher79 15.05.2023 um 17:10:35 Uhr
Goto Top
Ja genau!

Aber sorry - ist es nicht genau das, was der TS will? Sofort ausführen? Oder ich verstehe die ganze Frage hier falsch.

@AlbertMinrich: wo stehen wir nun? Passt das mit Strg + Shift + V oder Rechter-Maustaste?

Plus die Erklärung dass es scheinbar bewusst so eingeführt wurde? Oder was möchtest du?
AlbertMinrich
AlbertMinrich 15.05.2023 um 19:10:22 Uhr
Goto Top
Mir reicht, dass es mit Rechtsklick funktioniert.
Danke nochmal an alle.