文件夹分区的Powershell脚本

Powershell script for folder's partition

我正在尝试创建一个脚本,该脚本将文件夹路径作为参数并显示具有该文件夹路径的分区的完整程度 (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