哈希表 - 按输入方式排序

Posted

技术标签:

【中文标题】哈希表 - 按输入方式排序【英文标题】:Hash Table - Sort in order of how they are input 【发布时间】:2016-08-06 09:09:07 【问题描述】:

我在这里有一个哈希表,我最终将它输出到 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"
    

【问题讨论】:

【参考方案1】:

$machineUptime 创建为有序哈希表(前提是您拥有 PowerShell v3 或更新版本):

$machineUptime = [ordered]@

【讨论】:

当然是在 5 分钟后发现的。谢谢! [ordered] 是 PowerShell 3.0+

以上是关于哈希表 - 按输入方式排序的主要内容,如果未能解决你的问题,请参考以下文章

c#哈希表 怎么对value(double类型)进行排序 按顺序输出key(string类型)

[MSTL] lc451. 根据字符出现频率排序(STL+哈希表)

Powershell 排序哈希表

c# 按键排序的哈希表

二叉树和哈希表的优缺点对比与选择

利用哈希表+排序解决“二倍数对数组”问题