Назад | Перейти на главную страницу

Сценарий PowerShell, показывающий выполнение команд

Я играю со скриптами PowerShell, и они отлично работают. Однако мне интересно, есть ли способ также показать все запущенные команды, как если бы вы вручную вводили их сами. Это было бы похоже на «включение эха» в пакетных файлах. Я посмотрел на аргументы командной строки PowerShell, на командлеты, но не нашел ничего очевидного. Спасибо!

Следующая команда выведет каждую строку скрипта в Write-Debug-

Set-PSDebug -Trace 1

Из man Set-PSDebug

Если для параметра Trace установлено значение 1, каждая строка скрипта отслеживается по мере ее выполнения. Если для параметра установлено значение 2, также отслеживаются присвоения переменных, вызовы функций и вызовы сценариев. Если указан параметр Step, перед выполнением каждой строки скрипта выводится запрос.

Где я использовал echo on в CMD я сейчас использую Write-Verbose и Set-PSDebug -Step вместо. Они не такие, но они более мощные, если ими умело пользоваться.

Уродливо:

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 >

Проблема с вышесказанным в том, что если у вас есть такие многострочные команды:

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

Вышеупомянутое не удастся с моим примером выше, если он будет помещен в foo.ps1 с такой структурой ...

help about_History 

Расскажу обо всех командах и

Get-History [options]  

вернет вам полный список для управления \ отображением и т. д.