함수에서 객체를 재정의해야합니까?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"메서드를 찾을 수 없습니다.
함수를 호출하지 않고 함수 코드를 Main에 사용하면 문제가 없습니다.
(보정 "["오타)
덕분에 난 친구로부터 그 "사전"것있어 내게 bultin 해시 테이블보다 훨씬 빠르다고 내게 말했다. 몇 백 메가 바이트의 "두꺼운"테이블이 있습니다. 나는 귀하의 솔루션을 시도하고 피드백을 줄 것입니다. – cernoel
'$ LoadTable'의 예제를 제공해 줄 수 있습니까? 한 번에 목록을 작성하여 스크립트 속도를 높일 수 있습니다. –
:/죄송합니다. 내부 ERP 데이터가 포함되어 있습니다. 예를 들어, ShopItem 설명 및 물건을 보유하고 있습니다. 내가하는 일은 하루에 한 번 해당 사전을로드하고 RAM에 보관하는 것입니다. 따라서 Dict Load는 SQL Server에서 약 10 분이 소요됩니다. 실제로는 지옥이 빠릅니다. 하지만 변환 또는 일부 Dict에 저장되기 전에 데이터를 연결해야합니다. – cernoel