Powershell을 학습하고 이 결과 집합의 첫 번째 값을 구문 분석하는 방법을 찾으려고 합니다.
IPAddresses
-----------
{10.60.50.40, fe80::5ddf:a8f4:e29c:b66}
일반적으로 나는 그것을 찾아보지만 {x, x}가 실제 표준 데이터 유형인지는 알 수 없습니다 Powershell
.
대략적인 문자열 구문 분석을 수행해야 합니까, 아니면 첫 번째 문자열을 추출하는 다음과 같은 표준 명령이 있습니까?
... | Select-Object IPAddresses | Select-String [0]
(선택 문자열 부분을 방금 만들어 놓았습니다. 분실되었습니다.)
답변1
이것이 내가 지금까지 가지고 있는 것입니다:
... Select-Object IPAddresses | ForEach {$_.IPAddresses}[0]
첫 번째 것을 반환합니다.
답변2
다음과 같이 시도해 보세요.
$myResultSet | foreach { $_.IPAddresses[0] }
답변3
노력하다
$myResultSet | Select-Object -First 1 IPAddress
결과 세트는 일부 유형의 모음입니다. cmdlet Select-Object
은 해당 컬렉션의 첫 번째 항목을 가져온 다음 IPAddress
표시되는 속성으로만 필터링합니다.
내 컴퓨터에서 위 명령의 출력은 다음과 같습니다. 반환된 주소가 다르다는 점에서 귀하의 주소가 다를 수 있습니다.
IPAddress
---------
fe80::5581:4fbc:fc22:ec79%13
기본적으로 PowerShell은 출력을 통해 Format-Table
멋진 디스플레이를 만들기 때문에 테이블을 얻습니다.
IP 주소 자체에만 액세스하려면 표현식을 약간 수정하면 됩니다.
$myResultSet.IPAddress|Select-Object -First 1
또는 점 표기법과 컬렉션에 대한 인덱스를 사용하면 Select-Object
다음과 같이 완전히 사용하지 않아도 됩니다.
$myResultSet[0].IPAddress
위의 내용은 컬렉션 IPAddress
의 첫 번째 항목 속성을 직접 참조하므로 $myResultSet
인덱스가 0입니다.$myResultSet[0]
둘 중 하나는 다음과 같이 IP 주소 자체만 반환합니다.
fe80::5581:4fbc:fc22:ec79%13
답변4
첫째, 유형이 무엇인지 추측할 필요가 없으며 IPAddresses
다음과 같이 쉽게 얻을 수 있습니다.
$myResultSet[0].IPAddresses.GetType()
아마 일종의 일이겠지컬렉션(배열)Select-Object
이므로 다음 매개변수 와 함께 사용할 수 있습니다 ExpandProperty
.
$myResultSet | Select-Object -ExpandProperty 'IPAddresses' | Select-Object -First 1
아니면 당신은 사용할 수 있습니다속성 역참조 연산자및\또는 다음과 같이 색인을 생성합니다.불구자 머프제안됨