簡體   English   中英

從對象中獲取值作為 Powershell 中的數組

[英]Get Values From Object as array in Powershell

我有一個帶有屬性和值的 PSCustomObject。 我的目標是快速將值放入數組中。 我對 powershell 相當陌生,所以我不確定這是否可以在單行中完成。

我的對象:

object
  propA  : valA
  propB  : valB
  propC  : valC

我想盡快獲得一個僅包含值的數組,理想情況下這不會涉及循環,因為此過程將進行數千次。

valArray
  valA, valB, valC


我已經嘗試了幾件事。 $object | ft -HideTableHeaders $object | ft -HideTableHeaders似乎讓我接近我想要的,但它似乎沒有返回一個數組

不使用循環,你可以這樣做:

$valArray = ($object.PSObject.Properties).Value

給你一個值數組

ValA ValB ValC

這是我遵循您不使用循環指南的方法,即使否則我會使用循環。

$object = [pscustomobject]@{
propA = 'ValA'
propB = 'ValB'
propC = 'ValC'
propD = 'ValD'
propE = 'ValE'
}

[array]$Array123 = (($object | get-member -MemberType NoteProperty).definition).split("=")
[array]$Array123 = [array]$Array123 -replace "^string.*$","" | ? {$_} 
[array]$Array123

所以我制作了一個名為 $object 的虛擬對象。 然后我在 $Array123 上使用了類型加速器 [array],所以 powershell 知道我正在尋找使用“=”符號右側的命令創建一個數組。 我在對象上使用get-member來獲取 NoteProperties,然后我在等號上拆分定義對象。

這將創建一個看起來像這樣的數組。

string propA
ValA
string propB
ValB
string propC
ValC
string propD
ValD
string propE
ValE

然后我正則表達式刪除以“string”開頭的行......最后通過管道傳輸到? {$._} ? {$._}以刪除我們用正則表達式清空的行。

在我們的正則表達式之后,數組將如下所示:

ValA
ValB
ValC
ValD
ValE

我懷疑這比簡單的 foreach 循環快,但它確實屬於答案規則中的無循環

另一個單線:

$variable = $object[0..$object.Count]

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM