Powershell.exe 与 Powershell IDE 的结果不同
Result different in Powershell.exe compared to Powershell IDE
知道为什么会这样吗?我正在尝试构建一个包含我想要的所有信息的字符串(最终是在 GUI 中的 DataGridView 单元格中输出),在 Powershell.exe 中,媒体类型和健康状况显示为代码 (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
}
最奇怪的部分是有时它不会显示代码,但会显示实际的单词(SDD、HDD、Healthy)。这是非常有问题的,因为我不能一直依赖它是一个数字或一个词!
这很奇怪,所以我最终从 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)
}
知道为什么会这样吗?我正在尝试构建一个包含我想要的所有信息的字符串(最终是在 GUI 中的 DataGridView 单元格中输出),在 Powershell.exe 中,媒体类型和健康状况显示为代码 (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
}
最奇怪的部分是有时它不会显示代码,但会显示实际的单词(SDD、HDD、Healthy)。这是非常有问题的,因为我不能一直依赖它是一个数字或一个词!
这很奇怪,所以我最终从 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)
}