我試圖弄清楚如何決議通過 PowerShell 查詢的資料。我們使用 Okta 作為 IdP,我想獲取用戶經理的姓名。
我確實想出了如何獲得價值,但它附帶了一堆我不需要的其他價值。我試圖只放大一個屬性,但不知道如何表達查詢。
PS V:> Get-OktaUser JohnDoe
回傳很多資訊,包括經理的姓名:
id : 00u8u5st55ZLO81uX2p7
status : ACTIVE
created : 2020-10-11T22:25:01.000Z
lastLogin : 2022-05-30T13:29:57.000Z
type : @{id=xxxxxxxxxxxxxxxxxx}
profile : @{lastName=Doe; zipCode=10006; ChildDepartment=Technology; manager=Marey Jane; city=New York; displayName=John Doe; title=Test Account
我可以使用“Select-Object”進一步縮小范圍。我不知道輸出格式的正確術語(哈希表?陣列?),但它看起來像這樣:
PS V:\> Get-OktaUser JohnDoe | Select-Object profile
profile
-------
@{lastName=Doe; zipCode=10006; ChildDepartment=Technology; manager=Mary Jane; city=New York; displayName...
在試圖以一種我只是得到“經理”的價值的方式決議它時,我嘗試了一些東西來看看它是如何被操縱的,但運氣不佳。
PS V:\\\> $test1 = Get-OktaUser johndoe | Select-Object profile
PS V:\\\> $test1.profile
lastName : Doe
zipCode : 10006
ChildDepartment : Corporate Technology
manager : Mary Jane
city : New York
displayName : John Doe
相同的資訊,更整潔的格式。也試過了$test1[0], $test1.profile[0], foreach $test in $test1 write-host $_.manager,等等。
所以基本上,我看到了我想要的價值。我可以對查詢進行某種操作,但是如何梳理出一個屬性和值?答案當然很好,但如果你能幫助我理解原因,那將是非常有幫助的(我認為在學習基本的 PowerShell 時)。
無論如何,感謝您的任何建議!
uj5u.com熱心網友回復:
正如您所推測的,就像Get-OktaUserhas 屬性(id, status,created等)回傳的物件一樣,這些屬性中的每一個的值本身都可以是具有 1 個或多個屬性的復雜物件 - 就像您的示例中的typeand屬性profile.
因此,當您在格式化輸出中看到@{propertyName=value;...}語法時,PowerShell 可能會向您顯示一個嵌套物件。另一方面,如果屬性的值是一個陣列@,則不會出現,即。profile : {value value2 value3 ...}.
要訪問嵌套物件的屬性,只需繼續使用成員訪問運算子.:
PS ~> $user = Get-OktaUser JohnDoe
PS ~> $user
id : 00u8u5st55ZLO81uX2p7
status : ACTIVE
created : 2020-10-11T22:25:01.000Z
lastLogin : 2022-05-30T13:29:57.000Z
type : @{id=xxxxxxxxxxxxxxxxxx}
profile : @{lastName=Doe; zipCode=10006; ChildDepartment=Technology; manager=Marey Jane; city=New York; displayName=John Doe; title=Test Account
PS ~> $user.profile
lastName : Doe
zipCode : 10006
ChildDepartment : Corporate Technology
manager : Mary Jane
city : New York
displayName : John Doe
PS ~> $user.profile.manager
Mary Jane
轉載請註明出處,本文鏈接:https://www.uj5u.com/net/454125.html
