본문으로 건너뛰기
로그인 둘러보기
개발·코딩·데이터베이스 · 윈도우즈 유틸

Powershell Yaml

0

PowerShell Yaml는 PowerShell 스크립트 간의 데이터 교환 형식인 YAML과 PowerShell 객체를 직렬화 및 역직렬화하는 PowerShell 모듈입니다.

데이터 변환역직렬화오픈소스직렬화

소개

PowerShell Yaml는 PowerShell 스크립트 간의 데이터 교환 형식인 YAML과 PowerShell 객체를 직렬화 및 역직렬화하는 PowerShell 모듈입니다. Cloudbase에서 개발한 이 모듈은 .NET의 YamlDotNet을 기반으로 하며, YAML 데이터를 PowerShell의 Hashtable이나 배열로 변하거나 그 반대의 작업을 수행할 수 있게 합니다. PowerShell 버전 4와 5에서 테스트되었으며, Windows 외에도 Nano Server 및 Linux 환경에서도 작동하는 것으로 확인되었습니다.

상세정보

YAML과 PowerShell 객체 변환

ConvertTo-Yaml 및 ConvertFrom-Yaml cmdlet을 사용하여 PowerShell의 Hashtable, 배열, 문자열 등 다양한 객체를 YAML 문자열로 변환하거나 YAML 문자열을 PowerShell 객체로 변환할 수 있습니다.

JSON 호환 출력

-JsonCompatible 매개 변수를 사용하면 YAML 데이터를 JSON 형식과 호환되는 방식으로 직렬화할 수 있어, YAML 데이터를 JSON으로 변환하는 데 활용할 수 있습니다.

여러 YAML 문서 처리

하나의 YAML 문자열에 여러 문서(— 구분자로 분리된)가 포함된 경우, -AllDocuments 매개 변수를 사용하여 모든 문서를 한 번에 읽어들일 수 있습니다.

Merge 키 지원

-UseMergingParser 매개 변수를 지정하면 YAML의 Merge 키(<<: *alias)를 지원하여, 여러 YAML 노드의 값을 하나의 객체로 병합할 수 있습니다.

유형 태그 지원

YAML 코어 스키마에서 지정한 태그(!!str, !!timestamp 등)를 지원합니다. 값을 명시적으로 태그로 지정하면 PowerShell에서 의도하지 않은 형식 변환(예: 문자열이 숫자로 변환되는 경우)을 방지할 수 있습니다.

출력 형식 제어

ConvertTo-Yaml cmdlet의 -Options 매개 변수를 사용하여 YAML 출력 형식을 제어할 수 있습니다. UseFlowStyle, UseSequenceFlowStyle, WithIndentedSequences 등 다양한 옵션을 제공하여 필요에 따라 YAML의 구조적 형식을 조정할 수 있습니다.

PowerShell 객체를 YAML로 변환 (ConvertTo-Yaml)

다음은 Hashtable을 YAML 문자열로 변환하는 예제입니다.

$yaml = ConvertTo-Yaml @{“hello”=”world”; “anArray”=@(1,2,3)}

위 명령은 다음과 같은 YAML 문자열을 생성합니다.

anArray:
– 1
– 2
– 3
hello: world

YAML을 PowerShell 객체로 변환 (ConvertFrom-Yaml)

YAML 문자열을 PowerShell Hashtable로 변환하려면 다음 명령을 사용합니다.

$obj = ConvertFrom-Yaml $yaml

변환된 객체는 Hashtable 타입이 됩니다.

JSON 호환 YAML 생성

다음 명령은 YAML 데이터를 JSON 형식으로 출력합니다.

ConvertFrom-Yaml $yaml | ConvertTo-Yaml -JsonCompatible

결과: {“anArray”: [1, 2, 3], “hello”: “world”}

이런 경우에 유용합니다

PowerShell 스크립트에서 Kubernetes, Docker Compose 등 YAML 기반 설정 파일을 읽어서 PowerShell 객체로 다루거나, PowerShell에서 생성한 설정 데이터를 YAML 파일로 저장할 때 이 모듈을 사용할 수 있습니다. 또한, YAML 파일을 JSON 형식으로 변환하는 파이프라인 작업에도 유용합니다.

지원 환경·시스템 요구사항

공식 문서에 따르면 PowerShell 버전 4 및 5에서 테스트되었습니다. Windows 외에도 Nano Server와 Linux 환경에서 지원되며, Mac에서도 작동할 것으로 추정됩니다.

최신 버전·업데이트

제공된 증거에 따르면 현재 버전은 0.4.12입니다.

제한 사항·확인 사항

  • Merge 키 사용 시, 동일한 키를 덮어쓰는 중복 키가 있으면 예외가 발생합니다.
  • 기본적으로 모듈에는 YamlDotNet 어셈블리가 포함되어 있지만, 시스템에 이미 해당 어셈블리가 설치되어 있는 경우 lib 폴더를 제거할 수 있습니다.

시스템 요구사항

별도의 시스템 요구사항이 등록되지 않았습니다.