From fb953c16b8f8fbb3dbb146f8fb3b8510e63eeb35 Mon Sep 17 00:00:00 2001 From: James Truher Date: Thu, 7 Jul 2016 11:20:17 -0700 Subject: [PATCH] fix for Get-PSDrive to get free and used space on Non-Windows systems --- .../engine/Types_Ps1Xml.generated.cs | 12 ++++++++++++ 1 file changed, 12 insertions(+) diff --git a/src/System.Management.Automation/engine/Types_Ps1Xml.generated.cs b/src/System.Management.Automation/engine/Types_Ps1Xml.generated.cs index 88fbb7b61..07d05eca6 100644 --- a/src/System.Management.Automation/engine/Types_Ps1Xml.generated.cs +++ b/src/System.Management.Automation/engine/Types_Ps1Xml.generated.cs @@ -52,18 +52,30 @@ namespace System.Management.Automation.Runspaces if($this.Provider.ImplementingType -eq [Microsoft.PowerShell.Commands.FileSystemProvider]) { + if ( ! $IsWindows ) { + $filesystem,$size,$used,$available,$UsePerc,$mount = /bin/df -B 1 | ?{ $_.split()[-1] -eq $this.Root } | %{ $_.split(' ',([stringsplitoptions]'RemoveEmptyEntries')) } + $used + } + else { $driveRoot = ([System.IO.DirectoryInfo] $this.Root).Name.Replace('\','') $drive = Get-CimInstance Win32_LogicalDisk -Filter ""DeviceId='$driveRoot'"" $drive.Size - $drive.FreeSpace + } }"), null)); td4.Members.Add("Free", new ScriptPropertyData(@"Free", GetScriptBlock(@"## Ensure that this is a FileSystem drive if($this.Provider.ImplementingType -eq [Microsoft.PowerShell.Commands.FileSystemProvider]) { + if ( ! $IsWindows ) { + $filesystem,$size,$used,$available,$UsePerc,$mount = /bin/df -B 1 | ?{ $_.split()[-1] -eq $this.Root } | %{ $_.split(' ',([stringsplitoptions]'RemoveEmptyEntries')) } + $available + } + else { $driveRoot = ([System.IO.DirectoryInfo] $this.Root).Root.Name.Replace('\','') $drive = Get-CimInstance Win32_LogicalDisk -Filter ""DeviceId='$driveRoot'"" $drive.FreeSpace + } }"), null)); yield return td4;