2015-12-08 35 views
0

我在遠程會話中調用ServerObject的scriptblock。在腳本塊中,我創建一個散列表並將其保存在ServerObject中。在腳本塊的末尾,順序是正確的,在會話之後項目的順序是錯誤的。如何在遠程會話之後保持排序哈希表的順序?

$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

它可能是Clixml序列化問題 - https://connect.microsoft.com/PowerShell/Feedback/Details/771721 –

+0

我沒有從內存中鍵入它。我的腳本中有相同的代碼(腳本塊和會話位於兩個不同的位置),但我不會發布我的1330行代碼,只是發佈一些工作代碼。你有一些具體的問題嗎? – Temerita

+1

@Temerita請發佈一個[最小,完整且可驗證的](http://stackoverflow.com/help/mcve)示例代碼來演示此問題。 – alroc

回答

0

試試這個:

$ Inf.GetEnumerator()|排序 - 屬性名稱