在Powershell中将自定义对象数组转换为String数组

pen*_*eri 13 powershell

所以我正在调整一些Powershell库,我有一个简单的问题,我想以最好的方式解决.....

简而言之,我在一个数组中有一些自定义PSObject:

$m1 = New-Object PSObject –Property @{Option="1"; Title="m1"}
$m2 = New-Object PSObject –Property @{Option="2"; Title="m2"}
$m3 = New-Object PSObject –Property @{Option="3"; Title="m3"}

$ms = $m1,$m2,$m3
Run Code Online (Sandbox Code Playgroud)

我想转换成一个字符串数组....理想情况下是一个单独的字符串数组,其中每个项目都有一个连接属性的条目.即

"1m1","2m2","3m3"

我试过$ms | Select-Object Option,Title,$ms | %{ "O: $_.Option T: $_.Title "} 但他们给了我PSObject(再次)或数组数组的数组.

Kei*_*ill 32

这会给你你想要的东西:

$strArray = $ms | Foreach {"$($_.Option)$($_.Title)"}
Run Code Online (Sandbox Code Playgroud)

Select-Object有点像SQL SELECT.它将选定的属性投影到新对象(v1/v2中的pscustomobject和V3中的Selected.<orignalTypeName>).你的第二种方法不起作用,因为$_.Option在一个字符串中只会"插入"变量$_.它不会评估表达式$_.Option.

您可以通过使用子表达式来获取双引号字符串来计算表达式,例如"$(...)"或"$($ _.Option)".