2017-03-04 74 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) 
} 

}