これは私のコードです:
$a = @()
for ($i = 0; $i -lt 5; $i++)
{
$item = New-Object PSObject
$item | Add-Member -type NoteProperty -Name 'Col1' -Value 'data1'
$item | Add-Member -type NoteProperty -Name 'Col2' -Value 'data2'
$item | Add-Member -type NoteProperty -Name 'Col3' -Value 'data3'
$item | Add-Member -type NoteProperty -Name 'Col4' -Value 'data4'
$a += $item
}
このコードを使用すると、次のような結果を得ることができます。
Col1 Col2 Col3 Col4
---- ---- ---- ----
0 1 2 3
1 2 3 4
2 3 4 5
3 4 5 6
4 5 6 7
まあ、それは良いことですが、それをより簡単にそしてより適切に達成する方法は?配列PsObject
を作成する方法はありますか?
Powershell v4
を使用しています。
PSCustomObject
をhashtable
にキャストするのが好きです。
$a = for ($i = 0; $i -lt 5; $i++){
[PSCustomObject] @{
Col1 = 'data1'
Col2 = 'data2'
Col3 = 'data3'
Col4 = 'data4'
}
}
for
ループを$a
に割り当てるだけです。
またはワンライナーで:
$a = 1 .. 5 | % { [PSCustomObject] @{Col1 = 'data1'; Col2 = 'data2';Col3 = 'data3';Col4 = 'data4';}}
あなたがしていることに何も悪いことはありませんが、あなたはいくつかのことを利用することができます。
-PassThru
のAdd-Member
パラメータはオブジェクト自体を返すため、次のようにチェーンできます。
$a = @()
for ($i = 0; $i -lt 5; $i++)
{
$item = New-Object PSObject |
Add-Member -type NoteProperty -Name 'Col1' -Value 'data1' -PassThru |
Add-Member -type NoteProperty -Name 'Col2' -Value 'data2' -PassThru |
Add-Member -type NoteProperty -Name 'Col3' -Value 'data3' -PassThru |
Add-Member -type NoteProperty -Name 'Col4' -Value 'data4' -PassThru
$a += $item
}
最初に追加するプロパティの[hashtable]
を指定できます。
$a = @()
for ($i = 0; $i -lt 5; $i++)
{
$item = New-Object PSObject -Property @{
Col1 = 'data1'
Col2 = 'data2'
Col3 = 'data3'
Col4 = 'data4'
}
$a += $item
}
同様に、[PSCustomObject]
タイプのアクセラレータを使用できます。
$a = @()
for ($i = 0; $i -lt 5; $i++)
{
$item = [PSCustomObject]@{
Col1 = 'data1'
Col2 = 'data2'
Col3 = 'data3'
Col4 = 'data4'
}
$a += $item
}