文件夹分区的Powershell脚本

时间:2015-04-07 18:51:20

标签: powershell partition

我正在尝试创建一个脚本,该脚本将文件夹路径作为参数,并显示带有文件夹路径的分区的完整程度(0-100%)。 在Linux中,我知道df -T $directory命令,但我在powershell中找不到任何方法。有什么提示吗?

1 个答案:

答案 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