我正在尝试创建一个脚本,该脚本以folderpath作为参数,并显示该Folderpath的分区有多完整(0-100%)。在Linux中,我知道该df -T $directory
命令,但是在powershell中找不到任何方法。有小费吗?
您可以使用以下Get-CIMINstance调用来近似df -T的输出,该调用在WMI / CIM中查询您所请求的信息。由于我不是Linux专家,所以我不确定是什么使它df -t
成为特殊命令。如果此输出不能满足您的需求,您可以提供更多信息吗?
Get-CimInstance Win32_logicaldisk | Select-Object SystemName,@{Name=‘Drive Letter‘;Expression={$_.DeviceID}},
@{Name=‘Drive Label’;Expression={$_.VolumeName}},`
@{Name=‘Size(MB)’;Expression={[int]($_.Size / 1MB)}},`
@{Name=‘FreeSpace%’;Expression={[math]::Round($_.FreeSpace / $_.Size,2)*100}} | ft
> SystemName Drive Letter Drive Label Size(MB) FreeSpace%
---------- ------------ ----------- -------- ----------
BEHEMOTH B: Aug 01 2014 172 0
BEHEMOTH C: 171353 10
BEHEMOTH D: Media 953867 20
BEHEMOTH E: Big Betty 2861459 88
BEHEMOTH H: VM 117726 37
BEHEMOTH T: 250 94
更新
好的,我使用下面的代码创建了一个名为df的函数。您可以为目录提供-t以获得该特定分区的统计信息。否则,如果不带参数运行,它将为我们提供当前磁盘的磁盘统计信息。
Function df {
Param
(
# Param1 help description
[Parameter(ValueFromPipeline=$true,
ValueFromPipelineByPropertyName=$true,
Position=0)]
[Alias("t")]
$directory = (get-item (get-location)))
if ($PSBoundParameters.Count -ne 0){$directory = dget-item $directory}
$root = $directory.Root.Name -replace '\\','%'
Get-CimInstance Win32_logicaldisk -Filter ("DeviceID like '$root%'")| Select-Object SystemName,@{Name=‘Drive Letter‘;Expression={$_.DeviceID}},
@{Name=‘Drive Label’;Expression={$_.VolumeName}},`
@{Name=‘Size(MB)’;Expression={"{0:N0}" -f [int]($_.Size / 1MB)}},`
@{Name=‘FreeSpace%’;Expression={[math]::Round($_.FreeSpace / $_.Size,2)*100}} | ft
}
df -t .\SampleDir
>SystemName Drive Letter Drive Label Size(MB) FreeSpace%
---------- ------------ ----------- -------- ----------
DELLBOOK C: OSDisk 243,247 39
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句