【发布时间】:2019-05-15 15:25:21
【问题描述】:
无法使用echo 函数将 PS 输出转换为 CSV 格式。我需要收集有关多台服务器的硬件信息并从 Internet 获取此脚本。我对其进行了修改以仅收集必要的信息,例如计算机名称、硬盘空间、CPU 详细信息和 RAM。
下面是我的代码:
$ArrComputers = "PC17"
Clear-Host
foreach ($Computer in $ArrComputers) {
$computerSystemRam = Get-WmiObject Win32_ComputerSystem -Computer $Computer |
select @{n="Ram";e={[math]::Round($_.TotalPhysicalMemory/1GB,2)}} |
FT -HideTableHeaders -AutoSize
$computerCPU = Get-WmiObject Win32_Processor -Computer $Computer |
select Name |
FT -HideTableHeaders
$computerCPUCores = Get-WmiObject Win32_Processor -Computer $Computer |
select NumberOfLogicalProcessors |
FT -HideTableHeaders -AutoSize
$computerC = Get-WmiObject -Class Win32_LogicalDisk -Filter "DeviceID= 'C:'" -ComputerName $Computer |
select @{n="Size";e={[math]::Round($_.Size/1GB,2)}} |
FT -HideTableHeaders -AutoSize
$computerD = Get-WmiObject -Class Win32_LogicalDisk -Filter "DeviceID= 'D:'" -ComputerName $Computer |
select @{n="Size";e={[math]::Round($_.Size/1GB,2)}} |
FT -HideTableHeaders -AutoSize
$computerE = Get-WmiObject -Class Win32_LogicalDisk -Filter "DeviceID= 'E:'" -ComputerName $Computer |
select @{n="Size";e={[math]::Round($_.Size/1GB,2)}} |
FT -HideTableHeaders -AutoSize
echo $computer,$computerC,$computerD,$computerE,$computerSystemRam,$computerCPU,$computerCPUCores
}
我的输出是
PC17 99.9 12 537.11 15.98 Intel(R) Xeon(R) CPU E5-2630 0 @ 2.30GHz 12我需要的是将此输出作为逗号分隔值,如下所示
PC17,99.9,12,537.11,15.98,Intel(R) Xeon(R) CPU E5-2630 0 @ 2.30GHz,12以便我可以在 Excel 中打开它。请让我知道这里的问题是什么?或任何其他替代解决方案,以便将输出作为 .csv。
【问题讨论】:
-
不需要回显。只需使用 "$computer,$computerC,$computerD,$computerE,$computerSystemRam,$computerCPU,$computerCPUCores"
-
如果您想将其转换为
.csv文件,也不要使用 FT (Format-Table)。 -
最后(
ForEach之后)使用ConvertTo-Csv