다음을 통해 공유


ConvertFrom-String

문자열 콘텐츠에서 구조적 속성을 추출하고 구문 분석합니다.

구문

ConvertFrom-String
                [-Delimiter <String>]
                [-PropertyNames <String[]>]
                [-InputObject] <String>
                [<CommonParameters>]
ConvertFrom-String
                [-TemplateFile <String[]>]
                [-TemplateContent <String[]>]
                [-IncludeExtent]
                [-UpdateTemplate]
                [-InputObject] <String>
                [<CommonParameters>]

Description

ConvertFrom-String cmdlet은 문자열 콘텐츠에서 구조적 속성을 추출하고 구문 분석합니다. 이 cmdlet은 기존 텍스트 스트림에서 텍스트를 구문 분석하여 개체를 생성합니다. 파이프라인의 각 문자열에 대해 cmdlet은 구분 기호 또는 구문 분석 식을 통해 입력을 분할한 다음 결과 분할 요소 각각에 속성 이름을 할당합니다. 이러한 속성 이름을 제공할 수 있습니다. 그렇지 않으면 자동으로 생성됩니다.

byDelimitercmdlet의 기본 매개 변수 집합은 정규식 구분 기호에서 정확하게 분할됩니다. Import-Csv cmdlet처럼 따옴표 일치 또는 구분 기호 이스케이프를 수행하지 않습니다.

templateParsingcmdlet의 대체 매개 변수 집합은 정규식으로 캡처된 그룹에서 요소를 생성합니다.

이 cmdlet은 기본으로 구분된 구문 분석과 자동으로 생성된 예제 기반 구문 분석의 두 가지 모드를 지원합니다.

기본적으로 구분된 구문 분석에서는 입력을 공백으로 분할하고 결과 그룹에 속성 이름을 할당합니다. ConvertFrom-String 결과를 Format-* cmdlet 중 하나로 파이핑하여 구분 기호를 사용자 지정하거나 구분 기호 매개 변수를 사용할 수 있습니다.

또한 이 cmdlet은 FlashExtract를 기반으로 자동으로 생성된 예제 기반 구문 분석, Microsoft Research연구 작업도 지원합니다.

예제

예제 1: 기본 속성 이름을 사용하여 개체 생성

PS C:\> "Hello World" | ConvertFrom-String

P1    P2
--    --
Hello World


PS C:\>

이 명령은 기본 속성 이름 P1 및 P2를 사용하여 개체를 생성합니다. 결과는 P1="Hello" 및 P2="World"입니다.

예제 1A: 생성된 개체 알아보기

PS C:\> "Hello World" | ConvertFrom-String | Get-Member


   TypeName: System.Management.Automation.PSCustomObject

Name        MemberType   Definition
----        ----------   ----------
Equals      Method       bool Equals(System.Object obj)
GetHashCode Method       int GetHashCode()
GetType     Method       type GetType()
ToString    Method       string ToString()
P1          NoteProperty string P1=Hello
P2          NoteProperty string P2=World


PS C:\>

이 명령은 P1, P2 속성으로 하나의 개체를 생성합니다. 두 속성 모두 기본적으로 'string' 형식입니다.

예제 2: 구분 기호를 사용하여 기본 속성 이름을 가진 개체 생성

PS C:\> "Hello World" | ConvertFrom-String -Delimiter "ll"

P1 P2
-- --
He o World


PS C:\>

이 명령은 Hello에서 'll'을 구분 기호로 지정하여 P1="He" 및 P2="o World" 속성을 사용하여 개체를 생성합니다.

예제 3: 두 개의 명명된 속성을 포함하는 개체 생성

PS C:\> "Hello World" | ConvertFrom-String -PropertyNames FirstWord, SecondWord

FirstWord SecondWord
--------- ----------
Hello     World


PS C:\>

이 명령은 다음 두 가지 속성을 포함하는 개체를 생성합니다.

  • "Hello" 값이 있는 firstWord
  • "World" 값으로 SecondWord

예제 4: TemplateContent 매개 변수의 값으로 식을 사용하고 결과를 변수에 저장합니다.

