2016-10-27 8 views
0

私のコードにはこれがあります:ファイルを移動するPowershellコード

get-childitem -Path "location1" -Recurse | where-object {$ _。LastWriteTime -lt(取得日).AddDays(-365)} | move-item -destination "NewLocation1"

get-childitem -Path "Location2" -Recurse | where-object {$ _。LastWriteTime -lt(取得日).AddDays(-365)} | move-item -destination "NewLocation2"

get-childitem -Path "Location3" -Recurse | where-object {$ _。LastWriteTime -lt(取得日).AddDays(-365)} | move-item-destination "NewLocation3"

実際の基本的な質問です。 PowerShellは各タスクを別々に実行しますか? NewLocation1への移動が完了した後、またはLocationLay2からNewLocation2への移動は、一度に実行されるのでしょうか?

答えて

0

なぜ1つのタスクでそれをしないのですか?この

ような何か
[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}} 

を行うことができますが、その後何Iよりも深さの多くのです。この

Get-Job 
+0

のような状態を見ることができますPowerShellについて知っている。あなたは私の答えを説明しなければならないでしょう。 – seanirishi

+0

ソリューション1では、1つのコマンドでコマンドを実行します。ソリューション2では、私はLocationとdestinationプロパティを持つオブジェクトの配列を作成し、分割されたタスクでソリューションを実行するためにすべてのオブジェクトに対してget-childitemというスレッドとして実行します。 – Esperento57

関連する問題