获取原始驱动器大小

时间:2017-11-20 20:01:36

标签: powershell powershell-v2.0 diskspace

我需要为服务器上的所有固定驱动器收集卷容量大小。我只能使用PowerShell 2,因为这是系统管理员在服务器上部署的内容。我可以使用Get-WmiObject Win32_Volume函数轻松获取格式化驱动器上的信息。

$ComputerName = "."
Get-WmiObject -ComputerName "$computername" Win32_Volume -Filter "DriveType=3" | foreach {
    New-Object PSObject -Property @{
        SystemName  = $_.SystemName
        UsageDate   = $((Get-Date).ToString("yyyy-MM-dd HH:mm:ss"))
        Label       = $_.Label
        VolumeName  = $_.Name
        FileSystem  = if ($_.FileSystem -eq $null) {"RAW"} else {$_.FileSystem}
        Size        = if ($_.FileSystem -eq $null) {
                          Show-Capacity
                      } else {
                          $([Math]::Round(($_.Capacity/1GB), 2))
                      }
        Free        = if ($_.FileSystem -eq $null) {
                          "0.00"
                      } else {
                          $([Math]::Round(($_.FreeSpace/1GB), 2))
                      }
        PercentFree = if ($_.Capacity -gt 0) {
                          $([Math]::Round((([float]$_.FreeSpace/[float]$_.Capacity) * 100), 2))
                      } else {
                          '0.00'
                      }
    }
}

Show-Capacity功能如下:

function Show-Capacity {
    $drive=$_.Name
    $dpscript = @"
Select Volume '$drive'
Detail Volume
"@

    $Temp= @()
    [array]$Temp += ,$dpscript | diskpart
    foreach ($line in $Temp) {
        if ($line.StartsWith("Volume Capacity") ) {
            $Values = $line.Split(":")
        }
    }
    $Capacity = $Values.Trim("G", "T", "M", "B", " ")
    $Capacity[1]
}

格式化的驱动器显示如下:

UsageDate   : 2017-11-09 08:08:17
SystemName  : MyServerName
Label       :
VolumeName  : C:\
Size        : 99.9
Free        : 77.04
PercentFree : 77.11

Raw Drives显示如下:

UsageDate   : 2017-11-09 08:08:15
SystemName  : MyServerName
Label       :
VolumeName  : I:\
Size        :
Free        : 0.00
PercentFree : 0.00

我希望Raw Drives以这种方式出现:

UsageDate   : 2017-11-09 08:08:15
SystemName  : MyServerName
Label       :
VolumeName  : I:\
Size        : 12000.0
Free        : 0.00
PercentFree : 0.00

在PowerShell日志中,我看到错误:"无法索引到空数组。在{path}:12 char 11.我也得到一个修剪错误,但这是一个较小的问题。我一直在研究这个问题并且阅读了很多帖子已经有大约2个星期了,并且还没有成功。

我尝试了这一帖子中列出的方法: https://blogs.technet.microsoft.com/heyscriptingguy/2013/08/30/automating-diskpart-with-windows-powershell-part-5/

这将始终在本地计算机上运行,​​但将导出为CSV并进行汇总。

0 个答案:

没有答案