2013-01-06 26 views
8

Tôi đang cố gắng sao chép khoảng 10 thư mục mỗi tệp chứa một tệp .txt ~ 3KB vào một tệp từ xa với độ trễ giây. Tôi đang sử dụng Powershells Copy-Item như thế này:UnauthorizedAccessException sử dụng Copy-Item trên máy chủ tập tin từ xa

try 
{ 
    Copy-Item -Path $source -Destination $destination -Recurse -ErrorAction Stop 
} 
catch 
{ 
    Write-Error $_.Exception.ToString() 
} 

Người dùng đang chạy các kịch bản đã đọc, viết và thực hiện quyền trên phần fileserver và vào nguồn địa phương.

Khi chạy đầu tiên, thư mục đích trống. Mọi thứ đều hoạt động tốt. Trong lần chạy thứ hai, các tệp và thư mục đã tồn tại. Vì vậy, trước khi chạy đoạn mã trên tôi lần đầu tiên chạy một kiểm tra sử dụng Test-Path và trong trường hợp thư mục tồn tại một xóa bằng cách sử Remove-Item như thế này:

try 
{ 
    if(Test-Path -Path $path -ErrorAction Stop) 
    { 
     Remove-Item -Recurse -Path $path -ErrorAction Stop 
    } 
} 
catch 
{ 
    Write-Error $_.Exception.ToString() 
} 

Không ai khác chỉnh sửa các tập tin. Tuy nhiên, khi chạy kịch bản một lần dozent, một lần trong một thời gian, vì một lý do tôi không hiểu, tôi đột nhiên nhận được UnauthorizedAccessException lỗi cho một số thư mục trong khi sao chép. Các lỗi chính xác là:

System.UnauthorizedAccessException: access denied ---> System.ComponentModel.Win32Exception: access denied trong Microsoft.PowerShell.Commands.FileSystemProvider.NativeDirectoryExists (String đường dẫn) trong System. Management.Automation.SessionStateInternal.IsItemContainer (CmdletProvider providerInstance, string đường, CmdletProviderContext bối cảnh

xin lưu ý: tôi nhận được những lỗi SAU việc xóa các tập tin cũ trên điều khiển từ xa fileserver đã thành công.

Trả lời

-3

Masi, chức năng sao chép Powershell không thực sự là IMO tuyệt vời. Tại sao không sử dụng robocopy/Powershell hybrid ở đây?

Ví dụ:

$source = "C:\temp" 

$destination ="\\\RemoteServer\Temp" 

robocopy $source $destination /s /mt:8 
+2

tốt, đơn giản chỉ vì nó không phải là một thiết kế tốt. bạn đang trộn mã định hướng không đối tượng với các lệnh tạo văn bản đơn giản. Có nhiều nhược điểm trong việc xử lý lỗi này. sử dụng các lệnh ghép ngắn sẽ trả về các đối tượng mà sau đó tôi có thể sử dụng sau này. Nó giống như sử dụng * ping * khi bạn có * kết nối thử nghiệm *. – masi

Các vấn đề liên quan