PowerShell新手疑问:删除文件循环结束后为何仍输出表格?
问题原因与解决方法
问题根源
你看到末尾额外输出表格,是因为代码里这一行:
$allFilesToDelete | Sort-Object -Property FullName -OutVariable allFilesToDelete
Sort-Object命令在使用-OutVariable保存结果的同时,依然会将排序后的对象输出到PowerShell默认输出流(控制台),这就是多余表格的来源。
解决方法
有两种简单的修复方式:
- 方式一:直接重新赋值变量
不需要依赖-OutVariable,直接把排序结果重新赋值给原变量,这样不会产生额外输出:$allFilesToDelete = $allFilesToDelete | Sort-Object -Property FullName - 方式二:抑制默认输出
如果坚持使用-OutVariable,在命令末尾加上| Out-Null,阻止结果流向控制台:$allFilesToDelete | Sort-Object -Property FullName -OutVariable allFilesToDelete | Out-Null
简单来说,PowerShell中大部分命令默认会把结果输出到管道,除非你通过变量赋值、Out-Null这类操作主动抑制输出。你原代码里的Sort-Object既存了变量又打印了结果,才导致出现多余表格。
内容的提问来源于stack exchange,提问作者crichavin
相关产品推荐
相关产品推荐

