63 votes

PowerShell script, montrant les commandes exécutées

Je m'amuse avec des scripts PowerShell scripts 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. Cela serait similaire à "echo on" dans les fichiers batch. J'ai regardé les arguments de la ligne de commande PowerShell, les cmdlets, mais je n'ai rien trouvé d'évident. Je vous remercie de votre attention.

66voto

unrealtrip Points 510

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

Set-PSDebug -Trace 1

から man Set-PSDebug

Lorsque le paramètre Trace est défini sur 1, chaque ligne de script est tracée au fur et à mesure de son exécution. qu'elle est exécutée. Lorsque le paramètre est fixé à 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é, un message d'avertissement vous est envoyé avant chaque ligne du fichier script est exécutée.

7voto

Mark Renouf Points 13128

Où j'ai utilisé echo on en CMD, j'utilise maintenant Write-Verbose y Set-PSDebug -Step au lieu de cela. Ils ne sont pas identiques, mais ils sont plus puissants s'ils sont maniés avec habileté.

2voto

Tony Eichelberger Points 1586
help about_History 

Il vous informera sur toutes les commandes et

Get-History [options]  

renverra la liste complète que vous pourrez manipuler \display etc.

2voto

ckal Points 1551

Moche :

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 sur plusieurs lignes 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...

SistemesEz.com

SystemesEZ est une communauté de sysadmins où vous pouvez résoudre vos problèmes et vos doutes. Vous pouvez consulter les questions des autres sysadmins, poser vos propres questions ou résoudre celles des autres.

Powered by:

X