2016-04-14 83 views
1

我在這裏有一個哈希表,我最終輸出到Excel電子表格,但問題似乎是系統默認排序哈希表的方式。我希望它按照它們輸入的順序返回機器,它們當前的工作方式是彈出一個框,並粘貼所有機器名,以便它們在foreach循環之前全部位於內存中。我以前用最長的正常運行時間對它進行了排序,但現在需要與輸入的方式相同。我最初的想法是創建另一個散列表,並以相同的順序捕獲它們,與變量$machineList相同,但這甚至可能使我處於相同的位置。我試圖搜索,但我無法找到散列表排序的默認方式的信息。哈希表 - 按照它們的輸入順序排序

任何想法?

$machineUptime = @{} 
foreach($machine in $machineList){ 
    if(Test-Connection $machine -Count 1 -Quiet){ 
     try{ 
      $logonUser = #gets the logged on user 
      $systemUptime = #gets the wmi property for uptime 

      if($logonUser -eq $null){ 
       $logonUser = "No Users Logged on" 
      } 

      $machineUptime[$machine] = "$systemUptime - $logonUser" 
     } 
     catch{ 
      Write-Error $_ 
      $machineUptime[$machine] = "Error retrieving uptime" 
     } 
    } 
    else{ 
     $machineUptime[$machine] = "Offline" 
    } 
} 

回答

5

創建$machineUptime爲有序哈希表(前提是你有PowerShell的V3或更新版本):

$machineUptime = [ordered]@{} 
+0

這就像5分鐘後發現,當然。謝謝! – nkasco

+1

[已訂購]是PowerShell 3.0+ – Matt

+0

@Matt事實確實如此。 –