Ersetzungen für das kaufmännische Und-Zeichen und das doppelte kaufmännische Und-Zeichen in PowerShell

Ersetzungen für das kaufmännische Und-Zeichen und das doppelte kaufmännische Und-Zeichen in PowerShell

Im nativen CMD-Prozessor von Windows können Sie &Befehle aneinanderreihen, sodass einer unmittelbar nach dem anderen ausgeführt wird. A &&führt den zweiten Befehl nur aus, wenn der erste ohne Fehler abgeschlossen wurde.

Dies unterscheidet sich von der Weiterleitung von Befehlen zusammen mit |der Ausgabe des ersten Befehlsist nichtan den zweiten Befehl gesendet, werden die Befehle einfach nacheinander ausgeführt und die Ausgabe für jeden wird an den üblichen Ort gesendet.

Allerdings erhalte ich eine Fehlermeldung, wenn ich versuche, &oder &&in PowerShell zu verwenden. Gibt es in PowerShell ähnliche Funktionen oder wird diese Funktion nicht mehr unterstützt?

Antwort1

Der &Operator in PowerShell ist einfach das ;„oder“ Semikolon.

Der &&Operator in PowerShell muss als ifAnweisung ausgeführt werden.

Command ; if($?) {Command}

Beispiel:

tsc ; if($?) {node dist/run.js}

Antwort2

Probieren Sie diese Funktion aus, die ungefähr auf die gleiche Weise verwendet werden kann:

function aa() {
    if($?) {
        $command = [string]::join(' ', $args[1..99])
        & $args[0] $command
    }
}

Jetzt &&kann durch ersetzt werden ; aa, was zwar immer noch nicht perfekt, aber viel prägnanter ist.

cls && build

wird

cls; aa build

Antwort3

Update: Es ist jetzt möglich, dies nativ mit Powershell 7 zu tun

Write-Output 'First' && Write-Output 'Second'

Erste
Sekunde

Wenn jedoch der erste Befehl fehlschlägt (beachten Sie hier das Write-Error):

Write-Error 'Bad' && Write-Output 'Second'

Schlecht

Quelle :https://learn.microsoft.com/en-us/powershell/module/microsoft.powershell.core/about/about_pipeline_chain_operators?view=powershell-7.3

verwandte Informationen