Powershell - 将磁盘 space 结果导出为 CSV 时出现奇怪的结果

Powershell - Strange result when exporting disk space result to CSV

我有以下代码在名为 'Automate' 的服务器上的驱动器上找到空闲 space 并将结果输出到 .csv 文件:

$AutomateD = @()

Clear-Host

$AutomateD += Get-WmiObject Win32_logicaldisk -ComputerName Automate ` | Where-Object {$_.VolumeName -ne 'Logs' -and $_.DeviceID -eq 'D:'}| Format-Table DeviceID, MediaType, `
@{Name="Size(GB)";Expression={[decimal]("{0:N0}" -f($_.size/1gb))}}, `
@{Name="Free Space(GB)";Expression={[decimal]("{0:N0}" -f($_.freespace/1gb))}}, `
@{Name="Free (%)";Expression={"{0,6:P0}" -f(($_.freespace/1gb) / ($_.size/1gb))}} `
-AutoSize

$AutomateD | Export-Csv -path "C:\Powershell\Automate\AutomateD.csv" -NoTypeInformation -Encoding Unicode
$ImportAutoD = Import-CSV C:\Powershell\Automate\AutomateD.csv | ConvertTo-Html

问题是我在打开 csv 文件时得到了一些奇怪的结果 -

"ClassId2e4f51ef21dd47e99d3c952918aff9cd","pageHeaderEntry","pageFooterEntry","autosizeInfo","shapeInfo","groupingEntry" “033ecb2bc07a4d43b5ef94ed5a35d280”,"Microsoft.PowerShell.Commands.Internal.Format.AutosizeInfo","Microsoft.PowerShell.Commands.Internal.Format.TableHeaderInfo", “9e210fe47d09416682b841769c78b8a3”, “27c87ef9bbda4f709f6b4002fa4af63c”, “4ec4f0187cb04f4cb6973460dfe252df”, "cf522b78d86c486691226b40aa69e95c",

但是,如果我只是在屏幕上输出 $AutomateD 变量,我会得到一个不错的 table,如下所示:

PS C:\Powershell\SCRIPT> $AutomateD

DeviceID MediaType Size(GB) Free Space(GB) Free (%)
-------- --------- -------- -------------- --------
D:              12     1225            183    15%

对发生的事情有什么想法吗?导出过程中似乎有问题,虽然我没有任何错误可以继续我做错的事情。

导出 csv 时使用 -NoTypeInformation

您需要删除格式-table 并将其替换为select-对象。您还需要从管道的末尾删除 -autosize。此外,它不是必需的,但我建议放弃那种奇怪的数组创建,然后将单个值添加到数组中,脚本实际上可以在单个管道中完成,除了 import-csv(我不是真的确定你需要,但我会假设它在脚本的其他地方需要它)

Clear-Host

Get-WmiObject Win32_logicaldisk ` | Where-Object {$_.VolumeName -ne 'Logs' -and $_.DeviceID -eq 'D:'}| Select-Object DeviceID, MediaType, `
@{Name="Size(GB)";Expression={[decimal]("{0:N0}" -f($_.size/1gb))}}, `
@{Name="Free Space(GB)";Expression={[decimal]("{0:N0}" -f($_.freespace/1gb))}}, `
@{Name="Free (%)";Expression={"{0,6:P0}" -f(($_.freespace/1gb) / ($_.size/1gb))}} |
Export-Csv -path d:\scripts\test.csv -NoTypeInformation -Encoding Unicode -Force

$ImportAutoD = Import-CSV d:\scripts\test.csv | ConvertTo-Html

另请注意,我确实进行了一些路径更改以使其在我的机器上运行而无需构建新的文件夹结构。