다음을 통해 공유


ConvertFrom-StringData

하나 이상의 키와 값 쌍이 포함된 문자열을 해시 테이블로 변환합니다.

구문

ConvertFrom-StringData
                [-StringData] <String>
                [<CommonParameters>]

Description

cmdlet은 ConvertFrom-StringData 하나 이상의 키와 값 쌍이 포함된 문자열을 해시 테이블로 변환합니다. 각 키-값 쌍은 별도의 줄에 있어야 하므로 여기서 문자열은 종종 입력 형식으로 사용됩니다. 기본적으로 키에서 등호(=) 문자로 구분되어야 합니다.

ConvertFrom-StringData cmdlet은 스크립트 또는 함수의 DATA 섹션에서 사용할 수 있는 안전한 cmdlet으로 간주됩니다. DATA 섹션에서 사용하는 경우 문자열의 내용은 DATA 섹션에 대한 규칙을 준수해야 합니다. 자세한 내용은 about_Data_Sections 참조하세요.

ConvertFrom-StringData 는 기존 기계 번역 도구에서 허용하는 이스케이프 문자 시퀀스를 지원합니다. 즉, cmdlet은 일반적으로 스크립트에서 줄의 끝을 알리는 PowerShell 백틱 문자(\) 대신 Regex.Unescape 메서드를 사용하여 문자열 데이터의 이스케이프 문자로 백슬래시(`)를 해석할 수 있습니다. 이 문자열 내에서는 백틱 문자가 작동하지 않습니다. 다음과 같이 \\이전 백슬래시로 이스케이프하여 결과에 리터럴 백슬래시를 유지할 수도 있습니다. 파일 경로에 일반적으로 사용되는 것과 같이 이스케이프되지 않은 백슬래시 문자는 결과에서 잘못된 이스케이프 시퀀스로 렌더링될 수 있습니다.

예제

예제 1: 작은따옴표로 묶은 여기 문자열을 해시 테이블로 변환

이 예제에서는 사용자 메시지의 작은따옴표로 묶인 여기 문자열을 해시 테이블로 변환합니다. 작은따옴표로 묶인 문자열에서 값은 변수로 대체되지 않으며 식은 평가되지 않습니다. cmdlet은 ConvertFrom-StringData 변수의 값을 $Here 해시 테이블로 변환합니다.

$Here = @'
Msg1 = The string parameter is required.
Msg2 = Credentials are required for this command.
Msg3 = The specified variable does not exist.
'@
ConvertFrom-StringData -StringData $Here

Name                           Value
----                           -----
Msg3                           The specified variable does not exist.
Msg2                           Credentials are required for this command.
Msg1                           The string parameter is required.

예제 2: 주석이 포함된 여기 문자열 변환

다음은 주석과 여러 키-값 쌍이 포함된 여기 문자열을 해시 테이블로 변환하는 예제입니다.

ConvertFrom-StringData -StringData @'
Name = Disks.ps1

# Category is optional.

Category = Storage
Cost = Free
'@

Name                           Value
----                           -----
Cost                           Free
Category                       Storage
Name                           Disks.ps1

StringData 매개 변수의 값은 here 문자열을 포함하는 변수 대신 here 문자열입니다. 두 형식이 모두 유효합니다. 여기 문자열에는 문자열 중 하나에 대한 주석이 포함되어 있습니다. ConvertFrom-StringData는 단일 줄 주석 무시하지만 문자는 # 줄의 첫 번째 공백이 아닌 문자여야 합니다. 줄 뒤의 모든 문자는 # 무시됩니다.

예제 3: 문자열을 해시 테이블로 변환

이 예제에서는 일반 큰따옴표 문자열(여기 문자열 아님)을 해시 테이블로 변환하고 변수에 $A 저장합니다.

$A = ConvertFrom-StringData -StringData "Top = Red `n Bottom = Blue"
$A

Name             Value
----             -----
Bottom           Blue
Top              Red

각 키-값 쌍이 별도의 줄에 있어야 한다는 조건을 충족하기 위해 문자열은 PowerShell 줄 바꿈 문자(`n)를 사용하여 쌍을 구분합니다.

예제 4: 스크립트의 DATA 섹션에서 ConvertFrom-StringData 사용

이 예제에서는 스크립트의 ConvertFrom-StringData DATA 섹션에 사용되는 명령을 보여 있습니다. DATA 섹션 아래의 문은 사용자에게 텍스트를 표시합니다.

$TextMsgs = DATA {
ConvertFrom-StringData @'
Text001 = The $Notebook variable contains the name of the user's system notebook.
Text002 = The $MyNotebook variable contains the name of the user's private notebook.
'@
}
$TextMsgs

Name             Value
----             -----
Text001          The $Notebook variable contains the name of the user's system notebook.
Text002          The $MyNotebook variable contains the name of the user's private notebook.

텍스트에 변수 이름이 포함되어 있으므로 변수가 리터럴로 해석되고 확장되지 않도록 작은따옴표로 묶어야 합니다. DATA 섹션에서는 변수를 사용할 수 없습니다.

예제 5: 파이프라인 연산자를 사용하여 문자열 전달

이 예제에서는 파이프라인 연산자(|)를 사용하여 문자열을 보낼 수 있음을 보여 줍니다 ConvertFrom-StringData. 변수의 $Here 값은 변수에 파이프되고 ConvertFrom-StringData 결과는 변수에 파이프 $Hash 됩니다.

$Here = @'
Msg1 = The string parameter is required.
Msg2 = Credentials are required for this command.
Msg3 = The specified variable does not exist.
'@
$Hash = $Here | ConvertFrom-StringData
$Hash

Name     Value
----     -----
Msg3     The specified variable does not exist.
Msg2     Credentials are required for this command.
Msg1     The string parameter is required.

예제 6: 이스케이프 문자를 사용하여 새 줄 추가 및 문자 반환

이 예제에서는 이스케이프 문자를 사용하여 원본 데이터에 새 줄을 만들고 문자를 반환하는 방법을 보여 있습니다. 이스케이프 시퀀스는 \n 결과 해시 테이블의 이름 또는 항목과 연결된 텍스트 블록 내에 새 줄을 만드는 데 사용됩니다.

ConvertFrom-StringData @"
Vincentio = Heaven doth with us as we with torches do,\nNot light them for themselves; for if our virtues\nDid not go forth of us, 'twere all alike\nAs if we had them not.
Angelo = Let there be some more test made of my metal,\nBefore so noble and so great a figure\nBe stamp'd upon it.
"@ | Format-List

Name  : Angelo
Value : Let there be some more test made of my metal,
        Before so noble and so great a figure
        Be stamp'd upon it.

Name  : Vincentio
Value : Heaven doth with us as we with torches do,
        Not light them for themselves; for if our virtues
        Did not go forth of us, 'twere all alike
        As if we had them not.

예제 7: 백슬래시 이스케이프 문자를 사용하여 파일 경로를 올바르게 렌더링

이 예제에서는 문자열 데이터에서 백슬래시 이스케이프 문자를 사용하여 결과 해시 테이블에서 파일 경로가 올바르게 렌더링되도록 하는 ConvertFrom-StringData 방법을 보여 줍니다. 이중 백슬래시는 리터럴 백슬래시 문자가 해시 테이블 출력에서 올바르게 렌더링되도록 합니다.

ConvertFrom-StringData "Message=Look in c:\\Windows\\System32"

Name                           Value
----                           -----
Message                        Look in c:\Windows\System32

매개 변수

-StringData

변환할 문자열을 지정합니다. 이 매개 변수를 사용하거나 문자열을 .에 파이프할 ConvertFrom-StringData수 있습니다. 매개 변수 이름은 선택 사항입니다.

이 매개 변수의 값은 하나 이상의 키-값 쌍을 포함하는 문자열이어야 합니다. 각 키-값 쌍은 별도의 줄에 있거나 각 쌍을 줄 바꿈 문자(`n)로 구분해야 합니다.

문자열에 주석을 포함할 수 있지만 주석은 키-값 쌍과 같은 줄에 있을 수 없습니다. ConvertFrom-StringData는 단일 줄 주석 무시합니다. 문자는 # 줄의 첫 번째 공백이 아닌 문자여야 합니다. 줄 뒤의 모든 문자는 # 무시됩니다. 주석은 해시 테이블에 포함되지 않습니다.

여기 문자열은 하나 이상의 줄로 구성된 문자열입니다. 여기 문자열 내의 따옴표는 문자열 데이터의 일부로 문자 그대로 해석됩니다. 자세한 내용은 about_Quoting_Rules 참조하세요.

형식:String
Position:0
Default value:None
필수:True
파이프라인 입력 허용:True
와일드카드 문자 허용:False

입력

String

키-값 쌍이 포함된 문자열을 이 cmdlet으로 파이프할 수 있습니다.

출력

Hashtable

이 cmdlet은 키-값 쌍에서 만드는 해시 테이블을 반환합니다.

참고

여기 문자열은 따옴표가 문자 그대로 해석되는 하나 이상의 줄로 구성된 문자열입니다.

이 cmdlet은 여러 음성 언어로 사용자 메시지를 표시하는 스크립트에서 유용할 수 있습니다. 사전 스타일의 해시 테이블을 사용하여 리소스 파일에서처럼 코드에서 텍스트 문자열을 분리하고 번역 도구에서 사용하도록 텍스트 문자열의 형식을 지정할 수 있습니다.