web-dev-qa-db-fra.com

Script PowerShell, montrant l'exécution des commandes

Je joue avec les scripts PowerShell et ils fonctionnent très bien. Cependant, je me demande s'il existe un moyen d'afficher également toutes les commandes qui ont été exécutées, comme si vous les tapiez manuellement vous-même. Ce serait similaire à "echo on" dans les fichiers batch. J'ai regardé les arguments de ligne de commande PowerShell, les applets de commande, mais je n'ai rien trouvé d'évident. Merci!

39
Nelson Rothermel

La commande suivante affichera chaque ligne de script dans Write-Debug-

Set-PSDebug -Trace 1

De man Set-PSDebug

Lorsque le paramètre Trace est défini sur 1, chaque ligne de script est tracée lors de son exécution. Lorsque le paramètre est défini sur 2, les affectations de variables, les appels de fonction et les appels de script sont également tracés. Si le paramètre Step est spécifié, vous êtes invité avant l'exécution de chaque ligne du script.

47
Spongeboy

Où j'ai utilisé echo on en CMD, j'utilise maintenant Write-Verbose et Set-PSDebug -Step au lieu. Ce ne sont pas les mêmes, mais ils sont plus puissants s'ils sont maniés habilement.

5
Jay Bazuzi

Laid:

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 >

Le problème avec ce qui précède est que si vous avez des commandes multilignes comme celle-ci:

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

Ce qui précède échouera avec mon exemple ci-dessus s'il est placé dans foo.ps1 avec cette structure ...

2
Marco Shaw
help about_History 

Vous expliquera toutes les commandes et

Get-History [options]  

renverra la liste complète à manipuler\afficher, etc.

2
Helvick