다음을 통해 공유


ConvertFrom-StringData

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

구문

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

Description

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

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

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

예제

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

PS C:\> $Here = @'
Msg1 = The string parameter is required.
Msg2 = Credentials are required for this command.
Msg3 = The specified variable does not exist.
'@
PS C:\> 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.

이러한 명령은 여기에 인용된 단일 문자열의 사용자 메시지를 해시 테이블로 변환합니다. 작은따옴표로 묶인 문자열에서 값은 변수로 대체되지 않으며 식은 평가되지 않습니다.

첫 번째 명령은 here-string을 만들고 $Here 변수에 저장합니다.

두 번째 명령은 ConvertFrom-StringData cmdlet을 사용하여 $Here 변수의 here 문자열을 해시 테이블로 변환합니다.

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

PS C:\> $P = @"
ISE = Windows PowerShell Integrated Scripting Environment
"@
PS C:\> $P | Get-Member
TypeName: System.String

Name             MemberType            Definition
----             ----------            ----------
Clone            Method                System.Object Clone()

PS C:\> $Hash = ConvertFrom-StringData -StringData $P
PS C:\> $Hash | Get-Member
TypeName: System.Collections.Hashtable
Name              MemberType            Definition
----              ----------            ----------
Add               Method                System.Void Add(Object key, Object

이러한 명령은 ConvertFrom-StringData 실제로 여기 문자열을 해시 테이블로 변환하는 것을 보여 줍니다.

첫 번째 명령은 하나의 키/값 쌍을 포함하는 큰따옴표로 묶인 여기 문자열을 만들고 $P 변수에 저장합니다.

두 번째 명령은 파이프라인 연산자(|)를 사용하여 $P 변수를 Get-Member cmdlet으로 보냅니다. 결과는 $P 문자열(System.String)임을 보여 줍니다.

세 번째 명령은 ConvertFrom-StringData cmdlet을 사용하여 $P 여기에 있는 문자열을 해시 테이블로 변환합니다. 이 명령은 결과를 $Hash 변수에 저장합니다.

최종 명령은 파이프라인 연산자(|)를 사용하여 $Hash 변수를 Get-Member cmdlet으로 보냅니다. 결과는 $Hash 변수의 내용이 해시 테이블(System.Collections.Hashtable)임을 보여 줍니다.

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

PS C:\> 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-string입니다. 두 형식이 모두 유효합니다.

여기 문자열에는 문자열 중 하나에 대한 주석이 포함되어 있습니다. 주석이 키/값 쌍과 다른 줄에 있는 경우 주석은 문자열에서 유효합니다.

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

PS C:\> $A = ConvertFrom-StringData -StringData "Top = Red `n Bottom = Blue"
PS C:\> "Top = " + $A.Top
Top = Red PS C:\> "Bottom = " + $A.Bottom
Bottom = Blue

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

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

결과는 입력의 해시 테이블입니다. 나머지 명령은 출력을 표시합니다.

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

PS C:\> $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.
'@
}
PS C:\> $TextMsgs.Text001
The $Notebook variable contains the name of the user's system notebook. PS C:\> $TextMsgs.Text002
The $MyNotebook variable contains the name of the user's private notebook.

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

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

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

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

이 예제에서는 파이프라인 연산자(|)를 사용하여 convertFrom-StringData문자열을 보낼 수 있음을 보여 줍니다.

첫 번째 명령은 $Here 변수에 here 문자열을 저장합니다. 두 번째 명령은 파이프라인 연산자(|)를 사용하여 $Here 변수를 convertFrom-StringData보냅니다. 이 명령은 결과를 $Hash 변수에 저장합니다.

마지막 명령은 $Hash 변수의 내용을 표시합니다.

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

PS C:\> 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.

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

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

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

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

매개 변수

-StringData

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

이 매개 변수의 값은 작은따옴표로 묶인 문자열, 큰따옴표로 묶인 문자열 또는 하나 이상의 키/값 쌍을 포함하는 here 문자열이어야 합니다. 각 키/값 쌍은 별도의 줄에 있거나 각 쌍을 줄 바꿈 문자('n)로 구분해야 합니다.

문자열에 주석을 포함할 수 있지만 주석은 키/값 쌍과 같은 줄에 있을 수 없습니다. 주석은 해시 테이블에 포함되지 않습니다.

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

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

입력

String

키/값 쌍이 포함된 문자열을 convertFrom-StringData파이프할 수 있습니다.

출력

Hashtable

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

참고

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

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