it-swarm.com.de

PowerShell-Skript mit angezeigten Befehlen

Ich spiele mit PowerShell-Skripten herum und sie funktionieren hervorragend. Ich frage mich jedoch, ob es eine Möglichkeit gibt, auch alle ausgeführten Befehle anzuzeigen, als ob Sie sie manuell selbst eingegeben hätten. Dies ähnelt dem "Echo ein" in Batch-Dateien. Ich habe mir die PowerShell-Befehlszeilenargumente und Cmdlets angesehen, aber nichts Offensichtliches gefunden. Vielen Dank!

39

Der folgende Befehl gibt jede Skriptzeile an Write-Debug- aus.

Set-PSDebug -Trace 1

Von man Set-PSDebug

Wenn der Trace-Parameter auf 1 gesetzt ist, wird jede Skriptzeile bei der Ausführung verfolgt. Wenn der Parameter auf 2 gesetzt ist, werden auch Variablenzuweisungen, Funktionsaufrufe und Skriptaufrufe verfolgt. Wenn der Parameter Step angegeben ist, werden Sie aufgefordert, bevor jede Zeile des Skripts ausgeführt wird.

47
Spongeboy

Wo ich echo on in CMD verwende ich jetzt Write-Verbose und Set-PSDebug -Step stattdessen. Sie sind nicht die gleichen, aber sie sind mächtiger, wenn sie geschickt eingesetzt werden.

5
Jay Bazuzi

Hässlich:

PS > get-content foo.ps1|foreach-object{$_;invoke-expression "$_"}
$procs=get-process powershell
foreach($proc in $procs){$proc.processname}
powershell
PS > get-content foo.ps1
$procs=get-process powershell
foreach($proc in $procs){$proc.processname}
PS >

Das Problem mit dem oben genannten ist, dass, wenn Sie mehrzeilige Befehle wie diesen haben:

foreach($proc in $procs){
  $proc.processname
}

Das obige wird mit meinem obigen Beispiel fehlschlagen, wenn es in foo.ps1 mit dieser Struktur platziert ist ...

2
Marco Shaw
help about_History 

Erzählt Ihnen von allen Befehlen und

Get-History [options]  

gibt die vollständige Liste zurück, damit Sie\display usw. bearbeiten können.

2
Helvick