我正在编写一个 PowerShell 脚本来收集计算机的一些数据。我快完成了,但我不知道如何获取计算机上所有磁盘的大小。我知道如何用几个 If 语句来完成它,但我希望它自动检测驱动器,而不是如果连接了新磁盘我必须编写一个新的 If 语句。我想要的输出如下:“A:,250GB”。 “A:”位有效,但磁盘大小位无效。
这是我使用和调整过的代码,但无济于事:
$Drives = Get-WmiObject Win32_logicaldisk| ?{$_.DriveType -eq 3} | ForEach-Object {$_.name}
ForEach ($Drivename in $Drives) {
$Drivenames = Get-WMIObject -Query "Select * From win32_logicaldisk Where DriveType = '3'" -computer localhost | Select-Object DeviceID
$Drive = [Math]::Round($Drivenames.Size / 1GB)
"$Drivenames,", $Drive | Out-File "C:\HDS\HDS_DRIVES.csv" -Append
}
此外,[Math]::Round($Drivenames.Size/1GB)
抛出一个错误:
Method invocation failed because [System.Object[]] does not contain a method named 'op_Division'"
最佳答案
您可以将 Calculated Property 与 Select-Object
一起使用以使其变得更加简单:
Get-WmiObject Win32_logicaldisk| ? {$_.DriveType -eq 3} |
Select-Object @{N="DeviceId";E={$_.DeviceId}},`
@{N="VolumeName";E={$_.VolumeName}},`
@{N="Size";E={[Math]::Round($_.Size / 1GB)}} |
Out-File "C:\HDS\HDS_DRIVES.csv" -Append
请注意,您不需要像示例中那样调用 Get-WmiObject
两次。
关于windows - 如何获取 Windows 中的每个磁盘并过滤 DeviceType,然后在其旁边添加磁盘的大小,以逗号分隔?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51653682/