我正在尝试创建一个脚本,该脚本将文件夹路径作为参数,并显示带有文件夹路径的分区的完整程度(0-100%)。
在Linux中,我知道df -T $directory
命令,但我在powershell中找不到任何方法。有什么提示吗?
答案 0 :(得分:2)
您可以使用以下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