Ich bin neu bei PowerShell und habe mich gefragt, ob mir jemand bei dem folgenden helfen kann, da ich keinen vorherigen Thread für diese Frage auf der Website finden konnte.PowerShell - Starten Sie rocopy nur, wenn alle Dienste gestoppt haben
Frage: Gibt es eine Möglichkeit, einen robocopy-Befehl zu schreiben, so dass er nur startet, wenn die Dienste in $ stopservices alle gestoppt haben? Unten ist, was ich habe, aber an einigen Punkten läuft der Dienst noch, wenn die Robocopy startet und dann Fehler für "Der Prozess kann nicht auf die Datei zugreifen, weil sie von einem anderen Prozess verwendet wird.".
<## Stop all services ##>
write-host `r`n "Stopping services on "$server `r`n
foreach ($service in $stopservices)
{
set-service $service -ComputerName $server -StartupType Disabled -Status Stopped -PassThru
}
<## Copy all files ##>
$robocopy = "{0} {1} {2} /XF {3} {4} {5} /XD {6} {7} /MIR /MT /TEE /LOG:{8}" -f $robocopy, $source, $destination, $logPath
Invoke-Expression $robocopy
Pause
Danke Richard! Das ist toll. Ich habe es ohne das Cmdlet Stop-Service versucht, aber die While-Schleife hinzugefügt. Aus irgendeinem Grund scheint es nach dem 5-Sekunden-Zeitraum nicht so, dass es zurückläuft, um zu versuchen, den anderen Dienst zu stoppen, der immer noch in $ stopservices läuft. – Mike