関数でオブジェクトを再定義する必要はありますか?PowerShellは関数内のオブジェクトを定義しますか?
[システム..私はmain.ps1
$MyDict = New-Object 'system.collections.generic.dictionary[string,string]' loadDict([ref]$MyDict)
次ていると私は機能
function loadDict([ref]$return) { #pseudo - load data from table foreach ($TableRow in $LoadTable){ if($return.ContainsKey($TableRow.KEYID) -eq $false){ $return.Add($TableRow.KEYID, $TableRow.TEXT.Trim()) } } }
とfunctions.psm1を持っているが、私は次のエラーを取得します.Management.Automation.PSReference'1 [[System.Collections.Generic.Dictionary'2 [[System.String、 mscorlib、Version = 4.0.0.0、Culture =ニュートラル、 なPublicKeyToken = b77a5c561934e089]、[可能System.String、mscorlib、 バージョン= 4.0.0.0、文化=中立、なPublicKeyToken = b77a5c561934e089]]、 mscorlib、バージョン= 4.0.0.0、文化=中立、 なPublicKeyToken = b77a5c561934e089] ]] "ContainsKey"メソッドが見つかりません
私は関数を呼び出すのではなく、関数コードをメインで使用すると問題はありません。
(補正 "[" タイプミスは)
おかげで、私は友人からその「辞書」シングを得ましたそれはbultinハッシュテーブルよりもはるかに高速です。私は数百メガバイトの "厚さ"であるいくつかのテーブルを持っています。私はあなたのソリューションを試し、フィードバックを与えます。 – cernoel
'$ LoadTable'の例を教えてください。リストを一度に読み込むことで、スクリプトをスピードアップすることができます。 –
:/いいえ、内部ERPデータが含まれています。それらは、たとえばShopItemの説明やものを保持しています。私は何をしていますか。その辞書を1日に1回ロードしてRAMに保持します。そのため、Dict LoadはSQL Serverから約10分を要します。しかし、私はそのDictに格納される前にいくつかのデータを変換または連結する必要があります。 – cernoel