質問: 代入したい値[$i] } ``` ### 試したこと invoke 使って文字列をスクリプトとして実行... ...無理やりな感じがしたのでやめました ### 補足情報(FW/ツールのバージョンなど) Win10
回答: > > invoke 使って文字列をスクリプトとして実行 > > > と似たような話ですが。 PowerShellは参照するプロパティ名を変数を使って動的に変更できます。 例えば、以下のコードでは、`A`・`B`の二つのプロパティを持つPSObjectを作成し、`$nameOfProperty`の値によって参照するプロパティを変更しています。 ``` [psobject]$pso = New-Object -TypeName psobject -Property @{A=1;B=2} Write-Output -InputObject $pso [string]$nameOfProperty = 'a' '{0} = {1}' -f $nameOfProperty , $pso.$nameOfProperty # => 1 $nameOfProperty = 'B' '{0} = {1}' -f $nameOfProperty , $pso.$nameOfProperty # => 2 <# 結果 A B - - 1 2 a = 1 B = 2 #> ``` 別の質問のコードのように`Select-Object`コマンドレットでプロパティを定義してるのであれば、 以下のようにプロパティ名の配列を作ることで、比較的簡潔にプロパティを設定できると思います。 ``` [string[]]$Property = 'No,Category,Type,PutName,ListPrice,Purchase,PrimeCost,SellingPrice,Maker,DisplayOrderNo,EquipmentName,CharacterSymbol' -split ',' $Psobject = New-Object psobject | Select-Object -Property $Property $列数 = $Property.Length for ($i = 1; $i -le $列数; $i++) { $Psobject.($Property[$i-1]) = $代入したい値[$i] } ```