ConvertFrom-StringData
하나 이상의 키와 값 쌍이 포함된 문자열을 해시 테이블로 변환합니다.
구문
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: 작은따옴표로 묶은 여기 문자열을 해시 테이블로 변환
이 예제에서는 사용자 메시지의 작은따옴표로 묶인 여기 문자열을 해시 테이블로 변환합니다. 작은따옴표로 묶인 문자열에서 값은 변수로 대체되지 않으며 식은 평가되지 않습니다.
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 |
Position: | 1 |
Default value: | '=' |
필수: | False |
파이프라인 입력 허용: | False |
와일드카드 문자 허용: | False |
-StringData
변환할 문자열을 지정합니다. 이 매개 변수를 사용하거나 문자열을 파이프하여 ConvertFrom-StringData
수 있습니다. 매개 변수 이름은 선택 사항입니다.
이 매개 변수의 값은 하나 이상의 키-값 쌍을 포함하는 문자열이어야 합니다. 각 키-값 쌍은 별도의 줄에 있거나 각 쌍을 줄 바꿈 문자(`n
)로 구분해야 합니다.
문자열에 주석을 포함할 수 있지만 주석은 키-값 쌍과 같은 줄에 있을 수 없습니다.
ConvertFrom-StringData
한 줄 주석을 무시합니다. 해시 문자(#
)는 줄에서 공백이 아닌 첫 번째 문자여야 합니다. 해시 문자(#
) 뒤 줄의 모든 문자는 무시됩니다. 주석은 해시 테이블에 포함되지 않습니다.
여기 문자열은 하나 이상의 줄로 구성된 문자열입니다. 여기 문자열 내의 따옴표는 문자열 데이터의 일부로 문자 그대로 해석됩니다. 자세한 내용은 about_Quoting_Rules참조하세요.
형식: | String |
Position: | 0 |
Default value: | None |
필수: | True |
파이프라인 입력 허용: | True |
와일드카드 문자 허용: | False |
입력
키-값 쌍이 포함된 문자열을 이 cmdlet으로 파이프할 수 있습니다.
출력
이 cmdlet은 키-값 쌍에서 만드는 해시 테이블을 반환합니다.
참고
여기 문자열은 따옴표가 문자 그대로 해석되는 하나 이상의 줄로 구성된 문자열입니다.
이 cmdlet은 여러 음성 언어로 사용자 메시지를 표시하는 스크립트에서 유용할 수 있습니다. 사전 스타일 해시 테이블을 사용하여 리소스 파일과 같은 코드에서 텍스트 문자열을 격리하고 번역 도구에 사용할 텍스트 문자열의 서식을 지정할 수 있습니다.