다음을 통해 공유


ConvertFrom-String

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

구문

ByDelimiter (기본값)

ConvertFrom-String
    [-InputObject] <String>
    [-Delimiter <String>]
    [-PropertyNames <String[]>]
    [<CommonParameters>]

TemplateParsing

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

Description

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

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

templateParsingcmdlet의 대체 매개 변수 집합은 정규식으로 캡처된 그룹에서 요소를 생성합니다. 정규식에 대한 자세한 내용은 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] 메서드를 호출하는 데 사용됩니다.

매개 변수 속성

형식:String
Default value:None
와일드카드 지원:False
DontShow:False
별칭:

매개 변수 집합

ByDelimiter
Position:Named
필수:False
파이프라인의 값:False
속성 이름별 파이프라인의 값:False
나머지 인수의 값:False

-IncludeExtent

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

매개 변수 속성

형식:SwitchParameter
Default value:None
와일드카드 지원:False
DontShow:False
별칭:인터넷 익스플로러

매개 변수 집합

TemplateParsing
Position:Named
필수:False
파이프라인의 값:False
속성 이름별 파이프라인의 값:False
나머지 인수의 값:False

-InputObject

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

매개 변수 속성

형식:String
Default value:None
와일드카드 지원:False
DontShow:False

매개 변수 집합

(All)
Position:0
필수:True
파이프라인의 값:True
속성 이름별 파이프라인의 값:False
나머지 인수의 값:False

-PropertyNames

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

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

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

매개 변수 속성

형식:

String[]

Default value:None
와일드카드 지원:False
DontShow:False
별칭:PN

매개 변수 집합

ByDelimiter
Position:Named
필수:False
파이프라인의 값:False
속성 이름별 파이프라인의 값:False
나머지 인수의 값:False

-TemplateContent

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

매개 변수 속성

형식:

String[]

Default value:None
와일드카드 지원:False
DontShow:False
별칭:TC

매개 변수 집합

TemplateParsing
Position:Named
필수:False
파이프라인의 값:False
속성 이름별 파이프라인의 값:False
나머지 인수의 값:False

-TemplateFile

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

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

매개 변수 속성

형식:

String[]

Default value:None
와일드카드 지원:False
DontShow:False
별칭:에프티

매개 변수 집합

TemplateParsing
Position:Named
필수:False
파이프라인의 값:False
속성 이름별 파이프라인의 값:False
나머지 인수의 값:False

-UpdateTemplate

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

매개 변수 속성

형식:SwitchParameter
Default value:None
와일드카드 지원:False
DontShow:False
별칭:유타

매개 변수 집합

TemplateParsing
Position:Named
필수:False
파이프라인의 값:False
속성 이름별 파이프라인의 값:False
나머지 인수의 값:False

CommonParameters

이 cmdlet은 일반적인 매개 변수인 -Debug, -ErrorAction, -ErrorVariable, -InformationAction, -InformationVariable, -OutBuffer, -OutVariable, -PipelineVariable, -ProgressAction, -Verbose, -WarningAction 및 -WarningVariable 매개 변수를 지원합니다. 자세한 내용은 about_CommonParameters를 참조하세요.

입력

String

출력

PSCustomObject

참고

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

  • CFS