워로디스

PowerShell. ps1 스크립트 파라미터 작성 간단 가이드 본문

개발/PowerShell

PowerShell. ps1 스크립트 파라미터 작성 간단 가이드

워로디스 2026. 11. 5. 22:47

1. 기본 규칙

  1. 필수 파라미터: 앞쪽에 선언하고 위치 기반 전달 허용
  2. 선택 파라미터: 뒤쪽에 선언하고 이름 기반 전달 권장
  3. 타입 명시: [string], [int], [bool], [switch] 등
  4. 필수 여부: [Parameter(Mandatory)] 사용
  5. 기본값: 선택 파라미터에 적절한 기본값 지정
  6. Boolean 처리:
    • [switch]: -Force처럼 옵션 존재 여부로 제어
    • [bool]: $true, $false 값을 직접 전달
  1. 입력 검증: 단순 검증은 ValidateSet, ValidateRange 등 활용

2. 권장 템플릿

[CmdletBinding(PositionalBinding = $false)]
param(
    [Parameter(Mandatory, Position = 0)]
    [string]$Source,

    [Parameter(Mandatory, Position = 1)]
    [string]$Destination,

    [ValidateSet('Copy', 'Move')]
    [string]$Mode = 'Copy',

    [switch]$Force
)
  • PositionalBinding = $false: 암묵적인 위치 기반 매핑 비활성화
  • Position = 0, 1: 해당 파라미터만 위치 기반 전달 허용
  • Mandatory: 필수 입력 지정
  • ValidateSet: 허용 가능한 값 제한
  • [switch]: 지정하면 $true, 생략하면 $false

3. 실행 예시

# 위치 기반 전달
.\task.ps1 'C:\A' 'C:\B'

# 선택 옵션 추가
.\task.ps1 'C:\A' 'C:\B' -Mode Move -Force

# 이름 기반 전달
.\task.ps1 -Source 'C:\A' -Destination 'C:\B'

# 혼합 전달
.\task.ps1 'C:\A' -Destination 'C:\B' -Force

# Switch 값 명시
.\task.ps1 'C:\A' 'C:\B' -Force:$false

4. [switch]와 [bool] 사용 기준

구분 [switch] [bool]
값 $true, $false $true, $false
생략 시 $false 선언된 기본값
이름 기반 권장 가능
위치 기반 가능하지만 비권장 권장
대표 용도 실행 옵션 명시적인 Boolean 입력

위치 기반 Boolean 예시

[CmdletBinding(PositionalBinding = $false)]
param(
    [Parameter(Position = 0)]
    [bool]$Enabled = $false
)
.\task.ps1 $true
.\task.ps1 $false

[switch]도 Position을 지정하면 위치 기반으로 받을 수 있지만, 혼란을 줄 수 있으므로 권장하지 않습니다.

Microsoft Learn

5. 비권장 사항

비권장 이유
선택 파라미터의 불필요한 위치 바인딩 인자 순서 관리 복잡
파라미터 이름 축약 가독성 및 유지보수성 저하
Mandatory = $false 기본값이므로 불필요
[switch]$Force = $false 기본값이 이미 $false
불필요한 ParameterSet 선언부 복잡성 증가
$args 직접 사용 입력 인터페이스 불명확
복잡한 검증 속성 본문에서 검증하는 편이 명확

6. 주의사항

  • 필수 파라미터 누락 시 대화형 입력을 요청할 수 있으므로 무인 자동화에서 주의
  • 위치 기반 파라미터의 선언 순서와 Position은 기존 호출과의 호환성을 위해 유지
  • [switch]는 기본적으로 이름 기반 옵션으로 사용
  • 위치 기반으로 참/거짓 값을 받아야 한다면 [bool] 사용
  • 선택 파라미터는 가급적 이름 기반으로 전달해 변경에 유연하게 설계

핵심 원칙: 필수 인자는 위치 기반으로 간편하게, 선택 옵션은 이름 기반으로 명확하게, Boolean은 전달 방식에 따라 [switch]와 [bool]을 구분한다.

반응형

'개발 > PowerShell' 카테고리의 다른 글

PowerShell 최댓값 구하기  (0) 2026.04.30
PowerShell 현재 날짜 포맷팅  (0) 2026.03.08