PowerShell에서 조건 브레이크 포인트 설정하기

저작권 안내
  • 책 또는 웹사이트의 내용을 복제하여 다른 곳에 게시하는 것을 금지합니다.
  • 책 또는 웹사이트의 내용을 발췌, 요약하여 강의 자료, 발표 자료, 블로그 포스팅 등으로 만드는 것을 금지합니다.

PowerShell에는 PowerShell ISE라는 개발도구가 포함되어 있습니다. 이 개발도구를 이용하면 Visual Stuio와 같이 브레이크 포인트를 설정하고 한줄 단위로 실행해 볼 수 있습니다.

브레이크 포인트를 설정하고 싶은 줄에서 F9키를 누르면됩니다. 하지만 루프를 돌 때마다 브레이크 포인트가 걸린다면 디버깅 하기가 어려울 때가 많습니다. 이럴때에는 특정 값일 때에만 브레이크 포인트가 걸리도록 조건 브레이크 포인트를 설정하면 됩니다.

PowerShell ISE에서 gci.ps1라는 이름으로 아래 스크립트를 저장합니다.

gci.ps1
$list = Get-ChildItem C:\Windows

foreach ($i in $list)
{
    Write-Output $i.Name
}

PowerShell ISE에도 일반 PowerShell 프롬프트와 같이 명령을 입력할 수 있는 곳이 있습니다. 이곳에 아래와 같이 입력하여 조건 브레이크 포인트를 설정합니다.

Set-PSBreakpoint -Line 5 -Script gci.ps1 -Action {if ($i.Name -match "notepad.exe") { break }}

(두줄이 아니고 한줄입니다.)

-Line 5는 스크립트 상에서 브레이크 포인트를 설정할 줄 번호입니다. $i.Name이 notepad.exe와 같으면 브레이크가 걸리도록 설정하였습니다.

이제 PowerShell ISE에서 F5를 눌러 스크립트를 실행합니다.

스크립트가 실행되면 그림과 같이 $i.name이 notepad.exe일 때 브레이크 포인트가 걸립니다.

PowerShell ISE가 아니더라도 PowerShell 프롬프트에서도 똑같이 브레이크 포인트를 설정할 수 있습니다. 이때에는 .\gci.ps1를 입력하여 스크립트를 실행하면 브레이크 포인트가 걸립니다. 그리고 브레이크 포인트가 걸리면 디버그 모드에 진입할 수 있습니다. 디버그 모드에서는 트레이스를 하려면 일일이 명령을 입력해야 하므로 PowerShell ISE를 이용하는 것이 편리합니다.


저작권 안내

이 웹사이트에 게시된 모든 글의 무단 복제 및 도용을 금지합니다.
  • 블로그, 게시판 등에 퍼가는 것을 금지합니다.
  • 비공개 포스트에 퍼가는 것을 금지합니다.
  • 글 내용, 그림을 발췌 및 요약하는 것을 금지합니다.
  • 링크 및 SNS 공유는 허용합니다.

Published

2010-08-29