我有一个NTFS审核脚本,并希望添加一个基本的进度条。目前,我有一个函数,我调用它和普通函数一样,用$i = 100表示我的最大百分比。我通过
Get-ChildItem -Path $pathToFolders -Recurse -Force | ?{ $_.PSIsContainer } | % {$counter++}
若要获得文件夹总数,请将我的$i除以该数字,以获得每次评估文件夹时我需要增加进度条的%增量。问题是,当脚本完成时,它是否只填充了进度栏,达到了40%-50%?我是不是漏掉了什么显而易见的东西?
请参阅我的代码(首先请注意$j = 0 ):
# Main
ForEach ($Folder in $Folders){
$ACLs = Get-ACL $Folder.FullName | % { $_.Access }
ForEach ($ACL in $ACLs){
$OutInfo = $Folder.Fullname + "," + $ACL.IdentityReference + "," + $ACL.AccessControlType + "," + $ACL.FileSystemRights + "," + $ACL.IsInherited + "," + $ACL.InheritanceFlags + "," + $ACL.PropagationFlags
Add-Content -Value $OutInfo -Path $outputCSV
}
Write-Progress -Activity "Auditing NTFS Permissions in ${$pathToFolders}..." -Status 'Progress ->' -PercentComplete $j
$j = $j + $i
}
}发布于 2013-10-23 21:23:39
Powershell的Write-Progress需要从0到100之间的数字来表示进度。您在这里编码的是一个从0到100的数字,但这个数字表示已处理的文件夹数(可能是5、50或2000),而不是百分比。
下面是你可能需要做的事情:
foreach ($Folder in $Folders)
{
$ACLs = Get-ACL $Folder.FullName | % { $_.Access }
foreach ($ACL in $ACLs)
{
$OutInfo = $Folder.Fullname + "," + $ACL.IdentityReference + "," + $ACL.AccessControlType + "," + $ACL.FileSystemRights + "," + $ACL.IsInherited + "," + $ACL.InheritanceFlags + "," + $ACL.PropagationFlags
Add-Content -Value $OutInfo -Path $outputCSV
}
Write-Progress -Activity "Auditing NTFS Permissions in ${$pathToFolders}..." -Status 'Progress ->' -PercentComplete (([int]($j / $Folders.Count)) * 100)
$j++
}本部分特别:
-PercentComplete ([int](($j / $Folders.Count) * 100))这将正确计算百分比,假设每次循环时都会增加$j。
https://stackoverflow.com/questions/19552283
复制相似问题