하나 이상의 키/값 쌍이 포함된 문자열을 해시 테이블로 변환합니다.
구문
ConvertFrom-StringData [-StringData] <string> [<CommonParameters>]
설명
ConvertFrom-StringData cmdlet은 하나 이상의 키/값 쌍이 포함된 문자열을 해시 테이블로 변환합니다. 각 키/값 쌍이 별도의 줄에 있어야 하므로 입력 형식으로 here-string이 자주 사용됩니다.
ConvertFrom-StringData cmdlet은 스크립트 또는 함수의 DATA 섹션에 사용할 수 있는 안전한 cmdlet으로 간주됩니다. DATA 섹션에서 사용하는 경우 문자열의 내용이 DATA 섹션의 규칙을 준수해야 합니다. 자세한 내용은 about_Data_Sections를 참조하십시오.
매개 변수
-StringData <string>
변환할 문자열을 지정합니다. 이 매개 변수를 사용하거나 문자열을 ConvertFrom-StringData로 파이프할 수 있습니다. 매개 변수 이름은 선택 사항입니다.
이 매개 변수의 값은 작은따옴표 또는 큰따옴표로 묶인 문자열이거나 하나 이상의 키/값 쌍을 포함하는 here-string이어야 합니다. 각 키/값 쌍은 별도의 줄에 있거나 각 쌍이 줄 바꿈 문자(`n)로 구분되어야 합니다.
문자열에 주석을 포함할 수 있지만 주석은 키/값 쌍과 같은 줄에 있을 수 없습니다. 주석은 해시 테이블에 포함되지 않습니다.
here-string은 하나 이상의 줄로 이루어진 문자열로, 이 문자열 내에서 따옴표는 문자 그대로 해석됩니다. 자세한 내용은 about_Quoting_Rules를 참조하십시오.
필수 여부 |
true |
위치 |
1 |
기본값 |
|
파이프라인 입력 적용 여부 |
true (ByValue) |
와일드카드 문자 적용 여부 |
false |
<CommonParameters>
이 cmdlet은 -Verbose, -Debug, -ErrorAction, -ErrorVariable, -OutBuffer, -OutVariable 등의 일반 매개 변수를 지원합니다. 자세한 내용은 about_Commonparameters.
입력 및 출력
입력 유형은 cmdlet으로 파이프할 수 있는 개체의 유형입니다. 반환 유형은 cmdlet에서 반환되는 개체의 유형입니다.
입력 |
System.String 키/값 쌍을 포함하는 문자열을 ConvertFrom-StringData로 파이프할 수 있습니다. |
출력 |
System.Collections.Hashtable ConvertFrom-StringData는 키/값 쌍에서 만들어지는 해시 테이블을 반환합니다. |
참고
here-string은 하나 이상의 줄로 이루어진 문자열로, 이 문자열 내에서 따옴표는 문자 그대로 해석됩니다. 자세한 내용은 about_Quoting_Rules를 참조하십시오.
ConvertFrom-StringData는 여러 언어로 사용자 메시지를 표시하는 스크립트에서 유용할 수 있습니다. 사전 스타일의 해시 테이블을 사용하여 리소스 파일에서처럼 코드에서 텍스트 문자열을 분리하고 번역 도구에서 사용하도록 텍스트 문자열의 형식을 지정할 수 있습니다.
예 1
C:\PS>$here = @' Msg1 = The string parameter is required. Msg2 = Credentials are required for this command. Msg3 = The specified variable does not exist. '@ C:\PS> 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-string을 만들어 $here 변수에 저장합니다. 두 번째 명령은 ConvertFrom-StringData cmdlet을 사용하여 $here 변수의 here-string을 해시 테이블로 변환합니다.
예 2
C:\PS>$p = @" ISE = Windows PowerShell Integrated Scripting Environment "@ C:\PS> $p | get-member TypeName: System.String Name MemberType Definition ---- ---------- ---------- Clone Method System.Object Clone() ... C:\PS> $hash = convertfrom-stringdata -stringdata $p C:\PS> $hash | get-member TypeName: System.Collections.Hashtable Name MemberType Definition ---- ---------- ---------- Add Method System.Void Add(Object key, Object ... 설명 ----------- 이들 명령은 ConvertFrom-StringData가 here-string을 해시 테이블로 실제로 변환하는 것을 보여 줍니다. 첫 번째 명령은 하나의 키/값 쌍을 포함하는 큰따옴표로 묶인 here-string을 만들어 $p 변수에 저장합니다. 두 번째 명령은 파이프라인 연산자(|)를 사용하여 $p 변수를 Get-Member cmdlet으로 보냅니다. 결과는 $p가 문자열(System.String)임을 보여 줍니다. 세 번째 명령은 ConvertFrom-StringData cmdlet을 사용하여 $p의 here-string을 해시 테이블로 변환합니다. 이 명령은 결과를 $hash 변수에 저장합니다. 마지막 명령은 파이프라인 연산자(|)를 사용하여 $hash 변수를 Get-Member cmdlet으로 보냅니다. 결과는 $hash 변수의 내용이 해시 테이블(System.Collections.Hashtable)임을 보여 줍니다.
예 3
C:\PS>convertfrom-stringdata -stringdata @' Name = Disks.ps1 # Category is optional. Category = Storage Cost = Free '@ Name Value ---- ----- Cost Free Category Storage Name Disks.ps1 설명 ----------- 이 명령은 여러 키/값 쌍을 포함하고 있는 작은따옴표로 묶인 here-string을 해시 테이블로 변환합니다. 이 명령에서 StringData 매개 변수의 값은 here-string이 포함된 변수가 아니라 here-string입니다. 두 형식은 모두 유효합니다. 이 here-string에는 문자열 중 하나에 대한 주석이 포함되어 있습니다. 주석은 키/값 쌍과 다른 줄에 있다는 조건만 충족되면 문자열로 표시할 수 있습니다.
예 4
C:\PS>$a = convertfrom-stringdata -stringdata "Top = Red `n Bottom = Blue" C:\PS> "Top = " + $a.Top Top = Red C:\PS> "Bottom = " + $a.Bottom Bottom = Blue 설명 ----------- 이 예에서는 일반적인 큰따옴표로 묶인 문자열(here-string 아님)을 해시 테이블로 변환하여 $a 변수에 저장합니다. 각 키/값 쌍이 별도의 줄에 있어야 한다는 조건을 충족하기 위해 Windows PowerShell 줄 바꿈 문자(`n)를 사용하여 각 쌍을 구분합니다. 생성되는 결과는 입력의 해시 테이블입니다. 나머지 명령은 출력을 표시합니다.
예 5
C:\PS>$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. '@ } C:\PS> $TextMsgs.Text001 The $Notebook variable contains the name of the user's system notebook. C:\PS> $TextMsgs.Text002 The $MyNotebook variable contains the name of the user's private notebook. 설명 ----------- 이 예에서는 스크립트의 DATA 섹션에 사용된 ConvertFrom-StringData 명령을 보여 줍니다. DATA 섹션 아래에 있는 문은 사용자에게 텍스트를 표시합니다. 텍스트에 변수 이름이 포함되어 있으므로 변수를 확장하지 않고 문자 그대로 해석하기 위해 텍스트를 작은따옴표로 묶어야 합니다. DATA 섹션에는 변수가 허용되지 않습니다.
예 6
C:\PS>$here = @' Msg1 = The string parameter is required. Msg2 = Credentials are required for this command. Msg3 = The specified variable does not exist. '@ C:\PS> $hash = $here | convertfrom-stringdata C:\PS> $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-string을 저장합니다. 두 번째 명령은 파이프라인 연산자(|)를 사용하여 $here 변수를 ConvertFrom-StringData로 보내고 결과를 $hash 변수에 저장합니다. 마지막 명령은 $hash 변수의 내용을 표시합니다.
참고 항목