2016-12-24 1 views
2

변수를 한 줄씩 살펴보고 정규식을 적용하여 그 안의 문자열을 구문 분석하려고합니다.Powershell 변수 내 각 줄에

나는 호출-restmethod을 통해 데이터를 다운로드하고 하나 개의 행만 자신의있는 그대로 아래

$result= invoke-restmethod -uri $uri -method get 

foreach($line in $result) 
if($line -match $regex) 
{ 
    #parsing 
} 

위 작동하지 않습니다하려고 노력하고있다. 나는 파일로 출력 결과 다음 그래서

$result= invoke-restmethod -uri $uri -method get 
$result >> $filelocation 

$file = get-content $file 
foreach($line in $file) 
if($line -match $regex) 
{ 
    #parsing 
} 

처럼 작동 위의 논리를 적용 할 때 스크립트는 시간이 중요합니다 그래서 내가 어떻게 할 수, 다시 다음 파일에 쓸 수있는 여유가 없습니다 나는 get-content를 사용하지 않고 위를 달성합니까?

+1

'-split :

$result.Split("'n") | %{ Write-Host $_ } 

또는 당신이 당신의 'foreach는'구문을 선호하는 경우

foreach ($line in $result.Split("'n")) { Write-Host $line } 

[ 'foreach는'에 '에 대한'변경 편집] 문자열 분할 방법을 시도 '\ r? \ n "' – PetSerAl

+0

파일에 저장할 때 파일 내용을 보거나 저장하지 않을 때 내용 출력을보고 싶습니다. 루프에서 쓰기 호스트를 사용하여 콘솔과 요청 당신이 그것을 게시합니다. –

답변

3

Invoke-Method에는 문제가 없습니다. 다음은 정확히 원하는대로 작동합니다.

$result = Invoke-RestMethod -Uri https://blogs.msdn.microsoft.com/powershell/feed/ 
$result | %{ Write-Host $_ } 

REST 엔드 포인트가 Windows 새 라인 대신 UNIX 새 라인을 제공한다고 생각됩니다. UNIX에서 새 줄은 한 줄의 문자 '줄 바꿈'(줄 바꿈)입니다. 창에서 개행 문자는 'crlf'(캐리지 리턴, 줄 바꿈)입니다.

+0

두 번째 옵션이 작동했지만 foreach로 바꿔야 만했습니다 – rusty009

+0

@PetSerAl, 좋은 소식입니다. –

+1

@ mklement0, 고마워. –