about_Data_Files — PowerShell 데이터 파일

about_Data_Files — PowerShell 데이터 파일

PowerShell은 데이터 파일(.psd1)이라는 형식으로 임의의 데이터를 저장해 둘 수 있어요. 이 파일에 담긴 데이터를 현재 PowerShell 세션의 변수로 불러와 쓸 수 있고요. 데이터 파일은 종류가 세 가지인데, 각각을 가져오는 전용 cmdlet도 따로 준비돼 있어요. 이 문서에서는 파일 종류별로 어떤 특징이 있고 어떻게 불러오는지 하나씩 살펴볼게요.

출처: https://learn.microsoft.com/en-us/powershell/module/microsoft.powershell.core/about/about_data_files

본문

PowerShell 데이터 파일은 Import-PowerShellDataFile, Import-Module, Import-LocalizedData라는 세 cmdlet으로 각각 가져와요. 종류에 따라 저장할 수 있는 형식과 평가되는 언어 모드가 조금씩 달라져요. 하나씩 보도록 할게요.

기본 데이터 파일(Basic data files)

Import-PowerShellDataFile cmdlet이 기본 데이터 파일을 가져와요. 이 형식에는 제약이 두 가지 있는데요, 파일 안의 데이터가 반드시 해시 테이블(hashtable) 안에 담겨 있어야 하고, 값도 상수(constant)만 허용돼요. 그러니까 코드나 PowerShell 식은 쓸 수가 없어요. 단순하게 값만 담아 두는 용도로 보면 이해하기 쉬워요.

모듈 매니페스트(Module manifests)

모듈 매니페스트도 PowerShell 데이터 파일의 한 종류예요. 여기서도 데이터는 해시 테이블 안에 있어야 하는데, 구조가 조금 더 까다로워요. 이 해시 테이블은 PowerShell 모듈과 관련된 지정된 키 이름만 받도록 되어 있어요.

매니페스트의 설정 값에는 PowerShell이 평가할 수 있는 식도 들어갈 수 있어요. 그래서 변수에 따라 경로를 만들어 내거나 값을 조건에 맞춰 넣는 식의 구성이 가능해요.

Import-Module로 모듈을 가져올 때는 매니페스트가 Restricted 언어 모드에서 평가돼요. Restricted 모드는 쓸 수 있는 명령과 변수를 제한하는 모드죠. 더 자세한 내용은 about_Module_Manifests를 살펴봐 주세요.

지역화 데이터(Localized data)

Import-LocalizedData cmdlet이 지역화 데이터 파일을 가져와요. 가져올 때는 파일이 Constrained 언어 모드에서 처리돼요. Constrained 모드 역시 사용할 수 있는 명령과 변수를 제한해요. 자세한 건 about_Language_Modes를 참고해 주세요.

원래 지역화 데이터 파일은 다른 언어로 번역할 문자열 데이터를 저장하려는 목적으로 만들어졌어요. 스크립트가 이 파일을 불러와서 다른 언어의 문자열 출력을 제공하게 하려는 거였죠. 다만 문자열만 저장해야 하는 건 아니고, 반드시 지역화 출력에만 써야 하는 것도 아니에요. 파일 안의 데이터가 해시 테이블일 필요도 없고요. data 섹션처럼 PowerShell 문법이 지원하는 어떤 형식이든 담을 수 있어요.

더 알아보려면 about_Data_Sections를 봐 주세요.

더 알아보기