$template = @'
{Name*:Phoebe Cat}, {phone:425-123-6789}, {age:6}
{Name*:Lucky Shot}, {phone:(206) 987-4321}, {age:12}
'@

$testText = @'
Phoebe Cat, 425-123-6789, 6
Lucky Shot, (206) 987-4321, 12
Elephant Wise, 425-888-7766, 87
Wild Shrimp, (111)  222-3333, 1
'@

$testText  |
    ConvertFrom-String -TemplateContent $template -OutVariable PersonalData |
    Out-Null

Write-output ("Pet items found: " + ($PersonalData.Count))
$PersonalData


Pet items found: 4

Name          phone           age
----          -----           ---
Phoebe Cat    425-123-6789    6
Lucky Shot    (206) 987-4321  12
Elephant Wise 425-888-7766    87
Wild Shrimp   (111)  222-3333 1

C:\ >

이 명령은 식을 TemplateContent 매개 변수의 값으로 사용합니다. 식은 간단히 하기 위해 변수에 저장됩니다. Windows PowerShell은 이제 파이프라인에서 ConvertFrom-String 데 사용되는 문자열에 다음 세 가지 속성이 있음을 이해합니다.

  • 이름
  • 전화
  • 연령

입력의 각 줄은 샘플 일치 항목에 의해 평가됩니다. 줄이 패턴에 지정된 예제와 일치하면 값이 추출되고 정의된 출력 변수에 전달됩니다.

$template샘플 데이터는 두 가지 전화 형식을 제공합니다.

  • 425-123-6789
  • (206) 987-4321

그리고 다음과 같은 두 가지 연령 형식이 있습니다.

  • 6
  • 12

이는 해당 패턴과 일치하는 샘플 데이터가 없기 때문에 (206) 987 4321 같은 휴대폰이 인식되지 않음을 의미합니다(세 자리 시퀀스와 4자리 시퀀스 사이에 하이픈이 없음). 3자리 이상의 나이와 비슷하게 인식되지 않습니다.

예제 5: 생성된 속성에 데이터 형식 지정

$template = @'
{[string]Name*:Phoebe Cat}, {[string]phone:425-123-6789}, {[int]age:6}
{[string]Name*:Lucky Shot}, {[string]phone:(206) 987-4321}, {[int]age:12}
'@

$testText = @'
Phoebe Cat, 425-123-6789, 6
Lucky Shot, (206) 987-4321, 12
Elephant Wise, 425-888-7766, 87
Wild Shrimp, (111)  222-3333, 1
'@

$testText  |
    ConvertFrom-String -TemplateContent $template -OutVariable PersonalData | Out-Null

Write-output ("Pet items found: " + ($PersonalData.Count))
$PersonalData


Pet items found: 4

Name          phone           age
----          -----           ---
Phoebe Cat    425-123-6789      6
Lucky Shot    (206) 987-4321   12
Elephant Wise 425-888-7766     87
Wild Shrimp   (111)  222-3333   1



C:\ >

위의 4번과 동일한 예입니다. 유일한 차이점은 원하는 각 속성에 대한 데이터 형식을 포함하는 패턴 문자열에 있습니다. 두 예제 간의 연령 열에 대한 맞춤의 차이를 확인합니다.

예제 5A: 생성된 개체 알아보기

$template = @'
 {[string]Name*:Phoebe Cat}, {[string]phone:425-123-6789}, {[int]age:6}
 {[string]Name*:Lucky Shot}, {[string]phone:(206) 987-4321}, {[int]age:12}
 '@

 $testText = @'
 Phoebe Cat, 425-123-6789, 6
 Lucky Shot, (206) 987-4321, 12
 Elephant Wise, 425-888-7766, 87
 Wild Shrimp, (111)  222-3333, 1
 '@

 $testText  |
     ConvertFrom-String -TemplateContent $template -OutVariable PersonalData |
     Out-Null

 $PersonalData | Get-Member



   TypeName: System.Management.Automation.PSCustomObject

