如何使用 Powershell 识别磁盘 Optane 或 Raid 类型?

Posted

技术标签:

【中文标题】如何使用 Powershell 识别磁盘 Optane 或 Raid 类型?【英文标题】:How to identify the disk Optane or Raid type using Powershell? 【发布时间】:2020-05-22 04:14:03 【问题描述】:

我想确定磁盘信息是否包含 RAID 或 Optane。 是否可以使用 PowerShell 获取该信息? 我尝试了 Get-PhysiclDisk 和 Get-Disk,但不包括该信息。

任何建议,非常感谢!谢谢

【问题讨论】:

可能有一个 WMI 类,或者是内置的,或者由制造商的管理包提供。找出这些是题外话,因为它与编程无关。请改用ServerFault。 【参考方案1】:

Christopher Klein写了一个简单的脚本:

$dp = "list volume" | diskpart | ?  $_ -match "^  [^-]" 

echo `<`<`<local`>`>`>
foreach ($row in $dp) 
    # skip first line
    if (!$row.Contains("Volume ###")) 
        # best match RegExp from http://www.eventlogblog.com/blog/2012/02/how-to-make-the-windows-softwa.html
        if ($row -match "\s\s(Volume\s\d)\s+([A-Z])\s+(.*)\s\s(NTFS|FAT)\s+(Mirror|RAID-5|Stripe|Spiegel|Spiegelung|Übergreifend|Spanned)\s+(\d+)\s+(..)\s\s([A-Za-z]*\s?[A-Za-z]*)(\s\s)*.*")  
            $disk = $matches[2] 
            # 0 = OK, 1 = WARNING, 2 = CRITICAL
            $statusCode = 1
            $status = "WARNING"
            $text = "Could not parse line: $row"
            $line = $row

            if ($line -match "Fehlerfre |OK|Healthy") 
                $statusText = "is healthy"
                $statusCode = 0
                $status = "OK"
            
            elseif ($line -match "Rebuild") 
                $statusText = "is rebuilding"
                $statusCode = 1
            
            elseif ($line -match "Failed|At Risk|Fehlerhaf") 
                $statusText = "failed"
                $statusCode = 2
                $status = "CRITICAL"
            

            echo "$statusCode microsoft_software_raid - $status - Software RAID on disk $disk:\ $statusText"
        
    

注意: diskpart 需要管理权限,因此如果单独执行此脚本,则必须在管理帐户下执行。

希望对你有帮助。

【讨论】:

以上是关于如何使用 Powershell 识别磁盘 Optane 或 Raid 类型?的主要内容,如果未能解决你的问题,请参考以下文章

如何使用PowerShell获取物理磁盘的信息

如何编写 powershell 脚本来知道磁盘是基本的还是动态的?

Powershell:如何结合 2 个命令的输出将磁盘字母与磁盘 MediaType 相关联?

Powershell 无法识别Path Powershell 如何更新Path

Powershell 无法识别Path Powershell 如何更新Path

如何使用 PowerShell 处理数组以查找特定字符串?