powershell - 列出域内远程计算机的硬盘信息

标签 powershell powershell-3.0

我正在尝试获取硬盘信息列表。目前我只想让列表显示每台计算机包含的硬盘型号。

我有下面的

Get-WMIObject win32_diskdrive -computer (Get-Content C:\Temp\DiskDrives\Computers.txt) | Select model | Export- CSV "C:\Temp\DiskDrives\Machines.csv" 

computers.txt 文件包含代码逐一经过的计算机列表。上面的工作在一定程度上会列出它可以为机器找到的驱动器,但 csv 文件的格式不太好。

能否将 csv 格式化为包含 txt 文件中的计算机名称?还只挑出硬盘而不是 usb、sd 设备等?

感谢任何想法/建议。

非常感谢, 克里斯

最佳答案

只需选择 SystemName 属性,您就会得到这样的结果。

Get-WMIObject win32_diskdrive -computer (Get-Content C:\Temp\DiskDrives\Computers.txt) | `
  Select SystemName,model 

>SystemName Model                              Size(GB)
---------- -----                              --------
BEHEMOTH   OCZ-VERTEX PLUS R2                       58
BEHEMOTH   JetFlash Transcend 32GB USB Device       29
BEHEMOTH   INTEL SSDSC2CT180A3                     168
BEHEMOTH   SAMSUNG HD103SJ                         932
BEHEMOTH   OCZ-VERTEX                               60
BEHEMOTH   ST3000DM001-1CH166                     2795
BEHEMOTH   OCZ-VERTEX PLUS R2                       58
BEHEMOTH   JetFlash Transcend 32GB USB Device       29
BEHEMOTH   INTEL SSDSC2CT180A3                     168
BEHEMOTH   SAMSUNG HD103SJ                         932
BEHEMOTH   OCZ-VERTEX                               60
BEHEMOTH   ST3000DM001-1CH166                     2795

一旦您对多台机器运行 WMI 查询,您也会获得 SystemName 参数,这使这变得很容易!

请注意,在我上面的结果中,我有一个名为 Transcend 的小驱动器,它是一个 32 GB USB 3 闪存驱动器。您提到只想包含固定磁盘,而不是 USB,因此我们只需添加一个 Where 语句,如下所示:

PS C:\> Get-WMIObject win32_diskdrive -ComputerName behemoth,localhost | 
Where-Object MediaType -eq 'Fixed hard disk media' | Select SystemName,Model

>SystemName Model               Size(GB)
---------- -----               --------
BEHEMOTH   OCZ-VERTEX PLUS R2        58
BEHEMOTH   INTEL SSDSC2CT180A3      168
BEHEMOTH   SAMSUNG HD103SJ          932
BEHEMOTH   OCZ-VERTEX                60
BEHEMOTH   ST3000DM001-1CH166      2795
BEHEMOTH   OCZ-VERTEX PLUS R2        58
BEHEMOTH   INTEL SSDSC2CT180A3      168
BEHEMOTH   SAMSUNG HD103SJ          932
BEHEMOTH   OCZ-VERTEX                60
BEHEMOTH   ST3000DM001-1CH166      2795

加分项,如果您想以 GB 为单位显示磁盘大小,请将您的 select 语句更改为此,它使用计算属性创建一个名为 Size(GB) 的新列,并用 $_.Size 填充它以整数(整数)形式除以 1GB 的属性:

Select SystemName,Model,@{Name='Size(GB)';Exp={$_.Size /1gb -as [int]}}`

完成一行

只需将您的 Export-CSV 添加到管道的末尾即可完成一个 - 像这样的类轮应该会给你你正在寻找的结果:

Get-WMIObject win32_diskdrive -computer (Get-Content C:\Temp\DiskDrives\Computers.txt) | 
Where-Object MediaType -eq 'Fixed hard disk media' | 
Select SystemName,Model,@{Name='Size(GB)';Exp={$_.Size /1gb -as [int]}} |
Export- CSV "C:\Temp\DiskDrives\Machines.csv" 

啊,PowerShell 的力量。

关于powershell - 列出域内远程计算机的硬盘信息,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29352300/

相关文章:

wmi - 如何将 NOT LIKE 与 Get-WmiObject Win32_Directory -filter 一起使用

arrays - PowerShell 结果数组重复输出

powershell - 功能中的switch语句

powershell - PowerShell 3 脚本会在 Windows 7 上运行吗?

powershell - 在 Powershell 中使用 if 语句移动文件

windows - 使用 New-PsDrive 时 Powershell 作业卡住

java - 在linux上编译运行HelloWorld.java

arrays - 如何在 Pester 中将两个数组与自定义对象进行比较

powershell - -ExpandProperty 不通过远程 PowerShell 显示所有属性

debugging - Powershell write-verbose 不创建输出变量 (-ov)