首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >与Powershell IDE相比,Powershell.exe中的结果有所不同

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

Stack Overflow用户
提问于 2019-02-28 23:27:14
回答 1查看 34关注 0票数 1

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

两者的代码是完全相同的:

代码语言:javascript
复制
$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)。这是非常有问题的,因为我不能相信它是一个数字或一个单词!

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2019-03-01 00:07:15

这非常奇怪,所以我最终从CIM (WMI)获得了信息,并对媒体类型(4是SDD)做了一个IF:

代码语言:javascript
复制
$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)
                }
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/54929077

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档