与Powershell IDE相比,Powershell.exe中的结果不同

时间:2019-02-28 15:27:14

标签: powershell ide difference

知道为什么会这样吗?我正在尝试构建一个包含我想要的所有信息的字符串(最终将在GUI中的DataGridView单元中输出),在Powershell.exe中,媒体类型和healthstatus显示为代码(3,4,0 ),而不是IDE中显示的字符串(HDD,SSD,OK):

两者的代码完全相同:

$DisquesPhysiques = invoke-command -ComputerName XXXX -ScriptBlock {get-physicaldisk}

foreach ($disque in $DisquesPhysiques) {
$infodisque = $($disque.FriendlyName) + " - " + $($disque.SerialNumber)+ " - "  + $($disque.MediaType)+ " - "  + $($disque.HealthStatus)+ " - "  + $([math]::Round($disque.Size/1gb))  + " GB"
$infodisque
}

enter image description here

WEIRDEST部分有时不显示代码,而是显示实际单词(SDD,HDD,健康)。这是非常有问题的,因为我不能一直依靠它作为数字或单词!

1 个答案:

答案 0 :(得分:0)

这很奇怪,所以我最终从CIM(WMI)获取信息,并在媒体类型(4为SDD)上做一个IF:

$DisquesPhysiques = Get-CimInstance -ComputerName $poste MSFT_PhysicalDisk -Namespace Root\Microsoft\Windows\Storage

                foreach ($disque in $DisquesPhysiques)
                {
                    if ($disque.MediaType -eq 4) { $type = "SSD" }
                    else { $type = "HDD" }
                    $infodisque = $($disque.FriendlyName) + " - " + $($disque.SerialNumber) + " - " + $type + " - " + $([math]::Round($disque.Size/1gb)) + " GB"
                    $tableInfoPoste.Rows.add("Disque physique", $infodisque)
                }
相关问题