質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.48%
PowerShell

Windows PowerShellはコマンドラインインターフェースであり、システム管理を含むWindowsタスク自動化のためのスクリプト言語です。

Q&A

解決済

1回答

6105閲覧

Psobject のプロパティーを インデックスで指定したい

kamikazelight

総合スコア305

PowerShell

Windows PowerShellはコマンドラインインターフェースであり、システム管理を含むWindowsタスク自動化のためのスクリプト言語です。

0グッド

0クリップ

投稿2018/11/07 08:43

前提・実現したいこと

別の質問の問題 確認用 サンプルソースコード
で使用しているのですが、
二次元配列をPSObjectにしてまとめたいときに列ごとに
$Psobject.プロパティー名 = 代入したい値のようにしているのですが
列が多くて大変です。

下記のような記述方法はないのでしょうか?

powershell

1# あったらうれしい記述方法 2for ($i = 1; $i -le $列数; $i++) 3{ 4 $Psobject.Property[$i] = 代入したい値[$i] 5}

試したこと

invoke 使って文字列をスクリプトとして実行...
...無理やりな感じがしたのでやめました

補足情報(FW/ツールのバージョンなど)

Win10

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答1

0

ベストアンサー

invoke 使って文字列をスクリプトとして実行

と似たような話ですが。

PowerShellは参照するプロパティ名を変数を使って動的に変更できます。

例えば、以下のコードでは、ABの二つのプロパティを持つPSObjectを作成し、$nameOfPropertyの値によって参照するプロパティを変更しています。

powershell

1[psobject]$pso = New-Object -TypeName psobject -Property @{A=1;B=2} 2 3Write-Output -InputObject $pso 4 5[string]$nameOfProperty = 'a' 6'{0} = {1}' -f $nameOfProperty , $pso.$nameOfProperty # => 1 7 8$nameOfProperty = 'B' 9'{0} = {1}' -f $nameOfProperty , $pso.$nameOfProperty # => 2 10 11<# 結果 12A B 13- - 141 2 15a = 1 16B = 2 17#>

別の質問のコードのようにSelect-Objectコマンドレットでプロパティを定義してるのであれば、
以下のようにプロパティ名の配列を作ることで、比較的簡潔にプロパティを設定できると思います。

powershell

1[string[]]$Property = 2 'No,Category,Type,PutName,ListPrice,Purchase,PrimeCost,SellingPrice,Maker,DisplayOrderNo,EquipmentName,CharacterSymbol' -split ',' 3 4$Psobject = New-Object psobject | Select-Object -Property $Property 5$列数 = $Property.Length 6 7for ($i = 1; $i -le $列数; $i++) 8{ 9 $Psobject.($Property[$i-1]) = $代入したい値[$i] 10}

投稿2018/11/07 13:43

編集2018/11/09 09:23
imihito

総合スコア2166

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

kamikazelight

2018/11/08 01:01

ありがとうございます。 invoke を使うよりもスマートですね。 それに 応用も出来そうです! そのために 別途 質問を投稿するかもしれせん。 また、宜しくお願い致します。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問