본문 바로가기
Windows/PowerShell

PowerShell | 꼭 필요한 것들 !필수!, Confirm 과 WhatIf, 확인 과 만약

by 지혜를 탐구하는 오딘 2022. 6. 30.
728x90
반응형

PowerShell 은 운영체제에 거의 직접적으로 접근하기 때문에,

여러 가지 부분에서 아주아주 강력하게 운영체제를 다룰 수 있다.

그렇기에 때로는 조심스럽게 사용해야 한다.

 

개발 과정에서 명령어(코드)가 제대로 돌아가는지 확인하기 위해서 사용하는 기능 2가지가 있다.

 

Confirm 과 WhatIf 이다.

 

Confirm 은 사용자의 클릭 횟수를 받는 것이고,

WhatIf 는 실행은 하지만, 시스템에 영향을 주지 않는 것이다.

 

테스트 해보자!

 

1. Confirm | 실행하기 전 사용자의 허락을 받는 옵션

"#########################################"
"#### Start PowerShell, about 'Confirm'"

# 새 폴더 만들기, 폴더 이름 'NaEaW', 경로 '\' , 사용자의 확인을 받아서 실행
New-Item -Name "NaEaW" -Path "\" -ItemType Directory -Confirm

# 폴더 내 목록 보기, 경로 '\', 이름이 ~~NaE~~~ 인 것들만
Get-ChildItem -Path "\" -Name *NaE*

주석에 작성한 것과 같이, 

사용자의 허가를 받아서, 새로운 디렉토리를 만드는 것이다.

 

실행 결과를 보자.

Confirm 창이 생겼고, 'yes'를 클릭하면, 폴더를 하나 만든다. 만약 No 를 선택하면 디렉토리를 만들지 않는다.

 

 

2. WhatIf | 실행은 되나 실행되지 않는 옵션. 명령어 오류만 확인

"#########################################"
"#### Start PowerShell, about 'Confirm'"

# 새 폴더 만들기, 폴더 이름 'NaEaW', 경로 '\'
New-Item -Name "NaEaW" -Path "\" -ItemType Directory -WhatIf

# 폴더 내 목록 보기, 경로 '\', 이름이 ~~NaE~~~ 인 것들만
Get-ChildItem -Path "\" -Name *NaE*

confirm 과 달리, 바로 실행한다. 

하지만, 명령어 실행 후에도 변하는 게 없다. 즉, 명령어의 오류만 검사할 뿐 실행은 되지 않는다.

 

5번 라인에서, ItemType에 오타를 줬다.

결과는 오류만 반환할 뿐, 오류가 없어도 명령어 실행에 따른 결과는 없다.

 

 

3. 결론

파일 삭제, Remove-Item 같은 것이나, Recurse 같은 것 등을 테스트 할 때에 -Confirm-WhatIf 이 두 옵션을  적절히 섞어서 사용하면 테스트 코드가 완벽하게 돌아갈 수 있을 것이다.

 

 

 

 

728x90
반응형

댓글