Эхо PowerShell включено

Это дубликат https://serverfault.com/questions/102098/powershell-script-showing-commands-run. Я подумал, что будет уместнее задать этот вопрос здесь.

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


person Nelson Rothermel    schedule 14.01.2010    source источник
comment
Я программист, и мне нравится PowerShell, но я думаю, что это вопрос, не связанный с программированием, и относится к ServerFault.   -  person Jay Bazuzi    schedule 16.01.2010
comment
Я программист, мне нравится PowerShell, и я думаю, что этот вопрос уместен в stackoverflow. Я использую PowerShell как часть своего инструментария для программирования.   -  person DrFloyd5    schedule 24.01.2020


Ответы (4)


Start-Transcript не перехватывает вывод исполняемого файла. Это шоу стопор для меня. Ненавижу это говорить, но лучший способ, который я нашел для этого, это:

cmd /c powershell.exe -file c:\users\hillr\foo.ps1 > foo.log

Это захватывает все AFAICT.

person Keith Hill    schedule 14.01.2010
comment
Проблема в том, что вы должны разбросать это по всему вашему сценарию, где бы вы ни вызывали EXE. И если вы вызываете чужой скрипт, который вызывает EXE, вам придется модифицировать его скрипт. Так что да, не идеал. :-) - person Keith Hill; 14.01.2010
comment
Ах, ссылка Энди, вероятно, объясняет, почему я не видел многого с start-transcript. Завтра я поиграю с этим еще немного вместе с идеей Кита (и Ричарда ниже). - person Nelson Rothermel; 21.01.2010
comment
обновлена ​​ссылка из первого комментария А вот что в этой статье: Start-Transcript; ipconfig | Out-Default; Stop-Transcript - person papo; 12.12.2019
comment
Но это не будет включать поток ошибок, для этого: ...2>&1 >> file.log - person papo; 12.12.2019

Set-PSDebug -Trace 1
  • 0: отключить трассировку сценария.
  • 1: Отслеживайте строки скрипта по мере их выполнения.
  • 2: Трассировка строк скрипта, присвоение переменных, вызовы функций и скрипты.

Для получения дополнительной информации: https://docs.microsoft.com/en-us/powershell/module/microsoft.powershell.core/set-psdebug?view=powershell-6

person wisbucky    schedule 04.04.2018

C:\workspaces\silverlight> start-transcript -?

NAME
    Start-Transcript

SYNOPSIS
    Creates a record of all or part of a Windows PowerShell session in a text file.


SYNTAX
    Start-Transcript [[-Path] <string>] [-Append] [-Force] [-NoClobber] [-Confirm] [-WhatIf] [<CommonParameters>]


DESCRIPTION
    The Start-Transcript cmdlet creates a record of all or part of a Windows PowerShell session in a text file. The transcript includes all command that the user
     types and all output that appears on the console.


RELATED LINKS
    Online version: http://go.microsoft.com/fwlink/?LinkID=113408
    Stop-Transcript 

REMARKS
    To see the examples, type: "get-help Start-Transcript -examples".
    For more information, type: "get-help Start-Transcript -detailed".
    For technical information, type: "get-help Start-Transcript -full".

Примечание № 1: он записывает только то, что написано в потоке вывода основной консоли, а не предупреждения / ошибки / отладки.

Примечание № 2: если вам нужно записать собственные консольные приложения, вам понадобится небольшой обходной путь

person Richard Berg    schedule 14.01.2010
comment
Я тоже это сделал, но Start-Transcript захватывает другие потоки (кроме потока выполнения). Он просто не захватывает вывод EXE, если вы не используете трюк Out-Default, на который Энди ссылается везде, где вы используете EXE. - person Keith Hill; 14.01.2010

Я добавил -verbose к нужным командам. Например.

Copy-Item c:\xxx d:\xxx -verbose
person Roman O    schedule 01.10.2013