명령 실행을 보여주는 PowerShell 스크립트


36

PowerShell 스크립트를 가지고 놀고 있으며 훌륭하게 작동합니다. 그러나 수동으로 직접 입력하는 것처럼 실행 된 모든 명령을 표시 할 수있는 방법이 있는지 궁금합니다. 이것은 배치 파일의 "echo on"과 유사합니다. PowerShell 명령 줄 인수 인 cmdlet을 살펴 보았지만 분명한 내용을 찾지 못했습니다. 감사!

답변:


44

다음 명령은 각 스크립트 줄을 Write-Debug-

Set-PSDebug -Trace 1

에서 man Set-PSDebug

Trace 매개 변수가 1로 설정되면 각 스크립트 줄이 실행될 때 추적됩니다. 매개 변수가 2로 설정되면 변수 지정, 함수 호출 및 스크립트 호출도 추적됩니다. Step 매개 변수가 지정되면 스크립트의 각 행이 실행되기 전에 프롬프트가 표시됩니다.


을 사용하는 스크립트에 이것을 추가하는 Param경우이 행을 매개 변수 정의 블록 아래에 배치하십시오. 그렇지 않으면 오류가 발생할 수 있습니다.
kayleeFrye_onDeck

4

내가 사용하는 경우 echo onCMD에서, 지금 사용 Write-Verbose하고 Set-PSDebug -Step대신. 그것들은 같지 않지만 능숙하게 사용하면 더 강력합니다.


2

추한:

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에 배치하면 위의 내용이 실패합니다 ...


그래, 나는 이와 같은 반 해결책을 계속 찾습니다. 나는 정말로 내가 원하는 것에 대해 "은 총알"이 없다고 생각한다. 이러한 솔루션으로 창의력을 발휘해 주셔서 감사합니다. 지금은 몇 가지 옵션이 있으며 여기서 어디로 갈지 결정해야합니다.
Nelson Rothermel

2
help about_History 

모든 명령과

Get-History [options]  

조작 / 표시 등을위한 전체 목록을 반환합니다.


2
명령을 표시하는 "set-psdebug -trace 1"을 찾았지만 원하지 않는 추가 "노이즈"가 많이 있습니다. get-history는 스크립트에서 아무것도 출력하지 않습니다. 그것이 스크립트의 끝에 붙일 수는 있지만 명령은 인라인이 아니고 (명령 출력 전에) 예외는 건너 뜁니다 (물론 그것을 잡지 않는 한). 명심해야 할 것은 여전히 ​​좋은 아이디어입니다. 다른 아이디어가 있습니까?
Nelson Rothermel

아-입력과 출력을 캡처하고 싶거나 적어도 입력 명령을 즉시 출력하고 해당 출력을 에코하고 싶습니까? 이를 수행하는 한 가지 방법은 결과를 배열로 푸시 한 다음 명령을 출력 한 get-history 결과를 반복하여 출력합니다.
Helvick

start-transcript는 원하는 것을 수행 할 수도 있지만 작업의 콘솔 텍스트 부분으로 제한됩니다.
Helvick

배치 파일이 작동하는 방식과 동일합니다. 현재 배치 파일이 많이 있으며 PowerShell 스크립트로 대체 할 가능성을 찾고 있습니다. 우리는 스케줄링, 출력 히스토리 유지 등을위한 소프트웨어를 가지고 있습니다. 입력 명령이 반영되지 않으면 디버그하기가 더 어렵습니다. 결과를 푸시하려면 모든 명령 에서이 작업을 수행하고 예외를 잡는 등의 조치가 필요하므로 아무것도 놓치지 마십시오. 다른 옵션이지만 내가 찾고있는 것은 아닙니다. 하나의 옵션을 선택하고 실행해야 할 수도 있습니다.
Nelson Rothermel

start-transcript를 시도했지만 시작 / 중지되었다고 기록했지만 그 사이에는 아무것도 없었습니다. 대화 형 명령을위한 곳을 읽었습니다.
Nelson Rothermel
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.