Powershell - 如何讓我的 PSCustomObject 顯示兩個輸出

凱爾·傑克·丹尼爾斯

我有以下腳本:

$DISKPhysical = Get-PhysicalDisk
$DiskErrors = Get-Disk | Get-StorageReliabilityCounter

    $DiskResults = [PSCustomObject]@{
    
        'Device ID' = $DISKPhysical.DeviceID
        'Model' = $DISKPhysical.Model
        'Serial Number' = $DISKPhysical.SerialNumber
        'Connector Type' = $DISKPhysical.BusType
        'Disk Type' = $DISKPhysical.MediaType
        'Health Status' = $DISKPhysical.HealthStatus
        'Size' = '{0:n0} GB' -f ($DISKPhysical.size/1GB)
        'PowerOnHours' = $DiskErrors.PowerOnHours
        'Read Errors' = $DiskErrors.ReadErrorsUncorrected
        'Wear' = $DiskErrors.Wear
        'Temperature' = $DiskErrors.Temperature
    }

$DiskResults | ConvertTo-JSON

如果只有 1 個“物理磁盤”,則當前返回信息。

{
    "Device ID":  "0",
    "Model":  "Micron_1100_MTFDDAK256TBN",
    "Serial Number":  "18301DD5EF41",
    "Connector Type":  "SATA",
    "Disk Type":  "SSD",
    "Health Status":  "Healthy",
    "Size":  "238 GB",
    "PowerOnHours":  895,
    "Read Errors":  0,
    "Wear":  0,
    "Temperature":  26
}

但是,當我有 2 個或更多物理磁盤(如 USB 記憶棒)時,出現以下錯誤:

Method invocation failed because [System.Object[]] does not contain a method named 'op_Division'.
At line:4 char:5
+     $DiskResults = [PSCustomObject]@{
+     ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
    + CategoryInfo          : InvalidOperation: (op_Division:String) [], RuntimeException
    + FullyQualifiedErrorId : MethodNotFound

我知道這是因為 PSCustomObject 只返回第一個值,我如何讓它返回多個設備,如下所示:

{
    "Device ID":  "0",
    "Model":  "Micron_1100_MTFDDAK256TBN",
    "Serial Number":  "123456789",
    "Connector Type":  "SATA",
    "Disk Type":  "SSD",
    "Health Status":  "Healthy",
    "Size":  "238 GB",
    "PowerOnHours":  895,
    "Read Errors":  0,
    "Wear":  0,
    "Temperature":  26
},
{
    "Device ID":  "1",
    "Model":  "Cruzer Edge",
    "Serial Number":  "123456789",
    "Connector Type":  "USB",
    "Disk Type":  "Unspecified",
    "Health Status":  "Healthy",
    "Size":  "30 GB",
    "PowerOnHours":  null,
    "Read Errors":  null,
    "Wear":  0,
    "Temperature":  0
}

提前致謝,凱爾

馬蒂亞斯·R·傑森

通過管道將輸出從Get-PhysicalDiskForEach-Object

$DiskResults = Get-PhysicalDisk |ForEach-Object {
    # Fetch operational details only for this disk
    $DiskErrors = Get-Disk -UniqueId $_.UniqueId | Get-StorageReliabilityCounter

    [PSCustomObject]@{
        'Device ID' = $_.DeviceID
        'Model' = $_.Model
        'Serial Number' = $_.SerialNumber
        'Connector Type' = $_.BusType
        'Disk Type' = $_.MediaType
        'Health Status' = $_.HealthStatus
        'Size' = '{0:n0} GB' -f ($_.size/1GB)
        'PowerOnHours' = $DiskErrors.PowerOnHours
        'Read Errors' = $DiskErrors.ReadErrorsUncorrected
        'Wear' = $DiskErrors.Wear
        'Temperature' = $DiskErrors.Temperature
    }
}

$DiskResults | ConvertTo-JSON

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

如何从arraylist动态创建pscustomobject?

来自pscustomobject的PowerShell变量定义

为什么仅添加一个PSCustomObject时PowerShell会将ArrayList转换为PSCustomObject?

如何使用变量访问Powershell PSCustomObject变量(来自JSON)

Powershell:PSCustomObject数组作为函数中的参数意外更改

Powershell将动态哈希表添加到pscustomobject

如何在 Powershell 中更改 PSCustomObject 的数组

在 Powershell 中从 PSCustomObject 检索元素

Powershell 在 pscustomobject 元素中添加顺序编号

如何讓 JavaScript 輸出顯示跨度樣式?

如何顯示和鏈接兩個sql表?

如何在同一個輸出中一起顯示多個圖 -python

如何在運行時在 powershell 腳本中顯示 xcopy 的輸出

如何以五個數字的行顯示輸出?

如何在 console.log 中顯示輸出?

Powershell 腳本 - 如何讓此腳本僅輸出與某個字符串匹配的值

如何顯示兩個反應組件

如何讓邏輯回歸曲線顯示在我的圖中

如何並排顯示卡片內的兩個div

嗨,我試圖讓用戶輸出顯示在單獨的行中。現在,輸出顯示在同一行中。請解釋我是新手

如何讓我的函數使用兩個輔助函數來返回所需的輸出?

在電子郵件中顯示 Powershell 變量和 foreach 輸出

Python - 將用戶輸入附加到同一個列表的兩個類,如何在循環中顯示其數據

我們可以在一個 ggplot 圖例中顯示兩個屬性嗎?

我可以讓一個 div 在 onclick 中淡出,但是我如何讓它淡出呢?

PowerShell - 如何迭代 PSCustomObject 嵌套对象?

PowerShell - JSON/PsCustomObject - 为什么我的数组被扁平化为一个对象?

Powershell Sort-Object PSCustomObject 与 Object[] 作为值

powershell 将 csv 值列表(PSCustomObject)转换为整数