다음을 통해 공유


ConvertFrom-String

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

Syntax

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

Description

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

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

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

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

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

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

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

예제

예제 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: 구분 기호를 사용하여 기본 속성 이름을 가진 개체 생성

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

"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

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

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

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

  • 이름
  • 전화
  • age
$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 메서드를 호출하는 데 사용됩니다.

Type:String
Aliases:DEL
Position:Named
Default value:None
Required:False
Accept pipeline input:False
Accept wildcard characters:False

-IncludeExtent

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

Type:SwitchParameter
Aliases:IE
Position:Named
Default value:None
Required:False
Accept pipeline input:False
Accept wildcard characters:False

-InputObject

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

Type:String
Position:0
Default value:None
Required:True
Accept pipeline input:True
Accept wildcard characters:False

-PropertyNames

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

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

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

Type:String[]
Aliases:PN
Position:Named
Default value:None
Required:False
Accept pipeline input:False
Accept wildcard characters:False

-TemplateContent

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

Type:String[]
Aliases:TC
Position:Named
Default value:None
Required:False
Accept pipeline input:False
Accept wildcard characters:False

-TemplateFile

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

{Name*:D avid Chew} {City:Redmond}, {State:WA} {Name*:Evan Narvaez} {Name*:Antonio Moreno} {City:Issaquah}, {State:WA}

Type:String[]
Aliases:TF
Position:Named
Default value:None
Required:False
Accept pipeline input:False
Accept wildcard characters:False

-UpdateTemplate

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

Type:SwitchParameter
Aliases:UT
Position:Named
Default value:None
Required:False
Accept pipeline input:False
Accept wildcard characters:False

입력

String

출력

PSCustomObject

참고

Windows PowerShell에는 다음 별칭이 포함됩니다.ConvertFrom-String

  • CFS