Ele*_*ios 1 powershell powershell-cmdlet
这是我第一次使用Clear-RecycleBincmdlet,很明显,这个 cmdlet 绘制了一个典型的命令行进度条,我认为它应该从头到尾填充符号或颜色块,或者也许应该只打印进度条中间的百分比值,我不太清楚,因为正如我所说,这是我第一次使用此 cmdlet,但是,看到下面的图像,显然进度条输出是错误的。进度条完全是“静态”的,它不会填充进度条,它只是(一次)打印几个字符,并且不会继续打印更多字符,如下图所示:
我通过将数千个文件发送到回收站来多次测试 cmdlet,这样我就强制 cmdlet 花费时间(以分钟为单位)来完成回收操作,并且我注意到,经过多少时间并不重要此 cmdlet 正在运行,进度条输出始终相同。仅打印一定数量的“o”字符,并且它们是立即打印的,而不是渐进打印的。
我想也许这可能是某种输出编码问题,否则这个奇怪的进度条输出对我来说似乎无法解释......
我不确定出了什么问题。这是我运行此 cmdlet 的方式:
PowerShell.exe -command "[console]::WindowWidth=40; [console]::WindowHeight=6; [console]::BufferWidth=[console]::WindowWidth; Clear-RecycleBin -DriveLetter 'C' -Force -ErrorAction SilentlyContinue; Start-Sleep -Second 2"
Run Code Online (Sandbox Code Playgroud)
我的问题是:为什么我会得到这个输出以及如何修复它?
为什么我有这个输出以及如何修复它?
你之所以得到这个输出,是因为作者Clear-RecycleBin故意欺骗了你,而你实际上无法采取任何措施来修复它。
Clear-RecycleBin基本上执行以下操作:
shell32.dll!SHEmptyRecycleBin()调用SHEmptyRecycleBin()是阻塞调用(即,控制权只会在完成后返回给调用者),并且 cmdlet 确实无法将正在进行的进度转发回调用者,因为 中的进度 UI 与shell32.dll桌面 shell 紧密集成设计初衷,并不是真正设计用于在任何其他环境中使用或使用。
| 归档时间: |
|
| 查看次数: |
123 次 |
| 最近记录: |