Name        MemberType   Definition
----        ----------   ----------
Equals      Method       bool Equals(System.Object obj)
GetHashCode Method       int GetHashCode()
GetType     Method       type GetType()
ToString    Method       string ToString()
age         NoteProperty int age=6
Name        NoteProperty string Name=Phoebe Cat
phone       NoteProperty string phone=425-123-6789

C:\ >

Get-Member 연령이 정수 형식임을 표시합니다.

매개 변수

-Delimiter

요소 간의 경계를 식별하는 정규식을 지정합니다. 분할에 의해 만들어진 요소는 결과 개체의 속성이 됩니다. 구분 기호는 궁극적으로 System.Text.RegularExpressions.RegularExpression.Split()를 호출하는 데 사용됩니다.

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

-IncludeExtent

이 cmdlet에는 기본적으로 제거되는 익스텐트 텍스트 속성이 포함되어 있음을 나타냅니다.

형식:SwitchParameter
별칭:IE
Position:Named
Default value:None
필수:False
파이프라인 입력 허용:False
와일드카드 문자 허용:False

-InputObject

파이프라인에서 받은 문자열 또는 문자열 개체를 포함하는 변수를 지정합니다.

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

-PropertyNames

결과 개체에서 분할 값을 할당할 속성 이름의 배열을 지정합니다. 분할하거나 구문 분석하는 모든 텍스트 줄은 속성 값을 나타내는 요소를 생성합니다. 요소가 캡처 그룹의 결과이고 해당 캡처 그룹의 이름이 (?<name>) 또는 (?'name') 경우 해당 캡처 그룹의 이름이 속성에 할당됩니다.

PropertyName 배열에 요소를 제공하는 경우 해당 이름은 아직 이름이 지정되지 않은 속성에 할당됩니다.

필드보다 더 많은 속성 이름을 제공하는 경우 Windows PowerShell은 추가 속성 이름을 무시합니다. 모든 필드의 이름을 지정하기에 충분한 속성 이름을 지정하지 않으면 Windows PowerShell은 이름이 지정되지 않은 속성(P1, P2 등)에 숫자 속성 이름을 자동으로 할당합니다.

형식:String[]
별칭:PN
Position:Named
Default value:None
필수:False
파이프라인 입력 허용:False
와일드카드 문자 허용:False

-TemplateContent

이 cmdlet이 문자열을 할당하는 속성을 설명하는 식 또는 변수로 저장된 식을 지정합니다. 템플릿 필드 사양의 구문은 {[optional-typecast]name(sequence-spec, 예: *):example-value}입니다. 예를 들어 {PersonInfo*:{Name:Patti Fuller}가 있습니다.

형식:String[]
별칭:TC
Position:Named
Default value:None
필수:False
파이프라인 입력 허용:False
와일드카드 문자 허용:False

-TemplateFile

원하는 문자열 구문 분석용 템플릿을 포함하는 파일을 배열로 지정합니다. 템플릿 파일에서 속성 및 해당 값은 다음 예제와 같이 대괄호로 묶입니다. Name 속성 및 연결된 다른 속성과 같은 속성이 여러 번 나타나는 경우 별표(*)를 추가하여 여러 레코드가 발생함을 나타낼 수 있습니다. 이렇게 하면 여러 속성을 단일 레코드로 추출할 수 없습니다.

{Name*:D avid Chew}

{City:Redmond}, {State:WA}

{Name*:Evan Narvaez} {Name*:Antonio Moreno}

{City:Issaquah}, {State:WA}

형식:String[]
별칭:TF
Position:Named
Default value:None
필수:False
파이프라인 입력 허용:False
와일드카드 문자 허용:False

-UpdateTemplate

이 cmdlet은 학습 알고리즘의 결과를 템플릿 파일의 주석에 저장한다는 것을 나타냅니다. 이렇게 하면 알고리즘 학습 프로세스가 더 빨라집니다. 이 매개 변수를 사용하려면 TemplateFile 매개 변수를 사용하여 템플릿 파일도 지정해야 합니다.

형식:SwitchParameter
별칭:UT
Position:Named
Default value:None
필수:False
파이프라인 입력 허용:False
와일드카드 문자 허용:False

입력

String