Ist es möglich, eine PowerShell-Befehlszeile auf mehrere Zeilen aufzuteilen?
In Visual Basic kann ich den Unterstrich ( _
) verwenden, um den Befehl in der nächsten Zeile fortzusetzen.
powershell
multiline
eXXL
quelle
quelle
sh
Befehl senden möchten, gelten die Bash-Konventionen, damit Sie Backslash verwenden können. In diesem Fall sollte Ihr Skript auch Endungen im Unix-Stil haben.Antworten:
Sie können ein Leerzeichen gefolgt vom Grabakzent (Backtick) verwenden:
Dies ist jedoch immer nur in den oben gezeigten Fällen erforderlich. Normalerweise erhalten Sie eine automatische Zeilenfortsetzung, wenn ein Befehl zu diesem Zeitpunkt syntaktisch nicht vollständig sein kann. Dies beinhaltet das Starten eines neuen Pipeline-Elements:
funktioniert ohne Probleme, da nach dem
|
Befehl der Befehl nicht abgeschlossen werden kann, da ein anderes Pipeline-Element fehlt. Auch das Öffnen von geschweiften Klammern oder anderen Klammern ermöglicht die direkte Fortsetzung der Linie:Ähnlich wie das
|
Komma funktioniert auch in einigen Kontexten:Beachten Sie jedoch, dass ähnlich wie beim automatischen Einfügen von Semikolons in JavaScript einige Dinge ähnlich unterbrochen sind, da der Zeilenumbruch an einer Stelle auftritt, an der eine gültige Anweisung vorangestellt ist :
wird nicht funktionieren.
Schließlich können Zeichenfolgen (in allen Varianten) auch über eine einzelne Zeile hinausgehen:
Sie enthalten dann die Zeilenumbrüche innerhalb der Zeichenfolge.
quelle
|
und{
.Ich habe gerade herausgefunden, dass zwischen dem Back Tick und dem Zeilenumbruch kein Zeichen stehen darf . Selbst Leerzeichen führen dazu, dass der Befehl nicht funktioniert.
quelle
In den meisten C-ähnlichen Sprachen platziere ich meine Klammern absichtlich dort, wo sie meiner Meinung nach den Code am einfachsten lesen lassen.
Der Parser von PowerShell erkennt, wenn eine Anweisung eindeutig nicht vollständig ist, und blickt in die nächste Zeile. Stellen Sie sich beispielsweise ein Cmdlet vor, das einen optionalen Skriptblockparameter verwendet:
Wenn der Skriptblock sehr lang ist, möchten Sie möglicherweise schreiben:
Dies funktioniert jedoch nicht: Der Parser sieht zwei Anweisungen. Der erste ist
Get-Foo
und der zweite ist ein Skriptblock. Stattdessen schreibe ich:Ich könnte das Zeilenfortsetzungszeichen (`) verwenden, aber das führt zu schwer lesbarem Code und führt zu Fehlern.
Da in diesem Fall die offene Klammer in der vorherigen Zeile stehen muss, folge ich diesem Muster überall:
Bei langen Pipelines breche ich einfach nach dem Pipe-Zeichen (
|
):quelle
if
undforeach
undtry
dann? Sie erlauben Skriptblöcke in der nächsten Zeile ... das bedeutet, dass es möglich istUm die Antwort von Cristobalito zu erweitern :
Zum Beispiel:
Signieren Sie ein PowerShell-Skript in der Befehlszeile. Keine Zeilenumbrüche.
quelle
In PowerShell und PowerShell ISE ist es auch möglich, Shift+ Enteram Ende jeder Zeile für die mehrzeilige Bearbeitung zu verwenden (anstelle des Standard-Backticks
`
).quelle
SHIFT-ENTER
Trick nicht kennen .PSReadLine
Modul oder ein gleichwertiges Modul verwendet wird. In der Standard-Windows-Konsole sind EingabefunktionenEnter
undShift+Enter
funktional gleichwertig.PSReadline
Modul arbeitet in der Konsole Host nur (nicht ISE). 2)Shift+Enter
funktioniert auf dem Konsolenhost nur bei VerwendungPSReadline
. 3)Shift+Enter
hat immer in der ISE gearbeitet. 4) Wenn Sie den Konsolenhost ohne verwendenPSReadline
,Shift+Enter
entspricht dies funktional dem DrückenEnter
.Wenn Sie versuchen, Zeichenfolgen in mehrere Zeilen zu trennen, können Sie das "+" verwenden. Zum Beispiel:
Wird genauso aussehen wie:
quelle
Ich gehe davon aus, dass Sie in der Befehlszeile darüber sprechen. Wenn es sich um ein Skript handelt, fungiert eine neue Zeile als Befehlsbegrenzer.
Verwenden Sie in der Befehlszeile ein Semikolon ';'
quelle
;
, um den Befehl zu trennen\\
bei allen Backslashes\
."'
Option, um eine sichere Adresse zu übergeben und den Befehl wie "'PATH'" zu wechseln.Dieser ps1-Befehl installiert das Gebietsschema des pfx-Zertifikats.
quelle
Es gibt sooo viele Möglichkeiten, eine Zeile in Powershell fortzusetzen, mit Pipes, Klammern, Klammern, Operatoren, Punkten, sogar mit einem Komma. Hier ist ein Blog darüber: https://get-powershellblog.blogspot.com/2017/07/bye-bye-backtick-natural-line.html
Sie können direkt nach Aussagen wie foreach und if fortfahren.
quelle
Quelle
nicht Backquote verwenden
quelle
Verwenden Sie einfach `Zeichen, um den Befehl auf einer mehrzeiligen Seite zu trennen
quelle
Fügen Sie hier einfach einen Eckfall hinzu. Es könnte Ihnen 5 Minuten sparen. Wenn Sie eine Aktionskette verwenden, müssen Sie "." Lassen Sie am Ende der Zeile ein Leerzeichen gefolgt vom "` "(Backtick). Ich habe das auf die harte Tour herausgefunden.
quelle