다음을 통해 공유


ConvertFrom-StringData

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

구문

Default (기본값)

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

Description

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

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

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

PowerShell 7은 구분 기호 매개 변수를 추가합니다.

예제

예제 1: 작은따옴표로 묶은 here-string을 해시 테이블로 변환

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

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

예제 2: 다른 구분 기호를 사용하여 문자열 데이터 변환

이 예제에서는 다른 문자를 구분 기호로 사용하는 문자열 데이터를 변환하는 방법을 보여줍니다. 이 예제에서 문자열 데이터는 파이프 문자(|)를 구분 기호로 사용합니다.

$StringData = @'
color|red
model|coupe
year|1965
condition|mint
'@
$carData = ConvertFrom-StringData -StringData $StringData -Delimiter '|'
$carData
Name                           Value
----                           -----
condition                      mint
model                          coupe
color                          red
year                           1965

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

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

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

# Category is optional.

Category = Storage
Cost = Free
'@
Name                           Value
----                           -----
Cost                           Free
Category                       Storage
Name                           Disks.ps1

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

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

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

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

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

예제 5: 스크립트의 '데이터' 섹션에서 사용

이 예제에서는 스크립트의 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 섹션에서 허용되지 않습니다.

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

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

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

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

이 예제에서는 이스케이프 문자를 사용하여 원본 데이터에 새 줄을 만들고 문자를 반환하는 방법을 보여 있습니다. 이스케이프 시퀀스 \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
        Didn't go forth of us, 'twere all alike
        As if we had them not.

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

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

ConvertFrom-StringData "Message=Look in C:\\Windows\\System32"
Name                           Value
----                           -----
Message                        Look in C:\Windows\System32

매개 변수

-Delimiter

변환되는 문자열의 데이터를 값과 구분하는 데 사용되는 문자입니다. 기본 구분 기호는 등호(=) 문자입니다. 이 매개 변수는 PowerShell 7에 추가되었습니다.

매개 변수 속성

형식:Char
Default value:=
와일드카드 지원:False
DontShow:False

매개 변수 집합

(All)
Position:1
필수:False
파이프라인의 값:False
속성 이름별 파이프라인의 값:False
나머지 인수의 값:False

-StringData

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

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

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

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

매개 변수 속성

형식:String
Default value:None
와일드카드 지원:False
DontShow:False

매개 변수 집합

(All)
Position:0
필수:True
파이프라인의 값:True
속성 이름별 파이프라인의 값:False
나머지 인수의 값:False

CommonParameters

이 cmdlet은 일반적인 매개 변수인 -Debug, -ErrorAction, -ErrorVariable, -InformationAction, -InformationVariable, -OutBuffer, -OutVariable, -PipelineVariable, -ProgressAction, -Verbose, -WarningAction 및 -WarningVariable 매개 변수를 지원합니다. 자세한 내용은 about_CommonParameters를 참조하세요.

입력

String

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

출력

Hashtable

이 cmdlet은 키-값 쌍으로 생성한 해시 테이블을 반환합니다.

참고

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

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