我有一个 Powershell 脚本在夜间运行,以自动删除那些符合特定条件的文件。
我如何修改它来捕获选择删除的文件数量?
我使用的语句很简单,如果我能让它工作的话,Where-object cmdlet 将与我已有的语句很好地契合。
我想要修改的声明如下:
$path = [path to containing folder]
Get-ChildItem -Path $path -File | Where-Object { $_.LastWriteTime -lt (Get-Date).AddDays(-10) } | Remove-Item -Force
使用common
-OutVariable
(-ov
) 参数除了将cmdlet 的输出对象发送到管道之外,还可以将其捕获到变量中:注意:上述命令中的
-WhatIf
通用参数可预览操作。-WhatIf
一旦您确定操作将执行您想要的操作,请删除并重新执行。笔记:
虽然已过滤的文件被捕获到变量中
$files
,但请注意-OutVariable
参数只是files
,即没有符号$
。$files.Count
确定匹配文件的数量。-WhatIf
允许您在实际删除文件之前提前检查要删除的文件。另外,我在上面使用了简化的语法
Where-Object
。请注意,
-OutVariable
目标变量始终会接收一个集合(类型[System.Collections.ArrayList]
),即使只捕获一个输出对象或没有捕获任何输出对象。$files = ...
;请参阅GitHub 问题 #3154进行讨论。