2016-10-27 2 views
0

У меня есть это для моего кода:Powershell код для перемещения файлов

Get-ChildItem -Path "LOCATION1" -Recurse | где-object {$ _. LastWriteTime -lt (get-date) .AddDays (-365)} | Перемещение-пункт -распределение "NewLocation1"

get-childitem -Path "Location2" -Recurse | где-object {$ _. LastWriteTime -lt (get-date) .AddDays (-365)} | Перемещение-пункт -распределение "NewLocation2"

get-childitem -Path "Location3" -Recurse | где-object {$ _. LastWriteTime -lt (get-date) .AddDays (-365)} | Перемещение-пункт -распределение "NewLocation3"

Реальный основной вопрос. Все ли функции powershell запускают каждую задачу отдельно? Будет ли переход из Location2 в NewLocation2 произойти после того, как переход в NewLocation1 завершится или все это запустится сразу?

ответ

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 
+0

Это много больше глубины, чем я узнайте о PowerShell. Вы должны будете объяснить свои ответы мне. – seanirishi

+0

В решении 1 я запускаю ваши команды в одной команде. В решении 2 я создаю массив объектов с свойством Location и destination, и я запускаю в качестве потока get-childitem для каждого объекта для запуска ваших решений в разделенных задачах;) – Esperento57

Смежные вопросы