大小文件夹returns 0
The size folder returns 0
我有脚本:
$array = @("c:")
foreach ($z in $array)
{
$FileSystemObject = New-Object -com Scripting.FileSystemObject
$folders = (Get-Childitem $z | ? {$_.Attributes -eq "Directory"})
foreach ($folder in $folders)
{
Write-Host "Counting for..." "$folder "
$FileSystemObject.GetFolder($folder.FullName).Size/1GB
}
}
结果,我得到这样的结果:
计数...程序 0,0629891464486718
计数... Pictures_temp 1,2558867437765
计数...温度 13,7048118021339
计数... Windows 0
我不知道为什么我没有得到“Program Files”或“Users”文件夹,例如(权限问题?我有管理员权限)。以及为什么 Windows returns 0。我想,系统文件夹的处理方式不同。但是有什么办法可以解决吗?
我的一些网络文件夹也发生了同样的事情,我得到了错误的数据。
我确实得到了与此一致的结果。请注意,如果拒绝访问子项目,它会输出错误。 运行 作为管理员或处理 $error 以正确丢弃它们。
$array = @("c:")
foreach ($z in $array)
{ Get-Childitem $z | Where-Object { $_.PSIsContainer } | ForEach-Object {
Write-Host " for..." "$_"
((Get-ChildItem $_.FullName -Recurse | Measure-Object -Property Length -Sum -ErrorAction SilentlyContinue).Sum)/1Gb
}
}
或者,尊重初始脚本
$array = @("c:")
foreach ($z in $array)
{ $folders = (Get-Childitem $z | Where-Object { $_.PSIsContainer })
$folders | ForEach-Object {
Write-Host " for..." "$_"
((Get-ChildItem $_.FullName -Recurse | Measure-Object -Property Length -Sum -ErrorAction SilentlyContinue).Sum)/1Gb
}
Clear-variable -name folders -ErrorAction SilentlyContinue
}
@user10722100 我可以再请教您一个提示吗?我的脚本更大。我展示了较短的版本,因为我认为它会更容易。但现在我在实施你的版本时遇到了问题:)
$array = @("C:")
foreach ($z in $array)
{
Write-Host "[$((get-date).ToString("yyyy-MM-dd__HH-mm-ss"))] Counting for" $z "..."
echo '<pre>'
$FileSystemObject = New-Object -com Scripting.FileSystemObject
$folders = (Get-Childitem $z -Directory)
foreach ($folder in $folders)
{
$folder | Add-Member -MemberType NoteProperty -Name "SizeGB" –Value(($FileSystemObject.GetFolder($folder.FullName).Size) / 1GB)
}
$folders | sort -Property SizeGB -Descending | where {$_.SizeGB -gt 1} | select fullname,@{n=’Size in GB’;e={[math]::Round($_.SizeGB,2)}} | Format-Table -AutoSize
echo '</pre>'
$totalSize = (($folders | Measure-Object 'SizeGB' -Sum).Sum)
$totalsizeform="{0:N2}" -f $totalSize
echo "Total size for "
echo '<b>'
echo $z
echo '<font color="green">'
$varia2=": " + $totalsizeform + " GB"
Echo $varia2
echo '</b><br>'
echo '<hr />'
’’
echo '</font>'
$suma=$suma+$totalSize
$sumasum="{0:N2}" -f $suma
}
您删除了 $folders 和 SizeGB,但我不知道如何更改它以使其正常工作:-)
我有脚本:
$array = @("c:")
foreach ($z in $array)
{
$FileSystemObject = New-Object -com Scripting.FileSystemObject
$folders = (Get-Childitem $z | ? {$_.Attributes -eq "Directory"})
foreach ($folder in $folders)
{
Write-Host "Counting for..." "$folder "
$FileSystemObject.GetFolder($folder.FullName).Size/1GB
}
}
结果,我得到这样的结果:
计数...程序 0,0629891464486718
计数... Pictures_temp 1,2558867437765
计数...温度 13,7048118021339
计数... Windows 0
我不知道为什么我没有得到“Program Files”或“Users”文件夹,例如(权限问题?我有管理员权限)。以及为什么 Windows returns 0。我想,系统文件夹的处理方式不同。但是有什么办法可以解决吗? 我的一些网络文件夹也发生了同样的事情,我得到了错误的数据。
我确实得到了与此一致的结果。请注意,如果拒绝访问子项目,它会输出错误。 运行 作为管理员或处理 $error 以正确丢弃它们。
$array = @("c:")
foreach ($z in $array)
{ Get-Childitem $z | Where-Object { $_.PSIsContainer } | ForEach-Object {
Write-Host " for..." "$_"
((Get-ChildItem $_.FullName -Recurse | Measure-Object -Property Length -Sum -ErrorAction SilentlyContinue).Sum)/1Gb
}
}
或者,尊重初始脚本
$array = @("c:")
foreach ($z in $array)
{ $folders = (Get-Childitem $z | Where-Object { $_.PSIsContainer })
$folders | ForEach-Object {
Write-Host " for..." "$_"
((Get-ChildItem $_.FullName -Recurse | Measure-Object -Property Length -Sum -ErrorAction SilentlyContinue).Sum)/1Gb
}
Clear-variable -name folders -ErrorAction SilentlyContinue
}
@user10722100 我可以再请教您一个提示吗?我的脚本更大。我展示了较短的版本,因为我认为它会更容易。但现在我在实施你的版本时遇到了问题:)
$array = @("C:")
foreach ($z in $array)
{
Write-Host "[$((get-date).ToString("yyyy-MM-dd__HH-mm-ss"))] Counting for" $z "..."
echo '<pre>'
$FileSystemObject = New-Object -com Scripting.FileSystemObject
$folders = (Get-Childitem $z -Directory)
foreach ($folder in $folders)
{
$folder | Add-Member -MemberType NoteProperty -Name "SizeGB" –Value(($FileSystemObject.GetFolder($folder.FullName).Size) / 1GB)
}
$folders | sort -Property SizeGB -Descending | where {$_.SizeGB -gt 1} | select fullname,@{n=’Size in GB’;e={[math]::Round($_.SizeGB,2)}} | Format-Table -AutoSize
echo '</pre>'
$totalSize = (($folders | Measure-Object 'SizeGB' -Sum).Sum)
$totalsizeform="{0:N2}" -f $totalSize
echo "Total size for "
echo '<b>'
echo $z
echo '<font color="green">'
$varia2=": " + $totalsizeform + " GB"
Echo $varia2
echo '</b><br>'
echo '<hr />'
’’
echo '</font>'
$suma=$suma+$totalSize
$sumasum="{0:N2}" -f $suma
}
您删除了 $folders 和 SizeGB,但我不知道如何更改它以使其正常工作:-)