6

次のタスクを実行するコマンドレット「Convert-ToHashTable」を作成するのが好きです。

$HashTable = Import-Csv Table.csv | Convert-ToHashTable

Import-csv は配列をパイプラインに配置しますが、Convert-ToHashTable コマンドレットで配列をハッシュテーブルに変更するにはどうすればよいですか? コマンドレットの Process 部分で要素にアクセスできますが、パイプライン自体のタイプを変更する方法がわかりません

Process { Write-Verbose "Process $($myinvocation.mycommand)" $CurrentInput = $_ ... }

完全なハッシュテーブルを新しいパイプラインとして返す方法、またはタイプ ハッシュテーブルで新しいパイプラインを作成する方法はありますか?

4

2 に答える 2

5

もう1つの可能性は、よりコンパクトな形式のforeachを使用することです。

$Out = @{}
Import-Csv Table.csv | %{ $Out[$_.Key] = $_.Value }

これにより、パイプラインを変換してハッシュテーブルを生成するのではなく、$Outが値のハッシュテーブルに設定されたままになります。ただし、もちろん、$Outを他の何かにパイプすることもできます。

また、$ Out.Add(x、y)と$ Out [x]=yの間には微妙な違いがあることに注意してください。前者は要素がすでに存在する場合に例外をスローし、後者はそれを置き換えます。

于 2012-09-10T18:58:42.710 に答える