2015-12-08 3 views
0

J'appelle un scriptblock d'un objet ServerObject dans une session distante. Dans le scriptblock je crée une hashtable et l'enregistre dans le ServerObject. À la fin du scriptblock, l'ordre est correct, après la session, les éléments sont dans le mauvais ordre.Comment puis-je conserver l'ordre d'une table de hachage ordonnée après une session à distance?

$Serv = New-Object -TypeName PSObject 
$Serv | Add-Member -MemberType NoteProperty -Name Cn -Value Computername 
$Serv | Add-Member -MemberType NoteProperty -Name Inf -Value "" 

function getInf(){ 

    $Inf = [ordered]@{ 
    SiteConfig = "a"; 
    BrokerController = "b"; 
    AdminRoles = "c";  
    } 
    $Serv.Inf = $Inf 
} 

getInf 

$ServResult = Invoke-Command -Cn $Serv.Cn -Credential $Cred -ScriptBlock { 
    param($Serv) 
    Invoke-Command -ScriptBlock ([ScriptBlock]::Create($Serv.getInf)) 
    $Serv 
}-ArgumentList $Serv 
Remove-PSSession -ComputerName $Serv.Cn 
$ServResult.Inf 
+1

Il peut s'agir d'un problème de sérialisation Clixml - https://connect.microsoft.com/PowerShell/Feedback/Details/771721 –

+0

Je ne l'ai pas tapé depuis la mémoire. Le même code est dans mon script (le scriptblock et la session sont à deux endroits différents), mais je ne posterai pas mes 1330 lignes de code, juste pour poster du code de travail. Avez-vous une question concrète? – Temerita

+1

@Temerita veuillez poster un exemple [minimal, complet et vérifiable] (http://stackoverflow.com/help/mcve) de votre code pour démontrer le problème. – alroc

Répondre

0

Essayez ceci:

Inf.GetEnumerator $() | sort -Property name