diskusage如何在powershell中使用

时间:2014-11-06 02:45:22

标签: powershell powershell-v2.0 sysinternals

我对powershell和编写脚本非常陌生,该脚本将转到Windows域中的每台计算机并获取用户配置文件的大小。我在下面尝试过一个PowerShell脚本

$profileDir = "\\$computerName\c$\users\userProfile"
$fullProfile = (Get-ChildItem $profileDir -recurse -force | Measure-Object -property length -sum)

但是在某些计算机上它会出现以下错误。问题似乎是配置文件中的某些目录路径较长且get-ChildItem失败

Get-ChildItem : The specified path, file name, or both are too long. The fully
qualified file name must be less than 260 characters, and the directory name mu
st be less than 248 characters.
At C:\scripts\powershell\profiles.ps1:56 char:30
+ $fullProfile = (Get-ChildItem <<<<  $profileDir -recurse -force | Measure-Obj
ect -property length -sum)
    + CategoryInfo          : ReadError: (\\computerName...nt.IE5\RQT4K4JU:St
   ring) [Get-ChildItem], PathTooLongException
    + FullyQualifiedErrorId : DirIOError,Microsoft.PowerShell.Commands.GetChil
   dItemCommand
##########################################################################################################################

此时我尝试使用来自SysInternals的du.exe(diskusage)工作正常,但我不知道如何将du的输出转换为变量。我的脚本在下面

$dirSize = .\du.exe -c c:\temp |convertFrom-csv | select-object DirectorySize
write-host $dirSize

输出

PS C:\scripts\powershell> .\profiles.ps1

@{DirectorySize=661531}

我想要的输出是什么

PS C:\scripts\powershell> .\profiles.ps1

661531

1 个答案:

答案 0 :(得分:1)

你所拥有的是哈希表。您需要引用该哈希表中的项目以获得它的值。而不是:

Write-Host $dirSize

尝试:

$dirSize['DirectorySize']