文件未从远程服务器删除

时间:2015-01-25 03:54:35

标签: powershell

我使用此论坛上的帖子编写了以下脚本。该脚本将删除超过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
  }
}

脚本执行正常,但没有文件被删除。

2 个答案:

答案 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或更高版本。