Powershell 磁盘信息

Powershell 磁盘信息

我正在编写一个 powershell 脚本,用于打印来自 AD OU 的计算机的磁盘信息。我的函数如下所示:

function Get-DiskInfo {
    $disk = Get-WMIObject Win32_Logicaldisk -ComputerName $computer |
            Select DeviceID,
            @{Name="SizeGB";Expression={$_.Size/1GB -as [int]}},
            @{Name="FreeGB";Expression={[math]::Round($_.Freespace/1GB,2)}}
            Write-Host $Computer "Disks: "$disk

如果我在单台计算机上运行 Get-WMIObject,我会得到以下输出:

DeviceID SizeGB FreeGB
-------- ------ ------
C:          953 757,08

但是如果我在多台计算机上运行该功能,打印输出如下所示:

Disks:  @{DeviceID=C:; SizeGB=214; FreeGB=21,83} @{DeviceID=D:; SizeGB=932; FreeGB=740,09} @{DeviceID=E:; SizeGB=0; FreeGB=0}

我对 powershell 还很陌生,所以我应该做些什么不同的事情来让输出看起来更漂亮

整个脚本:https://gist.github.com/ErkkaKorpi/f1b10a62ac79763fa38082b6c25e8f1b

答案1

问题是,通过使用这个输出:

Write-Host $Computer "Disks: "$disk

PowerShell 创建对象的字符串解释$disk

如果将其更改为:

Write-Host $Computer
$disk

您获得了想要的输出。


为了进一步改善这一点:

function Get-DiskInfo {
    Get-WMIObject Win32_Logicaldisk -ComputerName $computer |
        Select @{Name="Computer";Expression={$computer}},
        DeviceID,
        @{Name="SizeGB";Expression={$_.Size/1GB -as [int]}},
        @{Name="FreeGB";Expression={[math]::Round($_.Freespace/1GB,2)}}
}

这将导致计算机名称成为数据的一部分:

Computer DeviceID SizeGB FreeGB
-------- -------- ------ ------
pc2542   C:          238  32,18
pc2542   P:          408  19,18
pc2542   U:         1475 293,41

这使得您可以使用进一步的 PowerShell cmdlet 来处理这些数据、排序、分组、计算等。

相关内容