about_Data_Sections
간단한 설명
스크립트 논리에서 텍스트 문자열 및 기타 읽기 전용 데이터를 격리하는 데이터 섹션에 대해 설명합니다.
자세한 설명
PowerShell용으로 설계된 스크립트에는 데이터만 포함된 하나 이상의 데이터 섹션이 있을 수 있습니다. 스크립트, 함수 또는 고급 함수에 하나 이상의 데이터 섹션을 포함할 수 있습니다. 데이터 섹션의 콘텐츠는 PowerShell 스크립팅 언어의 지정된 하위 집합으로 제한됩니다.
코드 논리에서 데이터를 분리하면 논리와 데이터를 더 쉽게 식별하고 관리할 수 있습니다. 오류 메시지 및 도움말 문자열과 같은 텍스트에 대한 별도의 문자열 리소스 파일을 사용할 수 있습니다. 또한 보안 및 유효성 검사 테스트를 용이하게 하는 코드 논리를 격리합니다.
PowerShell에서 데이터 섹션은 스크립트 국제화를 지원하는 데 사용됩니다. 데이터 섹션을 사용하면 많은 UI(사용자 인터페이스) 언어로 번역될 문자열을 보다 쉽게 격리, 찾기 및 처리할 수 있습니다.
데이터 섹션은 PowerShell 2.0 기능입니다. 데이터 섹션이 있는 스크립트는 수정 없이 PowerShell 1.0에서 실행되지 않습니다.
구문
데이터 섹션의 구문은 다음과 같습니다.
DATA [<variable-name>] [-supportedCommand <cmdlet-name>] {
<Permitted content>
}
데이터 키워드가 필요합니다. 대/소문자를 구분하지 않습니다. 허용되는 콘텐츠는 다음 요소로 제한됩니다.
모든 PowerShell 연산자(제외)
-match
If
,Else
,ElseIf
문자동 변수:
$PsCulture
,$PsUICulture
,$True
$False
및$Null
설명
파이프라인
세미콜론으로 구분된 문(
;
)다음과 같은 리터럴:
a 1 1,2,3 "PowerShell 2.0" @( "red", "green", "blue" ) @{ a = 0x1; b = "great"; c ="script" } [XML] @' <p> Hello, World </p> '@
데이터 섹션에서 허용되는 Cmdlet입니다. 기본적으로 cmdlet만
ConvertFrom-StringData
허용됩니다.매개 변수를 사용하여 데이터 섹션에서 허용하는 Cmdlet입니다
-SupportedCommand
.
데이터 섹션에서 cmdlet을 사용하는 ConvertFrom-StringData
경우 키-값 쌍을 작은따옴표 또는 큰따옴표로 묶은 문자열 또는 작은따옴표 또는 큰따옴표로 묶을 수 있습니다. 그러나 변수 및 하위 식이 포함된 문자열은 변수가 확장되지 않고 하위 식이 실행될 수 없도록 작은따옴표로 묶은 문자열 또는 작은따옴표로 묶어야 합니다.
-SupportedCommand
매개 -SupportedCommand
변수를 사용하면 cmdlet 또는 함수가 데이터만 생성함을 나타낼 수 있습니다. 사용자가 작성하거나 테스트한 데이터 섹션에 cmdlet 및 함수를 포함할 수 있도록 설계되었습니다.
값 -SupportedCommand
은 하나 이상의 cmdlet 또는 함수 이름의 쉼표로 구분된 목록입니다.
예를 들어 다음 데이터 섹션에는 XML 파일의 데이터 형식을 지정하는 사용자가 작성한 cmdlet Format-Xml
이 포함되어 있습니다.
DATA -supportedCommand Format-Xml
{
Format-Xml -Strings string1, string2, string3
}
데이터 섹션 사용
데이터 섹션의 콘텐츠를 사용하려면 변수에 할당하고 변수 표기법을 사용하여 콘텐츠에 액세스합니다.
예를 들어 다음 데이터 섹션에는 여기에 있는 문자열을 해시 테이블로 변환하는 명령이 포함되어 ConvertFrom-StringData
있습니다. 해시 테이블이 변수에 $TextMsgs
할당됩니다.
변수는 $TextMsgs
데이터 섹션의 일부가 아닙니다.
$TextMsgs = DATA {
ConvertFrom-StringData -StringData @'
Text001 = Windows 7
Text002 = Windows Server 2008 R2
'@
}
해시 테이블의 키와 값에 $TextMsgs
액세스하려면 다음 명령을 사용합니다.
$TextMsgs.Text001
$TextMsgs.Text002
또는 데이터 섹션의 정의에 변수 이름을 넣을 수 있습니다. 예시:
DATA TextMsgs {
ConvertFrom-StringData -StringData @'
Text001 = Windows 7
Text002 = Windows Server 2008 R2
'@
}
$TextMsgs
결과는 이전 예제와 동일합니다.
Name Value
---- -----
Text001 Windows 7
Text002 Windows Server 2008 R2
예제
단순 데이터 문자열입니다.
DATA {
"Thank you for using my PowerShell Organize.pst script."
"It is provided free of charge to the community."
"I appreciate your comments and feedback."
}
허용되는 변수를 포함하는 문자열입니다.
DATA {
if ($null) {
"To get help for this cmdlet, type get-help new-dictionary."
}
}
cmdlet을 사용하는 ConvertFrom-StringData
작은따옴표로 묶은 여기 문자열입니다.
DATA {
ConvertFrom-StringData -stringdata @'
Text001 = Windows 7
Text002 = Windows Server 2008 R2
'@
}
cmdlet을 사용하는 ConvertFrom-StringData
큰따옴표가 붙은 여기 문자열입니다.
DATA {
ConvertFrom-StringData -stringdata @"
Msg1 = To start, press any key.
Msg2 = To exit, type "quit".
"@
}
데이터를 생성하는 사용자가 작성한 cmdlet을 포함하는 데이터 섹션:
DATA -supportedCommand Format-XML {
Format-Xml -strings string1, string2, string3
}
참고 항목
PowerShell