Windows Server 2016中Get-Device等效PowerShell命令及磁盘插槽查询
嘿,针对你的问题,Windows Server 2016里并没有和Get-Device完全等效的原生PowerShell命令(这个命令是在Windows 10/Windows Server 2019及以后才引入的),不过我们可以用几个现成的PowerShell cmdlet和WMI/CIM类来实现你要的所有功能——不管是列出主板插槽及占用设备,还是排查所有连接的磁盘,都能轻松搞定。
一、列出主板插槽及对应占用设备
要获取主板上的PCIe插槽信息以及每个插槽的设备占用情况,我们可以借助Win32_PCIeSlot这个CIM类,搭配Win32_PnPEntity来关联设备名称:
基础插槽信息查询
先执行这条命令查看所有PCIe插槽的基本状态:
Get-CimInstance Win32_PCIeSlot | Select-Object Name, SlotType, CurrentDevice
输出里的CurrentDevice字段如果有值,代表该插槽已被设备占用,值是设备的ID;如果为空则说明插槽未使用。
关联设备名称的完整脚本
如果想要直接看到插槽对应的设备名称,可以用这个循环脚本:
$slots = Get-CimInstance Win32_PCIeSlot foreach ($slot in $slots) { if ($slot.CurrentDevice) { $device = Get-CimInstance Win32_PnPEntity -Filter "DeviceID='$($slot.CurrentDevice)'" [PSCustomObject]@{ 插槽名称 = $slot.Name 插槽类型 = $slot.SlotType 设备名称 = $device.Name 设备ID = $slot.CurrentDevice } } else { [PSCustomObject]@{ 插槽名称 = $slot.Name 插槽类型 = $slot.SlotType 设备名称 = "未占用" 设备ID = $null } } }
执行后会输出结构化的表格,清晰展示每个插槽的使用状态和对应设备。
二、排查所有已连接的磁盘(含直连、PCIe等)
Windows Server 2016原生提供了几个专门针对磁盘的cmdlet,完全可以覆盖你要的需求:
1. 快速查看所有磁盘基本信息
Get-Disk是最常用的命令,它能列出系统中所有磁盘(包括本地SATA、NVMe、SAS RAID卡挂载的磁盘、USB磁盘等),并且通过BusType字段可以区分连接类型:
Get-Disk | Select-Object Number, FriendlyName, BusType, Size
输出示例里的BusType会显示SATA、NVMe、SAS、USB等类型,轻松识别磁盘是直连还是通过PCIe插槽连接的(比如NVMe磁盘就是通过PCIe的)。
2. 关联磁盘与PCIe插槽信息
如果想要把磁盘和对应的PCIe插槽信息绑定,可以结合Get-PnpDevice命令,以NVMe磁盘为例:
Get-Disk | Where-Object BusType -eq 'NVMe' | ForEach-Object { $pnpDevice = Get-PnpDevice -InstanceId $($_.DevicePath) [PSCustomObject]@{ 磁盘编号 = $_.Number 磁盘名称 = $_.FriendlyName 连接类型 = $_.BusType 设备名称 = $pnpDevice.FriendlyName 插槽位置 = $pnpDevice.LocationInfo } }
这个脚本会输出NVMe磁盘对应的PCIe插槽位置等详细信息,方便你确认设备的物理连接位置。
3. RAID场景下查看物理磁盘
如果你的系统用了RAID阵列,Get-PhysicalDisk可以直接查看底层的物理磁盘信息:
Get-PhysicalDisk | Select-Object FriendlyName, MediaType, BusType, CanPool, Size
这个命令能帮你识别RAID组里的每个物理磁盘及其连接方式。
内容的提问来源于stack exchange,提问作者Nisha John

