我在这里有一个哈希表,我最终输出到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"
}
}
答案 0 :(得分:5)
创建$machineUptime
作为有序哈希表(假设您有PowerShell v3或更新版本):
$machineUptime = [ordered]@{}