피드로 돌아가기
Dev.toDevOps
원문 읽기
PowerShell은 객체를 텍스트 대신 파이프라인으로 전달하여 데이터 구조를 유지하면서 처리한다
NgSysV2-10.2: PowerShell Scripting essentials
AI 요약
Context
기존 CLI 도구들은 문자열을 파싱하여 데이터를 처리하므로 파싱 규칙이 변경되면 스크립트가 오작동한다. PowerShell은 이런 파싱 의존성을 제거하기 위해 객체를 직접 전달하는 방식을 사용한다. 변수는 $ 접두사로 선언하며 동적 타이핑을 지원하지만 한 번 할당되면 타입이 강하게 적용된다.
Technical Solution
- 변수명 앞에 $를 붙이고 대소문자를 구분하지 않으며 문자열, 숫자, 배열, 객체를 저장할 수 있다
- 비교 연산자(-eq, -ne, -gt, -lt, -ge, -le)와 논리 연산자(-and, -or, -not)를 사용하여 조건을 평가한다
- For, While, ForEach 루프를 지원하며 While 루프는 조건이 참인 동안 실행되고 ForEach는 컬렉션을 순회한다
- If-Else 문으로 조건부 실행을 제어하고 $null, $false, $0, $'', $@()는 false로 평가된다
- Get-Process | Sort-Object Name 같은 파이프라인으로 Producer | Filter | Transform | Output 패턴을 구현한다
- try...catch 블록으로 예외를 처리하며 $ErrorActionPreference = 'Stop'으로 글로벌 에러 처리를 설정한다
실천 포인트
Windows 환경에서 Get-Service | Where-Object { $_.Status -eq 'Running' } | Select-Object Name 같은 파이프라인 패턴을 사용하면 복잡한 텍스트 파싱 없이 서비스 목록을 필터링할 수 있다