Então, estou ajustando algumas bibliotecas do Powershell e tenho uma pergunta simples que gostaria de resolver da melhor maneira ...
Em resumo, eu tenho alguns PSObjects personalizados em uma matriz:
$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
que desejo converter em um array de strings .... idealmente, um único array de strings que possui uma entrada para cada item com as propriedades concatenadas. isto é
"1m1", "2m2", "3m3"
Eu tentei $ms | Select-Object Option,Title
e $ms | %{ "O: $_.Option T: $_.Title "}
mas eles me fornecem matrizes do PSObject (novamente) ou matrizes de matrizes.
Respostas:
25 para resposta № 1Isso vai te dar o que você quer:
$strArray = $ms | Foreach {"$($_.Option)$($_.Title)"}
Selecionar objeto é como uma SQL SELECIONAR. Ele projeta as propriedades selecionadas em um novo objeto (objeto pscustom na v1 / v2 e Selected. <orignalTypeName> na V3). Sua segunda abordagem não funciona, porque $_.Option
em uma string apenas "interpola" a variável $_
. Não avaliará a expressão $_.Option
.
Você pode obter seqüências de caracteres com aspas duplas para avaliar expressões usando subexpressões, por exemplo, "$ (...)" ou "$ ($ _. Option)".