在PowerShell中添加属性

时间:2017-03-04 05:06:36

标签: powershell

我想添加C盘属性(空闲和已用空间)以获得总大小。

Get-PSDrive C | Select-Object -Property Free,Used

这显示了驱动器C的空闲和已用空间。我可以使用自定义属性将其转换为GB,但不确定如何将这些属性添加到一起。任何帮助将不胜感激。谢谢!

3 个答案:

答案 0 :(得分:4)

如果您想要有关硬盘驱动器分区的完整信息,那么PSDrive不是最适合使用的对象,请改用Volume cmdlet:

(Get-Volume -DriveLetter C).Size

Get-Volume -DriveLetter C | Select-Object Size

PSDrive是PowerShell中的一种抽象,用于以类似的方式处理各种类型的对象。

答案 1 :(得分:4)

 $computerHDDs= Get-WmiObject Win32_LogicalDisk  -Filter "DeviceID='C:'"

 $logicalDisks = @()
foreach($item in $computerHDDs)
{
    $logicalDisk =[ordered]@{
    Name=$item.DeviceID -replace ':' ,'';
    DiskSize = "{0:N2}" -f ($item.Size/1GB) + " GB" ;
    }
 $logicalDisks +=$logicalDisk
 }

 $logicalDisks

即使在 psdrive 中,如果你能够获得免费和使用,那么两者的总和应该给你总大小

在您的情况下,您可以这样做

 $hdd= Get-PSDrive C | Select-Object -Property Free,Used
$total= (($hdd.free + $hdd.Used)/1GB).ToString() + " GB"
$total

注意:如果只想获取值,请删除tostring方法和GB部分。仅使用第一部分

对于所有驱动器,您可以这样使用:

Get-PSDrive -PSProvider filesystem | select Name, @{n= 'Used(GB)' ; e = {"{0:N2}" -f ($_.used/1GB)}}, @{n= 'Free (GB)' ; e = {"{0:N2}" -f ($_.Free/1GB)}}, @{n= 'Total(GB)' ; e = {"{0:N2}" -f (($_.used + $_.Free)/1GB)}} | Format-Table -AutoSize

答案 2 :(得分:0)

#solution 1 with new column into select
Get-Volume -DriveLetter C| 
select @{n= 'Used' ; e = {"{0:N2}" -f (($_.Size - $_.SizeRemaining)/1GB)}}, @{n= 'Free' ; e = {"{0:N2}" -f ($_.SizeRemaining/1GB)}}, @{n= 'Total' ; e = {"{0:N2}" -f ($_.Size/1GB)}}

#solution 2 with foreach
Get-Volume -DriveLetter C| foreach {
[pscustomobject]@{
Used="{0:N2}" -f (($_.Size - $_.SizeRemaining)/1GB)
Free="{0:N2}" -f ($_.SizeRemaining/1GB)
Total="{0:N2}" -f ($_.Size/1GB)
}

}