2013-01-06 13 views
8

पर कॉपी-आइटम का उपयोग करके अनधिकृत एक्सेस अपवाद, मैं कुछ सेकंड विलंबता के साथ रिमोट फाइलशेयर पर ~ 3KB .txt फ़ाइल वाले 10 फ़ोल्डरों की प्रतिलिपि बनाने की कोशिश कर रहा हूं। मैं Powershells Copy-Item उपयोग कर रहा हूँ इस तरह:रिमोट फाइलसेवर

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

स्क्रिप्ट चलाने उपयोगकर्ता पढ़ा है, लिखने और fileserver शेयर पर और स्थानीय स्रोत पर अनुमतियों को निष्पादित करें।

पहले भाग पर, गंतव्य फ़ोल्डर खाली है। सब कुछ ठीक काम करता है। दूसरे रन पर, फ़ाइलें और फ़ोल्डर्स पहले से मौजूद हैं। तो कोड को चलाने से पहले ऊपर मैं पहली बार एक चेक Test-Path और मामले फ़ोल्डर एक Remove-Item इस तरह का उपयोग कर हटाना मौजूद है का उपयोग कर चलाएँ:

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

कोई भी अन्य व्यक्ति उन फ़ाइलों को संपादित करता है। हालांकि, स्क्रिप्ट को एक दर्जन बार चलाते समय, थोड़ी देर में, मुझे समझ में नहीं आता, मुझे अचानक अनधिकृत एक्सेस अपवाद कॉपी करने के दौरान कुछ फ़ोल्डर्स के लिए त्रुटियां मिल रही हैं। प्रणाली में (स्ट्रिंग पथ) पहुँच से मना कर Microsoft.PowerShell.Commands.FileSystemProvider.NativeDirectoryExists में : सटीक त्रुटि है:

System.UnauthorizedAccessException: पहुँच से मना कर ---> System.ComponentModel.Win32Exception। Management.Automation.SessionStateInternal.IsItemContainer (CmdletProvider providerInstance, स्ट्रिंग पथ, CmdletProviderContext संदर्भ

कृपया ध्यान दें: मैं रिमोट पर वर्ष फ़ाइलों के हटाए जाने के बाद उन त्रुटियों को मिल रहा है फाइलसेवर सफलतापूर्वक पूरा हो गया है।

उत्तर

-3

मासी, पावरहेल कॉपी-आइटम फ़ंक्शन वास्तव में वह महान आईएमओ नहीं है। यहां रोबोकॉपी/पावरहेल हाइब्रिड का उपयोग क्यों न करें?

उदाहरण:

$source = "C:\temp" 

$destination ="\\\RemoteServer\Temp" 

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

अच्छी तरह से हैं, क्योंकि यह एक अच्छा डिजाइन नहीं है। आप साधारण ऑब्जेक्ट ओरिएंटेड कोड को सरल टेक्स्ट उत्पादन आदेशों के साथ मिश्रित कर रहे हैं। त्रुटि प्रबंधन जैसे इस तरह के कई नुकसान हैं। cmdlets का उपयोग करने से ऑब्जेक्ट वापस आ जाएंगे जिन्हें मैं बाद में उपयोग कर सकता हूं। यह * पिंग * का उपयोग करने जैसा है जब आपको * टेस्ट-कनेक्शन * मिला। – masi