Powershell 编写进度函数,告知用户删除脚本的完成百分比

Powershell 编写进度函数,告知用户删除脚本的完成百分比,powershell,Powershell,我正在编写一个PowerShell脚本来删除各种文件,并希望编写一个函数来提示用户每次文件删除完成的百分比,以便用户不会认为脚本已崩溃。我宁愿让屏幕打印出一个百分比数字,比如完成10%,而不是像{000000…这样的进度条 #变量 $Comp_Name=$env:COMPUTERNAME $DateTime=获取日期-格式为“DMM-dd-yyyy\U THH-mm-ss” #日志错误 开始转录本-路径C:\TEMP\error\u Log-$Comp\u name-$DateTime.Log-

我正在编写一个PowerShell脚本来删除各种文件,并希望编写一个函数来提示用户每次文件删除完成的百分比,以便用户不会认为脚本已崩溃。我宁愿让屏幕打印出一个百分比数字,比如完成10%,而不是像{000000…这样的进度条

#变量
$Comp_Name=$env:COMPUTERNAME
$DateTime=获取日期-格式为“DMM-dd-yyyy\U THH-mm-ss”
#日志错误
开始转录本-路径C:\TEMP\error\u Log-$Comp\u name-$DateTime.Log-追加
#获取日期和时间并删除函数中指定的目录
函数删除目录
{
参数([string]$Location)
$files=Get ChildItem-Path$Location-Recurse | Where对象{!$\u.PSIsContainer}
对于($i=1;$i-lt$Files.count;$i++){
写入进度-活动“删除文件…”-状态$files[$i]。全名-完成百分比($i/($files.Count*100))
尝试
{
Get ChildItem$Location-Recurse-ErrorAction SilentlyContinue | Remove Item-Force-Recurse-ErrorAction SilentlyContinue-Verbose 4>&1 |添加内容C:\TEMP\ModifiedData-$Comp_Name-$DateTime.log
#写入输出“成功:$位置已成功修改”
}
Catch{Write Output“ERROR:$无法修改位置。请手动验证此位置。“}
}
}
#从计算机中删除以下文件
If($Comp_Name-eq“X”)
{
删除目录“C:\Users\X”
}
停止记录
写入输出“脚本过程完成。请检查日志以了解更多详细信息”

您可以使用其他状态指示器之一,而不是使用
-percentcomplete

-CurrentOperation“($i/($Files.Count*100))%complete”

您可能希望将百分比四舍五入或强制转换为整数,例如:

-CurrentOperation“$([int]($i/$Files.Count*100))%complete”

参数显示的顺序如下所示,因此根据您希望消息层次结构的显示方式使用哪一个参数

-Activity
-Status
-CurrentOperation

您可以使用其他状态指示器之一,而不是使用
-percentcomplete

-CurrentOperation“($i/($Files.Count*100))%complete”

您可能希望将百分比四舍五入或强制转换为整数,例如:

-CurrentOperation“$([int]($i/$Files.Count*100))%complete”

参数显示的顺序如下所示,因此根据您希望消息层次结构的显示方式使用哪一个参数

-Activity
-Status
-CurrentOperation

谢谢!我尝试了您之前建议的行,但我现在的问题是百分比始终保持在0%。解决了问题CurrentOperation的变量应为“$([int]($I/($Files.Count))*100)”谢谢!我尝试了您之前建议的行,但我现在的问题是百分比始终保持在0%。解决了问题CurrentOperation的变量应为“$([int]($I/($Files.Count))*100)”