2017-03-04 105 views
3

我想添加C驱动器属性(可用空间和已用空间)以获取总大小。在PowerShell中添加属性

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

这显示驱动器C的自由和已用空间,我能够使用自定义的属性将它们转换在GB但不知道如何将这些特性加在一起。任何帮助将不胜感激。谢谢!

+0

我很惊讶怎么会有如何获取驱动器的性能,包括的Get-这么多的在线内容WmiObject,但没有关于如何获得总大小的任何信息! –

+0

欢迎来到Stack Overflow。请查看[我如何撰写一个好问题](https://stackoverflow.com/help/how-to-ask),以获取有关使问题达到最大程度受众的建议。具体而言,我可能会建议修改您的标题以包含您的实际问题,并修改问题主体以包含预期结果。关于后者,你几乎在那里,但不清楚你是否试图显示两个值,执行数学运算并显示一个值,存储变量等。祝你好运! –

+0

@FissureKing:我可以知道哪部分问题不清楚吗?他明确提到他想将它们加在一起,因为他已经获得了自由并已经使用过空间。 –

回答

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 

注:如果你想只得到了价值,然后取出TOS tring方法和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 
+0

-f在{e = {“{0:N2}} -f($ _.used/1GB)}}' –

+0

@JeffS .:在Windows PowerShell中使用.NET来格式化数字 –

+0

通过链接了解更多关于此的信息[格式化技巧](https://technet.microsoft.com /en-us/library/ee692795.aspx) –

4

PSDrive来是不是,如果你想在一个硬盘分区的完整信息工作的最佳对象,使用音量的cmdlet来代替:

(Get-Volume -DriveLetter C).Size 

Get-Volume -DriveLetter C | Select-Object Size 

一个PSDrive来是一种抽象在PowerShell中以类似的方式处理各种类型的对象。

+0

谢谢!如果我没有给它添加属性,我会将它作为正确答案投票,因为它是最简单和最短的解决方案 –

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) 
} 

}