我对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
答案 0 :(得分:1)
你所拥有的是哈希表。您需要引用该哈希表中的项目以获得它的值。而不是:
Write-Host $dirSize
尝试:
$dirSize['DirectorySize']