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