Récupérer un objet OrderedDictionary
Bonjour,
Je travaille actuellement sur un projet avec Powershel version 2. j'ai un problème, j'ai une méthode qui fait un return de type OrderedDictionary, mais quand j'appelle cette méthode et que je fais un getType de la variable alimenté via cette méthode elle est de type Object[]. Pourriez-vous m'aider svp?
Merci d'avance pour votre réponse
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79
| function buildInfosFileOfObject{
param($fileListSettings)
process{
$setInfoObject = @{} # New-Object System.Collections.Specialized.OrderedDictionary
$settingsFile = New-Object System.Collections.ArrayList
$keysFile = New-Object System.Collections.ArrayList
$informationSettingFiles = New-Object System.Collections.Specialized.OrderedDictionary
foreach( $settingNode in $settingsXml.selectNodes("/settings/importedFiles/file") ){
$settingsObjectXml = [xml](Get-Content (Join-path $settingsDirectory $settingNode.GetAttribute('path')).Replace('{0}', $id))
if(-not $settingsObjectXml ){
$nameObjectType = $settingNode.getAttribute('name')
$date = Get-Date
$fatal += "$date : FATAL ERROR - XML File not found : '$nameObjectType' for the bank '$id'"
writeInFileLog -message $fatal -fileLog $logFile
throw "Error : $nameObjectType not found for bank $id"
}
$settingsFile.add($settingsObjectXml)
$tempPath = Join-path $settingsDirectory $settingNode.GetAttribute('path').Replace('{0}', $id)
$settingObject = New-Object PSObject -Property @{
pathFile = $tempPath
nameOfSettingFile = $settingNode.GetAttribute('name')
fileListSetting = $settingsFile
}
$informationSettingFiles.add($settingNode.GetAttribute('name') , $settingObject)
}
for( $j = 0; $j -lt $fileListSettings.Count; $j++ ){
$arrayInfosFileOfObject = New-Object System.Collections.Specialized.OrderedDictionary
for( $i = 0; $i -lt $Global:BankList.Count; $i++ ){
$id = $Global:BankList[$i]
## le tableau des fichier lies au type d'objet qu'on va traiter
$csvArrayOfObjectType = buildInformationFilePerObject -settingsXml $fileListSettings[$j] -bankCode $id
$informationObjectType = New-Object PSObject -Property @{
nameObject = $fileListSettings[$j].settings.setting.listFile.name
privativeXMLParametrageOfObject = $fileListSettings[$j]
privatifParametrage = $csvArrayOfObjectType[0].methodCalculColumns
formatColumns = $csvArrayOfObjectType[0].formatColumns
columnsNameToReplace = $csvArrayOfObjectType[0].columnsNameToReplace
columnsPresentInOutPutFile = $csvArrayOfObjectType[0].columnsPresentInOutPutFile
filesToProcessForObject = $csvArrayOfObjectType
pathOfPrivativeFile = $informationSettingFiles[$fileListSettings[$j].settings.setting.listFile.name]
obligatoryColumns = $csvArrayOfObjectType[0].obligatoryColumns
}
$arrayInfosFileOfObject.add($id , $informationObjectType )
}
## map contenant par banque les infos des fichiers de conf
$setInfoObject.add($fileListSettings[$j].settings.setting.listFile.name, $arrayInfosFileOfObject )
}
write-host "tttttt $($setInfoObject.getType() )" # ===> tttttt System.Collections.Specialized.OrderedDictionary
return ,$setInfoObject
}
$tempSet = buildInfosFileOfObject -fileListSettings $filesXML
write-host " tempsSet $($tempSet.getType().fullName)" # ==> tempsSet System.Object[] de taille 3 ( 0 , 0, et mon orderedDictionnary )
$Global:SetSettingsAndCsvFilePerBank = $tempSet
write-host " sssss $($Global:SetSettingsAndCsvFilePerBank.count)" # ===>renvoie une taille de 3
} |
je suis bloqué dessus depuis 2j et j'ai tout essayé mais je ne sais pas comment règler le problème.
Merci d'avance pour votre réponse.