我有一個問題,我試圖解決PowerShell腳本。我有兩臺服務器在不同的地理位置包含一些文件。問題是,這兩個地方的文件結構是不同的,網站之間的帶寬非常低。服務器1具有正確的結構,並且服務器2具有不正確的結構,但許多相同的文件。PowerShell比較對象,如何從兩個「方」返回對象?
例如,
服務器1路徑爲C:\ DATA \的Adobe \ Reader.exe 服務器2路徑爲C:\東西\ PDF閱讀器\ Acrobat中\ Reader.exe
我想要將服務器2的C:\ Stuff文件夾中的文件(僅複製相同的文件)複製到類似服務器1的結構中,以便在服務器2上將文件複製到C:\ Data,以便在互聯網上保存大量文件副本。
這是我到目前爲止有:
$oldsource = Get-ChildItem -recurse "\\server1\c$\Data"
$newsource = Get-ChildItem -recurse "\\server2\c$\Stuff"
Compare-Object -ReferenceObject $newsource -DifferenceObject $oldsource - Property Name,Length -ExcludeDifferent -IncludeEqual -PassThru |
Where-Object { $_.SideIndicator -eq '==' } |
foreach-object -process{
Write-Host $_.FullName
}
我還沒有進一步的進展,因爲我的命令只輸出一個比較的「半壁江山」,這取決於訂購-ReferenceObject和-DifferenceObject是。例如,在這個例子中,輸出將如下所示:
\\服務器2 \ C $ \東西\ PDF閱讀器\ Acrobat中\ Reader.exe
我需要爲同一項目的兩個路徑的輸出:
\\ server1的\ C $ \數據\的Adobe \ Reader.exe
\\服務器2 \ C $ \東西\ PDF閱讀器\ Acrobat中\ Reader.exe
我想返回兩個路徑對於server1和server2,我可以做一些字符串操作,並在sid上構建等效路徑E,但我無法弄清楚如何讓這兩個值回
任何幫助是極大的讚賞
您是否嘗試過任何類似-IncludeEqual的開關? –