排序表列-Powershell

排序表列-Powershell,powershell,Powershell,下午好 我使用以下脚本生成一个表,作为我拥有的html报告的一部分: (import-csv "C:\AutoTasks\server.txt" | % {new-object psobject -property @{ "Asset Number"=$_.Computer; "Region"=$_.Description; "Online Status"=(test-connection -computername $_.Computer -quiet -count 1); "Online

下午好

我使用以下脚本生成一个表,作为我拥有的html报告的一部分:

(import-csv "C:\AutoTasks\server.txt" | 
% {new-object psobject -property @{
"Asset Number"=$_.Computer;
"Region"=$_.Description; 
"Online Status"=(test-connection -computername $_.Computer -quiet -count 1);
"Online Since"= Try {(([Management.ManagementDateTimeConverter]::ToDateTime((gwmi Win32_OperatingSystem -ComputerName $_.Computer -ErrorAction Stop).LastBootUpTime)))} Catch {"Offline"} ;
"Service"=((Get-Service -ComputerName $_.Computer | Where-Object {$_.DisplayName -eq "ServiceName"}).Status);
"Disk Size (GB)" = ([Math]::Round(((get-WmiObject win32_logicaldisk -Computername $_.Computer -Filter $_.Drive).size)/1Gb,2));
"Free Disk Space (GB)" = ([Math]::Round(((get-WmiObject win32_logicaldisk -Computername $_.Computer -Filter $_.Drive).freespace)/1Gb,2));
"Free Disk Space %" = ([Math]::Round(100*(([Math]::Round(((get-WmiObject win32_logicaldisk -Computername $_.Computer -Filter $_.Drive).freespace)/1Gb,2)) / ([Math]::Round(((get-WmiObject win32_logicaldisk -Computername $_.Computer -Filter $_.Drive).size)/1Gb,2))),2))
 }} | ConvertTo-HTML -as Table -Fragment -PreContent "<h2>Backup Machines</h2>" | Out-String) 
(导入csv“C:\autotask\server.txt”|
%{新对象psobject-属性@{
“资产编号”=$\计算机;
“区域”=$\说明;
“联机状态”=(测试连接-computername$\计算机-安静-计数1);
“联机自”=尝试{(([Management.ManagementDateTimeConverter]::ToDateTime((gwmi Win32_OperatingSystem-ComputerName$\u.Computer-ErrorAction Stop).LastBootUpTime))}捕获{“脱机”};
“服务”=(获取服务-ComputerName$\计算机|其中对象{$\显示名称-eq“ServiceName”}).Status);
“磁盘大小(GB)”=([Math]::圆形((获取WmiObject win32_logicaldisk-Computername$\uComputer-Filter$\uDrive).Size)/1Gb,2);
“可用磁盘空间(GB)”=([Math]::圆形((获取WmiObject win32_logicaldisk-Computername$\uComputer-Filter$\uDrive.freespace)/1Gb,2));
“可用磁盘空间%”=([Math]::Round(100*([Math]::Round((get-WmiObject win32_logicaldisk-Computername$.Computer-Filter$.Drive).freespace)/1Gb,2))/([Math]::Round((get-WmiObject win32_logicaldisk-Computername$.Computer-Filter$.Drive).size)/1Gb,2)))
}}|转换为HTML-作为表-片段-预内容“备份机器”|输出字符串)
它能满足我的一切需要

然而,我的问题在于专栏的顺序。它不会以我列出的列顺序显示,而且它提供的顺序背后似乎没有任何逻辑


你知道我该如何指定顺序吗?我是不是遗漏了一个format table语句?我的搜索结果是空白的。

在PowerShell 3.0及更新版本中,您可以在哈希表文本上使用
[ordered]
属性来表示您需要一个有序字典:

(import-csv "C:\AutoTasks\server.txt" | 
% {new-object psobject -property $([ordered]@{
"Asset Number"=$_.Computer;
"Region"=$_.Description; 
"Online Status"=(test-connection -computername $_.Computer -quiet -count 1);
"Online Since"= Try {(([Management.ManagementDateTimeConverter]::ToDateTime((gwmi Win32_OperatingSystem -ComputerName $_.Computer -ErrorAction Stop).LastBootUpTime)))} Catch {"Offline"} ;
"Service"=((Get-Service -ComputerName $_.Computer | Where-Object {$_.DisplayName -eq "ServiceName"}).Status);
"Disk Size (GB)" = ([Math]::Round(((get-WmiObject win32_logicaldisk -Computername $_.Computer -Filter $_.Drive).size)/1Gb,2));
"Free Disk Space (GB)" = ([Math]::Round(((get-WmiObject win32_logicaldisk -Computername $_.Computer -Filter $_.Drive).freespace)/1Gb,2));
"Free Disk Space %" = ([Math]::Round(100*(([Math]::Round(((get-WmiObject win32_logicaldisk -Computername $_.Computer -Filter $_.Drive).freespace)/1Gb,2)) / ([Math]::Round(((get-WmiObject win32_logicaldisk -Computername $_.Computer -Filter $_.Drive).size)/1Gb,2))),2))
 })} | ConvertTo-HTML -as Table -Fragment -PreContent "<h2>Backup Machines</h2>" | Out-String) 
(导入csv“C:\autotask\server.txt”|
%{新对象psobject-属性$([已排序]@{
“资产编号”=$\计算机;
“区域”=$\说明;
“联机状态”=(测试连接-computername$\计算机-安静-计数1);
“联机自”=尝试{(([Management.ManagementDateTimeConverter]::ToDateTime((gwmi Win32_OperatingSystem-ComputerName$\u.Computer-ErrorAction Stop).LastBootUpTime))}捕获{“脱机”};
“服务”=(获取服务-ComputerName$\计算机|其中对象{$\显示名称-eq“ServiceName”}).Status);
“磁盘大小(GB)”=([Math]::圆形((获取WmiObject win32_logicaldisk-Computername$\uComputer-Filter$\uDrive).Size)/1Gb,2);
“可用磁盘空间(GB)”=([Math]::圆形((获取WmiObject win32_logicaldisk-Computername$\uComputer-Filter$\uDrive.freespace)/1Gb,2));
“可用磁盘空间%”=([Math]::Round(100*([Math]::Round((get-WmiObject win32_logicaldisk-Computername$.Computer-Filter$.Drive).freespace)/1Gb,2))/([Math]::Round((get-WmiObject win32_logicaldisk-Computername$.Computer-Filter$.Drive).size)/1Gb,2)))
})}|转换为HTML-作为表-片段-预内容“备份机器”|输出字符串)

您使用的PowerShell版本是什么?(
$PSVersionTable.PSVersion
)它是3.0版,工作非常完美,感谢您提供的信息。