我使用此论坛上的帖子编写了以下脚本。该脚本将删除超过15天的文件:
cls
$servers = Get-Content server.txt
$limit = (Get-Date).AddDays(-15)
$path = "E:\CheckDBOutput"
ForEach ($line in $servers)
{
Invoke-Command -cn $line -ScriptBlock {
Get-ChildItem -Path $path -Recurse -Force | Where-Object {
!$_.PSIsContainer -and $_.CreationTime -lt $limit
} | Remove-Item -Force
}
}
脚本执行正常,但没有文件被删除。
答案 0 :(得分:0)
正如评论中已经提到的,您需要传递要在scriptblock内使用的参数作为-ArgumentList
参数的参数:
$RemoveOldFiles = {
param(
[string]$path,
[datetime]$limit
)
Get-ChildItem -Path $path -Recurse -Force | Where-Object {
!$_.PSIsContainer -and $_.CreationTime -lt $limit
} | Remove-Item -Force
}
$servers = Get-Content server.txt
$limit = (Get-Date).AddDays(-15)
$path = "E:\CheckDBOutput"
ForEach ($line in $servers)
{
Invoke-Command -cn $line -ScriptBlock $RemoveOldFiles -ArgumentList $path,$limit
}
答案 1 :(得分:0)
PowerShell版本1.0中不存在Remove-Item - 确保目标服务器安装了v2.0或更高版本。