0

比較オブジェクトを介して 2 つのサンバの場所を比較するスクリプトを作成しています。

スピードアップするために、スレッドを介して各場所をスクリプトブロックに渡し、そこでオブジェクトを作成したいと思います。その後、スクリプト ブロックからの出力をオブジェクトとして、Compare-Object コマンドレットで使用したいと考えています。

私がソファを持っているもの:

$nas_smb_share =  "\\nas\loc\"
$cs_dest ="\\dest2\loc"


$check_hash = {
Param($loc)

$fso = (dir $loc -Recurse | Where-object{(!$_.psiscontainer) -AND ($_.LastWriteTime -gt (Get-Date).AddHours(-20))} | get-hash -Algorithm MD5)

return $fso
 }


$compare_loc =@($nas_smb_share, $cs_dest)



foreach ($check in $compare_loc) 
{
$running = @(Get-Job | Where-Object { $_.State -eq 'Running' })
if ($running.Count -le 3) 
{
   $j = Start-Job -ScriptBlock $check_hash -ArgumentList $check -Name $check

} else 
{
     $running | Wait-Job
}
Get-Job | Receive-Job  
$test = Receive-Job -Name $nas_smb_share -Keep
$test2 = Receive-Job -Name $cs_dest -Keep

}
Get-Job | Wait-Job | Receive-Job 

そのため、これをどこかに追加する必要があります。

 (Compare-Object -ReferenceObject $fso -DifferenceObject $fsoBU -Property hash -PassThru).Path | %{if ($_.SideIndicator -eq "=>" ){$result = ("$($_.InputObject)")}}

(dir $cs_dest -Recurse  | Where-Object {(!$_.psiscontainer)} | get-hash -Algorithm MD5 | ? {$_.hashstring -match $result})

しかし、test と test2 の結果はハッシュテーブル (だと思いますか?) であり、オブジェクトではありません。

私がどこで間違ったのか、またはどうすれば別の方法でそれを行うことができるかについて、任意の入力をいただければ幸いです

4

1 に答える 1