2

나는이 같은 PSCustomObject를 반환하는 기능을 가지고 :공백 문자 추가시 문자열 형식을 사용하지 않으려면 어떻게해야합니까?

Function Get-Data { 
    # ... 
    [PSCustomObject]@{ 
    Url = $Url 
    Id = $Id 
    } 
} 

을 나중에,이 같은이 함수를 호출 :

$data = Get-Data 

을 그리고 난 출력 속성 값을 포함하여 형식의 문자열을하고 싶습니다 그 물체의

Write-Host "$($data.Url)|$($data.Id)|OK" 

문제는 첫째 | 문자 뒤에 공백입니다 : 내가 원하는 것과 가장 가까운 결과는 아래의 라인 출력됩니다.

어디에서 왔습니까? 적절한 방법으로 제거하는 방법?

+3

아마도'Get-Data' 함수의 원래'$ Id' 값에서 온 것입니다. –

+0

을 제거하기 위해'$ ($ data.Id.Trim())'함수를 업데이트 할 수도 있습니다.'Id = $ Id.Trim()'객체에 추가되기 전에 값의 시작이나 끝 부분을 지우는 함수를 업데이트 할 수 있습니다. –

답변

2

각 문자열에 .Trim()을 호출 할 수 있습니다 (Mathias 언급). 이 사용자 지정 개체를 생성하기 전에 분명히

Write-Host ("$($data.Url)|$($data.Id)|OK" -replace '\s*') 
+0

나는 마침내 그 문제를 알아 냈습니다. 내 대답에 더 자세히 설명하겠습니다. 질문에 설명 된 문제를 올바르게 해결하므로 답변을 수락합니다. 고맙습니다! –

1

, 그것은 모두 내가 경쾌하게 무시하는 Get-Data 방법의 세부 사항에 숨겨진 ...

: 또는 당신은 정규식를 사용하는 모든 공백 문자를 대체 할 수 메서드는 여러 가지 REST API 호출을 수행하고 이러한 호출 중 하나의 출력이 변수에 할당되지 않았으며 "Out-Null"이 아니 었습니다. 결과적으로 실제 사용자 지정 개체가 반환 된 것은 해당 웹 응답과 내 명시 적으로 만든 사용자 지정 개체를 속성으로 사용한 것입니다. PowerShell을 나를 위해 유형을 추론하기 위해 열심히 노력하지만, 그 선두 공백 ...이 사람이 시간을 절약 할 수

희망을 관리하는 데 실패처럼

보인다.

+0

감사합니다! 함수 내에서 아직 정의되지 않은 변수를 출력했기 때문에 똑같은 문제가 발생했습니다.이 변수는 return 문과 짝을 이루고 분명히 분리 공백을 도입했습니다 ...! –

0

이 주제에 대한 팁을 추가하고 싶습니다. 함수 내에서 리턴 값에 공백 문자가없는 것을 보았습니다. 값이 반환되면 여분의 공백이 있습니다. 객체의 내용을 출력하는 이전의 Write-Verbose 코드가 나를 망쳐 놓는 것을 발견했습니다.

Write-Verbose $ obj | fl * | (| FL *이 | 아웃 문자열 $ OBJ) 나는 아웃 문자열 부분에 대해 뭔가를 추측하고있어

엉망으로 한 아웃 문자열

나는 내 문제 쓰기 자세한 정보 고정 출력, 주위에 괄호를 추가 함수의 파이프 라인으로 인해 여분의 공백이 함수가 반환하는 문자열 값의 시작 부분에 추가되게하는 것입니다.