我的代码是:
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的移动是否会发生?或者所有这一切都会立即运行?
答案 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。