你知道为什么会发生这种事吗?我正在尝试构建一个包含我想要的所有信息的字符串(最后一个字符串将在图形用户界面中输出,在DataGridView单元格中),在Powershell.exe中,媒体类型和健康状态显示为代码(3,4,0),而不是字符串(硬盘,固态硬盘,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
}

最奇怪的是,有时它不会显示代码,而是显示实际的单词(SDD,HDD,Healthy)。这是非常有问题的,因为我不能相信它是一个数字或一个单词!
发布于 2019-03-01 00:07:15
这非常奇怪,所以我最终从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)
}https://stackoverflow.com/questions/54929077
复制相似问题