다음을 통해 공유


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은 구분 기호 또는 구문 분석 식을 통해 입력을 분할한 다음 결과 분할 요소 각각에 속성 이름을 할당합니다. 이러한 속성 이름을 제공할 수 있습니다. 그렇지 않으면 자동으로 생성됩니다.

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

templateParsing cmdlet의 대체 매개 변수 집합은 정규식으로 캡처된 그룹에서 요소를 생성합니다. 정규식에 대한 자세한 내용은 about_Regular_Expressions참조하세요.

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

기본적으로 구분된 구문 분석에서는 입력을 공백으로 분할하고 결과 그룹에 속성 이름을 할당합니다.

ConvertFrom-String 결과를 Format-* cmdlet 중 하나로 파이핑하여 구분 기호를 사용자 지정하거나 구분 기호 매개 변수를 사용할 수 있습니다.

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

예제

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

"Hello World" | ConvertFrom-String

P1    P2
--    --
Hello World

이 명령은 P1 P2 기본 속성 이름을 가진 개체를 생성합니다.

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

이 명령은 P1 , P2;속성이 있는 하나의 개체를 생성합니다. 두 속성 모두 기본적으로 문자열 형식입니다.

"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

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

이 명령은 백슬래시(\)를 구분 기호로 사용하여 도메인 및 사용자 이름을 가진 개체를 생성합니다. 정규식을 사용할 때 백슬래시 문자를 다른 백슬래시로 이스케이프해야 합니다.

"Contoso\Administrator" | ConvertFrom-String -Delimiter "\\"

P1      P2
--      --
Contoso Administrator

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

다음 예제에서는 Windows 호스트 파일 항목에서 개체를 만듭니다.

$content = Get-Content C:\Windows\System32\drivers\etc\hosts
$content = $content -match "^[^#]"
$content | ConvertFrom-String -PropertyNames IP, Server

IP             Server
--             ------
192.168.7.10   W2012R2
192.168.7.20   W2016
192.168.7.101  WIN8
192.168.7.102  WIN10

Get-Content cmdlet은 Windows 호스트 파일의 콘텐츠를 $content저장합니다. 두 번째 명령은 (#)로 시작하지 않는 줄과 일치하는 정규식을 사용하여 호스트 파일의 시작 부분에 있는 주석을 제거합니다. 마지막 명령은 나머지 텍스트를 ServerIP 속성을 사용하여 개체로 변환합니다.

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

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

  • 이름
  • 전화
  • 연령
$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
'@

$PersonalData = $testText | ConvertFrom-String -TemplateContent $template
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

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

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

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

또한 샘플 데이터는 다음과 같은 두 가지 연령 형식을 제공합니다.

  • 6
  • 12

이는 하이픈이 없기 때문에 해당 패턴과 일치하는 샘플 데이터가 없기 때문에 (206) 987 4321 같은 휴대폰이 인식되지 않음을 의미합니다.

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

위의 예제 4와 동일한 예제입니다. 차이점은 패턴 문자열에 원하는 각 속성에 대한 데이터 형식이 포함되어 있다는 것입니다.

$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
'@

$PersonalData = $testText | ConvertFrom-String -TemplateContent $template
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

$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

Get-Member cmdlet은 age 속성이 정수임을 표시하는 데 사용됩니다.

매개 변수

-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 배열에 요소를 제공하는 경우 해당 이름은 아직 이름이 지정되지 않은 속성에 할당됩니다.

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

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

-TemplateContent

이 cmdlet이 문자열을 할당하는 속성을 설명하는 식 또는 변수로 저장된 식을 지정합니다. 템플릿 필드 사양의 구문은 다음과 같습니다. {[optional-typecast]<name>:<example-value>}.

형식: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

출력

PSCustomObject

참고

Windows PowerShell에는 ConvertFrom-String다음과 같은 별칭이 포함되어 있습니다.

  • CFS