반응형
사용자 지정 개체의 각 Note Property를 반복 실행
저는 당신을 보호하기 위해PSObject
이런 파워셸에서:
$NetworkInfo = New-Object PSObject
$NetworkInfo | Add-Member -type NoteProperty -Name IPAddress -Value "10.10.8.11"
$NetworkInfo | Add-Member -type NoteProperty -Name SubnetMask -Value "255.255.255.0"
$NetworkInfo | Add-Member -type NoteProperty -Name Gateway -Value "10.10.8.254"
$NetworkInfo | Add-Member -type NoteProperty -Name Network -Value "10.10.8.0"
$NetworkInfo | Add-Member -type NoteProperty -Name DNS1 -Value "10.10.10.200"
$NetworkInfo | Add-Member -type NoteProperty -Name DNS2 -Value "10.10.10.201"
$NetworkInfo
이 PS 개체의 각 노트 속성에 대해 특정 작업을 수행하고 싶은데 어떻게 수행해야 할지 잘 모르겠습니다.예를 들어 (잘못된 방법이라는 것을 알면서도) 이 코드는 다음과 같습니다.
ForEach ($noteProperty in $NetworkInfo) {
Write-Host $noteProperty
}
전체 개체만 배열로 출력합니다.
@{IPAddress=10.10.8.11; SubnetMask=255.255.255.0; Gateway=10.10.8.254; Network=10.10.8.0; DNS1=10.10.10.200; DNS2=10.10.10.201}
편집: 각각NoteProperty
는 변수 유형입니다.System.String
- 필요하다면요
개체를 잘못 만들고 있는 것입니까, 아니면 개체를 통과하는 방법을 이해하지 못하는 것입니까?
Mike가 언급한 대로 Get-Member를 사용할 수 있습니다. 순서를 유지하는 대안은 모든 개체에 있는 PSObject 속성을 사용하는 것입니다.
#View details for all properties on a specific object
$NetworkInfo.PSObject.Properties
#similar code to Mike's, working with name and value:
$NetworkInfo.PSObject.Properties | foreach-object {
$name = $_.Name
$value = $_.value
"$name = $value"
}
이를 통해 필요한 것을 얻을 수 있습니다.
$NetworkInfo | get-member -type NoteProperty | foreach-object {
$name=$_.Name ;
$value=$NetworkInfo."$($_.Name)"
write-host "$name = $value"
}
시도:
ForEach ($noteProperty in $NetworkInfo.PSObject.Properties)
{
Write-Host $noteProperty.Name
Write-Host $noteProperty.Value
}
짧은(심지어 더 빠른) 버전:
$NetworkInfo.psobject.properties.foreach({"$($_.Name) = $($_.Value)"})
출력:
IPAddress = 10.10.8.11
SubnetMask = 255.255.255.0
Gateway = 10.10.8.254
Network = 10.10.8.0
DNS1 = 10.10.10.200
DNS2 = 10.10.10.201
아니면 또 하나:
$NetworkInfo.foreach({$_})
다음을 제공합니다.
IPAddress : 10.10.8.11
SubnetMask : 255.255.255.0
Gateway : 10.10.8.254
Network : 10.10.8.0
DNS1 : 10.10.10.200
DNS2 : 10.10.10.201
다음과 같은 속성 1개를 선택할 수도 있습니다.
$NetworkInfo.DNS1
다음과 같은 결과를 얻을 수 있습니다.
10.10.10.200
또는 모든 DNS 항목을 선택합니다.
$NetworkInfo.foreach({$_}) | Select-Object DNS*
결과:
DNS1 DNS2
---- ----
10.10.10.200 10.10.10.201
원하는 경우:
$NetworkInfo.psobject.properties.where({$_.Name -like 'DNS*' }).Value
다음을 제공합니다.
10.10.10.200
10.10.10.201
각 위치에 대한 조합:
$NetworkInfo.psobject.properties.where({$_.Name -like 'DNS*' }).foreach({
"$($_.Name) = $($_.Value)"})
다음을 제공합니다.
DNS1 = 10.10.10.200
DNS2 = 10.10.10.201
2차원 배열로 변환:
$NetworkInfo.psobject.properties.where({$_.Name -like 'DNS*' }).foreach({
,(@([string]$_.Name, [string]$_.Value))})
"{", 출력의 ", "를 잊지 마십시오.
DNS1
10.10.10.200
DNS2
10.10.10.201
2차원적인 것은
$NetworkInfo.psobject.properties.where({$_.Name -like 'DNS*' }).foreach({
,(@([string]$_.Name, [string]$_.Value)) })[0]
DNS1
10.10.10.200
그리고 다음은.
$NetworkInfo.psobject.properties.where({$_.Name -like 'DNS*' }).foreach({
,(@([string]$_.Name, [string]$_.Value)) })[0][0]
DNS1
그리고...
$NetworkInfo.psobject.properties.where({$_.Name -like 'DNS*' }).foreach({
,(@([string]$_.Name, [string]$_.Value)) })[0][1]
10.10.10.200
언급URL : https://stackoverflow.com/questions/27642169/looping-through-each-noteproperty-in-a-custom-object
반응형
'source' 카테고리의 다른 글
ajax 문제 - firebug에서는 200 OK이지만 응답 본문이 없는 빨간색 (0) | 2023.09.06 |
---|---|
pcap 구조 pcap_drlen vs caplen (0) | 2023.09.06 |
관찰 가능한 RXJ의 .pipe() 메서드와 .subscribe() 메서드 간의 차이 (0) | 2023.09.01 |
Swift를 사용하여 하나의 View 컨트롤러에 가로 모드 적용 (0) | 2023.09.01 |
오라클 pl/sql 배열 (0) | 2023.09.01 |