Her biri bir ~ 3KB .txt dosyası içeren yaklaşık 10 klasörün birkaç saniye gecikme ile uzak bir dosya paylaşımına kopyalamaya çalışıyorum. Böyle Powershells Copy-Item
kullanıyorum: komut dosyası çalıştıranUnauthorizedAccessException Uzaktaki dosya sunucusundaki Copy-Item kullanılarak
try
{
Copy-Item -Path $source -Destination $destination -Recurse -ErrorAction Stop
}
catch
{
Write-Error $_.Exception.ToString()
}
kullanıcı okumuş, yazma ve dosyasunucusu paylaşımında ve yerel kaynağın izinlerini yürütün.
İlk çalıştırmada, hedef klasör boş. Her şey iyi çalışıyor. İkinci çalıştırmada, dosya ve klasörler zaten var. Yani kod çalıştırmadan önce ilk Test-Path
ve klasör bir böyle Remove-Item
kullanarak silmek var bu durumda kullanarak bir kontrol çalıştırmak yukarıda: başka
try
{
if(Test-Path -Path $path -ErrorAction Stop)
{
Remove-Item -Recurse -Path $path -ErrorAction Stop
}
}
catch
{
Write-Error $_.Exception.ToString()
}
kimse bu dosyaları düzenler. Ancak, komut dosyası çalıştırırken bir kez, bir kez, bir kez, anlamıyorum, kopyalama sırasında bazı klasörler için aniden UnauthorizedAccessException hataları alıyorum. Kesin hatadır:
System.UnauthorizedAccessException: erişim ---> System.ComponentModel.Win32Exception engellendi: Erişim Microsoft.PowerShell.Commands.FileSystemProvider.NativeDirectoryExists içinde yalanladı Sistemde (Dize yolu). Management.Automation.SessionStateInternal.IsItemContainer (CmdletProvider providerInstance, dize yol CmdletProviderContext bağlam
dikkat ediniz: Ben uzaktan kumandadaki eski dosyaların silinmesi SONRA bu hataları alıyorum fileserver başarıyla tamamlandı.
, iyi bir tasarım değil çünkü. Nesne yönelimli olmayan kodu basit metin üreten komutlarla karıştırıyorsunuz. Hata işleme gibi birçok dezavantaj vardır. cmdlet'leri kullanarak daha sonra kullanabileceğim nesneleri döndüreceğim. * Test bağlantısı * olduğunda * ping * kullanmak gibi. – masi