UnauthorizedAccessException mit Copy-Item auf remote fileserver
Ich versuche zu kopieren, etwa 10 Ordner mit jeweils ~3 KB .txt-Datei auf einem remote-Dateifreigabe mit einigen Sekunden Latenz. Ich bin mit Powershells Copy-Item
wie diese:
try
{
Copy-Item -Path $source -Destination $destination -Recurse -ErrorAction Stop
}
catch
{
Write-Error $_.Exception.ToString()
}
Den Benutzer der das Skript ausführt, muss lese -, schreib-und execute-Berechtigungen auf dem fileserver teilen und auf die lokale Quelle.
Bei der ersten Ausführung der Ziel-Ordner leer ist. Alles funktioniert einwandfrei.
Auf den zweiten ausführen, die Dateien und Ordner bereits vorhanden ist. Also vor dem ausführen des Codes oben habe ich zuerst eine Prüfung mit Test-Path
und falls der Ordner vorhanden ist ein löschen mit Remove-Item
wie diese:
try
{
if(Test-Path -Path $path -ErrorAction Stop)
{
Remove-Item -Recurse -Path $path -ErrorAction Stop
}
}
catch
{
Write-Error $_.Exception.ToString()
}
Sonst niemand bearbeitet diese Dateien. Jedoch, wenn das script ausgeführt wurde, ein dozent mal, einmal in eine Weile, für einen Grund ich nicht verstehen, ich bin plötzlich immer UnauthorizedAccessException Fehler für einige der Ordner beim kopieren. Der genaue Fehler ist:
System.UnauthorizedAccessException: Zugriff verweigert
---> System.ComponentModel.Win32Exception: Zugriff verweigert
in Microsoft.PowerShell.Befehle.FileSystemProvider.NativeDirectoryExists(String
Pfad) in
System.Management.Die Automatisierung.SessionStateInternal.IsItemContainer(CmdletProvider
providerInstance, String path, CmdletProviderContext Kontext
bitte beachten Sie: ich bin immer diese Fehler NACH dem löschen der alten Dateien auf dem entfernten fileserver hat compleated erfolgreich.
Du musst angemeldet sein, um einen Kommentar abzugeben.
Dies ist ein Jahre Alter Beitrag aber vielleicht kann man davon profitieren. Sie müssen nicht zu entfernen, vorher. Sie können einfach verwenden Sie
-Force
überschreiben Sie vorhandene Dateien.Masi, Powershell-copy-item-Funktion ist nicht wirklich so toll IMO. Warum nicht verwenden Sie robocopy/Powershell-hybrid hier?
Beispiel: