用于移动文件的Powershell代码

时间:2016-10-27 20:58:05

标签: powershell automation windows-server-2008-r2 devops

我的代码是:

get-childitem -Path“location1”-Recurse |     where-object {$ _。LastWriteTime -lt(get-date).AddDays(-365)} |     move-item -destination“NewLocation1”

get-childitem -Path“Location2”-Recurse |     where-object {$ _。LastWriteTime -lt(get-date).AddDays(-365)} |     move-item -destination“NewLocation2”

get-childitem -Path“Location3”-Recurse |     where-object {$ _。LastWriteTime -lt(get-date).AddDays(-365)} |     move-item -destination“NewLocation3”

真正的基本问题。 powershell是否同时运行每个任务?移动到NewLocation1后,从Location2到NewLocation2的移动是否会发生?或者所有这一切都会立即运行?

2 个答案:

答案 0 :(得分:0)

为什么不在一项任务中完成?像这样的东西

  [PSObject[]]$Myarray = New-Object PSObject -Property @{ Location="C:\temp"; Destination="C:\tmp4"}
  $Myarray += New-Object PSObject -Property @{ Location="C:\temp2"; Destination="C:\tmp5"}
  $Myarray += New-Object PSObject -Property @{ Location="C:\temp3"; Destination="C:\tmp6"}

  $Myarray | %{get-childitem -Path ($_.Location) -Recurse | where-object {$_.LastWriteTime -lt (get-date).AddDays(-365)} | move-item -destination $_.Destination -Force}

如果你想在多任务中运行,你可以这样做

  [PSObject[]]$Myarray = New-Object PSObject -Property @{ Location="C:\temp"; Destination="C:\tmp4"}
  $Myarray += New-Object PSObject -Property @{ Location="C:\temp2"; Destination="C:\tmp5"}
  $Myarray += New-Object PSObject -Property @{ Location="C:\temp3"; Destination="C:\tmp6"}

  $Myarray | %{Start-Job -ScriptBlock {get-childitem -Path ($_.Location) -Recurse | where-object {$_.LastWriteTime -lt (get-date).AddDays(-365)} | move-item -destination $_.Destination -Force}}

你可以看到像这样的状态

  Get-Job

答案 1 :(得分:0)

回答您真正的基本问题:每个任务将在您当前的脚本中按顺序运行。

要同时运行命令,一种选择是使用Start-Job