Ich habe ein schnelles Skript geschrieben, um Dateidifferenzen zwischen Servern zu vergleichen und dann eine Aufforderung zu geben, ob die Änderungen gespiegelt werden sollen. Ich möchte, dass es intelligent NICHT zum Kopieren auffordert, wenn es keine Änderungen gibt.
Das Skript:
robocopy "$cSource" "$cDestination" /E /L /FP
$cDecision = Read-host "Continue = 1, anything else = Stop"
if ($cDecision -eq "1") {
robocopy "$cSource" "$cDestination" /MIR /FFT /Z /W:5 /MT:64 /XX /log:$cLogLocation
Invoke-item $cLogLocation
}
else { Write-host "Quit!" }
Ich möchte, dass Powershell nicht darum bittet, fortzufahren, wenn Robocopy 0 für Nichtübereinstimmung, Fehlgeschlagen, Extras und Kopiert meldet. Es ist nicht sehr wichtig für dieses spezielle Projekt, aber ich kann mir ein paar nützliche Verwendungszwecke für eine solche Überprüfung vorstellen. Vielen Dank!
quelle
Mir ist klar, dass dies ein älterer Thread ist, aber beachten Sie, dass dies auch mithilfe des von robocopy zurückgegebenen Exit-Codes erreicht werden kann, um festzustellen, ob Änderungen vorhanden sind (ein Wert von 0 zeigt an, dass keine Änderungen vorgenommen wurden). Es gibt zwei Möglichkeiten, dies zu tun:
Wenn Sie Start-Process verwenden, ist es wichtig, -PassThru zu verwenden, da sonst in $ RobocopyResult kein Wert festgelegt wird.
Weitere Exit-Codes finden Sie unter http://ss64.com/nt/robocopy-exit.html .
quelle
Hier ist mein Hack dazu. Mein Code liest die Protokolldatei und sucht nach den Zeilen, die den Zusammenfassungsfeldern entsprechen. Anschließend wird es in zwei Objekte analysiert, die die Statistiken für Dateien und Verzeichnisse enthalten:
quelle