ConvertFrom-StringData
하나 이상의 키와 값 쌍이 포함된 문자열을 해시 테이블로 변환합니다.
구문
ConvertFrom-StringData
[-StringData] <String>
[[-Delimiter] <Char>]
[<CommonParameters>]
Description
cmdlet은 ConvertFrom-StringData
하나 이상의 키와 값 쌍이 포함된 문자열을 해시 테이블로 변환합니다. 각 키-값 쌍은 별도의 줄에 있어야 하므로 여기서 문자열은 종종 입력 형식으로 사용됩니다. 기본적으로 키는 값에서 등호(=
) 문자로 구분되어야 합니다.
이 ConvertFrom-StringData
cmdlet은 스크립트 또는 함수의 DATA 섹션에서 사용할 수 있는 안전한 cmdlet으로 간주됩니다. DATA 섹션에서 사용하는 경우 문자열의 내용은 DATA 섹션에 대한 규칙을 준수해야 합니다. 자세한 내용은 about_Data_Sections 참조하세요.
ConvertFrom-StringData
는 기존 기계 번역 도구에서 허용하는 이스케이프 문자 시퀀스를 지원합니다. 즉, cmdlet은 일반적으로 스크립트에서 줄의 끝을 알리는 PowerShell 백틱 문자(\
) 대신 Regex.Unescape 메서드를 사용하여 문자열 데이터의 이스케이프 문자로 백슬래시(`
)를 해석할 수 있습니다.
이 문자열 내에서는 백틱 문자가 작동하지 않습니다. 다음과 같이 \\
이전 백슬래시로 이스케이프하여 결과에 리터럴 백슬래시를 유지할 수도 있습니다. 파일 경로에 일반적으로 사용되는 것과 같이 이스케이프되지 않은 백슬래시 문자는 결과에서 잘못된 이스케이프 시퀀스로 렌더링될 수 있습니다.
PowerShell 7은 구분 기호 매개 변수를 추가합니다.
예제
예제 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: 다른 구분 기호를 사용하여 문자열 데이터 변환
이 예제에서는 다른 문자를 구분 기호로 사용하는 문자열 데이터를 변환하는 방법을 보여줍니다. 이 예제에서 문자열 데이터는 구분 기호로 파이프 문자(|
)를 사용합니다.
$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 문자열을 포함하는 변수 대신 here 문자열입니다. 두 형식이 모두 유효합니다. 여기 문자열에는 문자열 중 하나에 대한 주석이 포함되어 있습니다.
ConvertFrom-StringData
는 단일 줄 주석 무시하지만 문자는 #
줄의 첫 번째 공백이 아닌 문자여야 합니다. 줄 뒤의 모든 문자는 #
무시됩니다.
예제 4: 문자열을 해시 테이블로 변환
이 예제에서는 일반 큰따옴표 문자열(여기 문자열 아님)을 해시 테이블로 변환하고 변수에 $A
저장합니다.
$A = ConvertFrom-StringData -StringData "Top = Red `n Bottom = Blue"
$A
Name Value
---- -----
Bottom Blue
Top Red
각 키-값 쌍이 별도의 줄에 있어야 한다는 조건을 충족하기 위해 문자열은 PowerShell 줄 바꿈 문자(`n
)를 사용하여 쌍을 구분합니다.
예제 5: 스크립트의 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 섹션에서는 변수를 사용할 수 없습니다.
예제 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 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.
예제 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
Did not 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은 여러 음성 언어로 사용자 메시지를 표시하는 스크립트에서 유용할 수 있습니다. 사전 스타일의 해시 테이블을 사용하여 리소스 파일에서처럼 코드에서 텍스트 문자열을 분리하고 번역 도구에서 사용하도록 텍스트 문자열의 형식을 지정할 수 있습니다.
PowerShell