首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >写作进展状况

写作进展状况
EN

Stack Overflow用户
提问于 2013-10-23 21:06:49
回答 1查看 1.1K关注 0票数 0

我有一个NTFS审核脚本,并希望添加一个基本的进度条。目前,我有一个函数,我调用它和普通函数一样,用$i = 100表示我的最大百分比。我通过

Get-ChildItem -Path $pathToFolders -Recurse -Force | ?{ $_.PSIsContainer } | % {$counter++}

若要获得文件夹总数,请将我的$i除以该数字,以获得每次评估文件夹时我需要增加进度条的%增量。问题是,当脚本完成时,它是否只填充了进度栏,达到了40%-50%?我是不是漏掉了什么显而易见的东西?

请参阅我的代码(首先请注意$j = 0 ):

代码语言:javascript
复制
# 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
}
}
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2013-10-23 21:23:39

Powershell的Write-Progress需要从0到100之间的数字来表示进度。您在这里编码的是一个从0到100的数字,但这个数字表示已处理的文件夹数(可能是5、50或2000),而不是百分比。

下面是你可能需要做的事情:

代码语言:javascript
复制
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++
}

本部分特别:

代码语言:javascript
复制
-PercentComplete ([int](($j / $Folders.Count) * 100))

这将正确计算百分比,假设每次循环时都会增加$j

票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/19552283

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档