about_Data_Sections

간단한 설명

스크립트 논리에서 텍스트 문자열 및 기타 읽기 전용 데이터를 격리하는 데이터 섹션에 대해 설명합니다.

자세한 설명

PowerShell용으로 설계된 스크립트에는 데이터만 포함된 하나 이상의 데이터 섹션이 있을 수 있습니다. 스크립트, 함수 또는 고급 함수에 하나 이상의 데이터 섹션을 포함할 수 있습니다. 데이터 섹션의 콘텐츠는 PowerShell 스크립팅 언어의 지정된 하위 집합으로 제한됩니다.

코드 논리에서 데이터를 분리하면 논리와 데이터를 더 쉽게 식별하고 관리할 수 있습니다. 오류 메시지 및 도움말 문자열과 같은 텍스트에 대한 별도의 문자열 리소스 파일을 사용할 수 있습니다. 또한 보안 및 유효성 검사 테스트를 용이하게 하는 코드 논리를 격리합니다.

PowerShell에서 데이터 섹션은 스크립트 국제화를 지원하는 데 사용됩니다. 데이터 섹션을 사용하면 많은 UI(사용자 인터페이스) 언어로 번역될 문자열을 보다 쉽게 격리, 찾기 및 처리할 수 있습니다.

데이터 섹션은 PowerShell 2.0 기능입니다. 데이터 섹션이 있는 스크립트는 수정 없이 PowerShell 1.0에서 실행되지 않습니다.

구문

데이터 섹션의 구문은 다음과 같습니다.

DATA [<variable-name>] [-supportedCommand <cmdlet-name>] {
    <Permitted content>
}

데이터 키워드(keyword) 필요합니다. 대/소문자를 구분하지 않습니다. 허용되는 콘텐츠는 다음 요소로 제한됩니다.

  • 모든 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
}

참고 항목