"echo on" в powershell или как заставить Powershell выводить командные строки всех команд, ВКЛЮЧАЯ нативные, вызываемые сценарием? - PullRequest
1 голос
/ 11 июня 2019

Мой вопрос может показаться дубликатом PowerShell "echo on" , но это не так.

Я не заинтересован в захвате вывода команды, но в самой командной строке каждогоКоманда, выполняемая сценарием, включая собственные команды.

Это то, что делает "echo on" в cmd, и это то, что я ищу.Set-PSDebug -Trace 1 не делает этого и не пропускает флаг -Verbose.

До сих пор я не видел пути, кроме как выводить их сам, что само по себе является огромной болью.

ТакМожет ли Powershell делать то, что "echo on" делает в cmd?

EDIT 1

Не идеально, но я бы принял ответ, предлагающий использовать функцию-обертку, которая быполучить команду (нативную или powershell) с параметрами и выполнить команду, одновременно сохраняя лог в соответствующей командной строке.Конечно, код функции-обертки должен быть частью ответа.

EDIT 2

Следующий тривиальный пример демонстрирует, почему Set-PSDebug -Trace 1 этого не делает:

tasklist `
    /fi "status eq running" | Select-Object -First 4

Обратите внимание:

C:\> cat C:\temp\1.ps1
tasklist `
    /fi "status eq running" | Select-Object -First 4
C:\> Set-PSDebug -Trace 1
C:\> C:\temp\1.ps1
DEBUG:    1+  >>>> C:\temp\1.ps1
DEBUG:    1+  >>>> tasklist `

Image Name                     PID Session Name        Session#    Mem Usage
========================= ======== ================ =========== ============
csrss.exe                      756 Console                    1      2,816 K
C:\>

РЕДАКТИРОВАТЬ 3

Для сравнения посмотрите эквивалентный скрипт в cmd с echo on:

C:\>type c:\temp\1.cmd
@echo on
tasklist ^
    /fi "status eq running" |findstr/n ^^|findstr "^[1-4]:"
C:\>c:\temp\1.cmd

C:\>tasklist     /fi "status eq running"   | findstr/n ^  | findstr "^[1-4]:"
1:
2:Image Name                     PID Session Name        Session#    Mem Usage
3:========================= ======== ================ =========== ============
4:csrss.exe                      756 Console                    1      2,328 K

C:\>

РЕДАКТИРОВАТЬ 4

start-transcript тоже не делает этого:

C:\WINDOWS\system32> cat c:\temp\1.ps1
tasklist `
    /fi "status eq running" | Select-Object -First 4 | Out-Default
C:\WINDOWS\system32> Start-Transcript
Transcript started, output file is ~\Documents\PowerShell_transcript.L-PF0TBKV7.Sr1ntThx.20190611143800.txt
C:\WINDOWS\system32> c:\temp\1.ps1

Image Name                     PID Session Name        Session#    Mem Usage
========================= ======== ================ =========== ============
csrss.exe                      756 Console                    1      2,936 K
C:\WINDOWS\system32> Stop-Transcript
Transcript stopped, output file is ~\Documents\PowerShell_transcript.L-PF0TBKV7.Sr1ntThx.20190611143800.txt
C:\WINDOWS\system32> cat ~\Documents\PowerShell_transcript.L-PF0TBKV7.Sr1ntThx.20190611143800.txt
**********************
Windows PowerShell transcript start
Start time: 20190611143800
Username: xyz\me
RunAs User: xyz\me
Configuration Name:
Machine: L-PF0TBKV7 (Microsoft Windows NT 10.0.16299.0)
Host Application: C:\Windows\System32\WindowsPowerShell\v1.0\powershell.exe
Process ID: 25508
PSVersion: 5.1.16299.1004
PSEdition: Desktop
PSCompatibleVersions: 1.0, 2.0, 3.0, 4.0, 5.0, 5.1.16299.1004
BuildVersion: 10.0.16299.1004
CLRVersion: 4.0.30319.42000
WSManStackVersion: 3.0
PSRemotingProtocolVersion: 2.3
SerializationVersion: 1.1.0.1
**********************
Transcript started, output file is ~\Documents\PowerShell_transcript.L-PF0TBKV7.Sr1ntThx.20190611143800.txt
C:\WINDOWS\system32
>
PS>c:\temp\1.ps1

Image Name                     PID Session Name        Session#    Mem Usage
========================= ======== ================ =========== ============
csrss.exe                      756 Console                    1      2,936 K
C:\WINDOWS\system32
>
PS>Stop-Transcript
**********************
Windows PowerShell transcript end
End time: 20190611143810
**********************
C:\WINDOWS\system32>

Как видите, он не содержит командной строки.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...