속성 이름으로 개체의 속성 값을 가져오는 방법은 무엇입니까?
PowerShell에서 개체의 이름(문자열)을 지정하여 개체의 속성 값을 가져오는 방법은 무엇입니까?저는 다음과 같은 것을 원합니다.
$obj = get-something
# View the object's members:
$obj | gm
# I could retrieve a property by doing so:
write-host $obj.SomeProp
# But for many purposes, I would really want to:
write-host $obj | Get-PropertyByName "SomeProp"
PowerShell에 "Get-PropertyByName"과 유사한 것이 있습니까?
그럼요.
write-host ($obj | Select -ExpandProperty "SomeProp")
또는 그 문제에 대해서는:
$obj."SomeProp"
@aquinas에 대한 확장:
Get-something | select -ExpandProperty PropertyName
또는
Get-something | select -expand PropertyName
또는
Get-something | select -exp PropertyName
저는 정보를 얻기 위해 한 줄로 된 명령어를 찾는 사람들을 위해 이러한 제안을 했고 실제 사례를 포함하고 싶었습니다.
다음은 PowerShell을 통해 Office 365를 관리할 때 "BookInPolicy" 목록에 추가된 모든 사용자/그룹을 가져오는 데 사용한 예입니다.
Get-CalendarProcessing conferenceroom@example.com | Select -expand BookInPolicy
"Select BookInPolicy"를 사용하는 것만으로도 여러 회원이 차단되었습니다. 이 정보에 감사드립니다!
다음을 사용하여 이름으로 속성을 얻을 수 있습니다.Select-Object
cmdlet 및 관심 있는 속성 이름을 지정합니다.이것은 단순히 해당 속성의 원시 값을 반환하는 것이 아니라 개체처럼 동작하는 것을 가져옵니다.
[PS]> $property = (Get-Process)[0] | Select-Object -Property Name
[PS]> $property
Name
----
armsvc
[PS]> $property.GetType().FullName
System.Management.Automation.PSCustomObject
해당 속성의 값을 사용하려면 다음 속성이 하나만 있더라도 어떤 속성을 찾고 있는지 식별해야 합니다.
[PS]> $property.Name
armsvc
[PS]> $property -eq "armsvc"
False
[PS]> $property.Name -eq "armsvc"
True
[PS]> $property.Name.GetType().FullName
System.String
여기에 나와 있는 다른 답변에 따르면 문자열 내에서 단일 속성을 사용하려면 문자열에 삽입할 변수로 표현식을 동적으로 선언하려면 표현식(괄호를 두름)과 접두사($)를 평가해야 합니다.
[PS]> "The first process in the list is: $($property.Name)"
The first process in the list is: armsvc
아주 정확하게, 다른 사람들은 이 질문에 대해 다음을 추천함으로써 답했습니다.-ExpandProperty
의 매개 변수Select-Object
cmdlet.이렇게 하면 지정된 속성 값을 반환하여 일부 문제를 해결할 수 있지만 다른 시나리오에서 다른 접근 방식을 사용할 수 있습니다.
-ExpandProperty <String>
선택할 속성을 지정하고 해당 속성을 확장해야 함을 나타냅니다.
[PS]> (Get-Process)[0] | Select-Object -ExpandProperty Name
armsvc
사용해 보십시오.
$obj = @{
SomeProp = "Hello"
}
Write-Host "Property Value is $($obj."SomeProp")"
다음은 개체의 속성 값을 가져올 수 있는 다른 방법입니다.
write-host $(get-something).SomeProp
$com1 = new-object PSobject #Task1
$com2 = new-object PSobject #Task1
$com3 = new-object PSobject #Task1
$com1 | add-member noteproperty -name user -value jindpal #Task2
$com1 | add-member noteproperty -name code -value IT01 #Task2
$com1 | add-member scriptmethod ver {[system.Environment]::oSVersion.Version} #Task3
$com2 | add-member noteproperty -name user -value singh #Task2
$com2 | add-member noteproperty -name code -value IT02 #Task2
$com2 | add-member scriptmethod ver {[system.Environment]::oSVersion.Version} #Task3
$com3 | add-member noteproperty -name user -value dhanoa #Task2
$com3 | add-member noteproperty -name code -value IT03 #Task2
$com3 | add-member scriptmethod ver {[system.Environment]::oSVersion.Version} #Task3
$arr += $com1, $com2, $com3 #Task4
write-host "windows version of computer1 is: "$com1.ver() #Task3
write-host "user name of computer1 is: "$com1.user #Task6
write-host "code of computer1 is: "$com1,code #Task5
write-host "windows version of computer2 is: "$com2.ver() #Task3
write-host "user name of computer2 is: "$com2.user #Task6
write-host "windows version of computer3 is: "$com3.ver() #Task3
write-host "user name of computer3 is: "$com1.user #Task6
write-host "code of computer3 is: "$com3,code #Task5
read-host
언급URL : https://stackoverflow.com/questions/14406315/how-to-get-an-objects-propertys-value-by-property-name
'programing' 카테고리의 다른 글
MySQL: DISTINCT / UNIQUENT를 선택하지만 모든 열을 반환하시겠습니까? (0) | 2023.05.21 |
---|---|
Xcode가 시스템 키체인을 사용하기 위해 계속해서 암호를 요청합니다. (0) | 2023.05.21 |
SQL 날짜를 자정으로 반올림 (0) | 2023.05.21 |
FileUpload.hasFile은 항상 False입니다. (0) | 2023.05.21 |
mongodb가 Mac에서 실행되고 있는지 확인하는 방법은 무엇입니까? (0) | 2023.05.21 |