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
저장합니다. 두 번째 명령은 (#
)로 시작하지 않는 줄과 일치하는 정규식을 사용하여 호스트 파일의 시작 부분에 있는 주석을 제거합니다. 마지막 명령은 나머지 텍스트를 Server 및 IP 속성을 사용하여 개체로 변환합니다.
예제 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 |
입력
출력
참고
Windows PowerShell에는 ConvertFrom-String
다음과 같은 별칭이 포함되어 있습니다.
CFS
관련 링크
PowerShell