2011-10-12 21 views
29

में अनुमति त्रुटियां मैं PowerShell में नया हूं। एक साधारण स्क्रिप्ट लिखने की कोशिश करते समय जो किसी फ़ोल्डर की सामग्री को हटा देता है और फिर उसे किसी भिन्न फ़ोल्डर से कॉपी की गई फ़ाइलों के साथ भरता है, तो मुझे हमेशा PermissionDenied त्रुटि मिलती है।PowerShell

विवरण:

+ remove-item <<<< D:\path\* -recurse 
    + CategoryInfo : PermissionDenied: (save.gif:FileInfo) [Remove-Item], IOException 
    + FullyQualifiedErrorId : RemoveFileSystemItemUnAuthorizedAccess,Microsoft.PowerShell.Commands.RemoveItemCommand 

समस्या कहां है? मैं एक्सप्लोरर के माध्यम से दोनों फ़ोल्डर्स में हेरफेर करने में सक्षम हूं। त्रुटि स्क्रिप्ट फ़ाइल से और खोल से चलने पर होती है (Windows PowerShell ISE का उपयोग करके)। आईएसई प्रक्रिया मेरे खाते के तहत चलती है। मैं विंडोज 7 पेशेवर चला रहा हूं और एक स्थानीय प्रशासक हूं।

संपादित करें: रिचर्ड के सुझाव के बाद, मैंने वर्बोज़ मोड (जिसे कोई प्रभाव नहीं पड़ा) की कोशिश की।

PS Z:\> $error[0] | fl * -force 

PSMessageDetails  : 
Exception    : System.IO.IOException: Not Enough permission to perform operation. 
TargetObject   : D:\path\file.txt 
CategoryInfo   : PermissionDenied: (D:\path\file.txt:FileInfo) [Remove-Item], IOException 
FullyQualifiedErrorId : RemoveFileSystemItemUnAuthorizedAccess,Microsoft.PowerShell.Commands.RemoveItemCommand 
ErrorDetails   : Cannot remove item D:\path\file.txt: Not Enough permission to perform operation. 
InvocationInfo  : System.Management.Automation.InvocationInfo 
PipelineIterationInfo : {0, 1} 

मुझे वहां बहुत अधिक उपयोग नहीं दिख रहा है (लेकिन वैसे भी सुझावों के लिए धन्यवाद)।

संपादित करें 2:

remove-item D:\path_A\* -recurse 
copy-item D:\path_B\* D:\path_A\ 

यह है कि: ठीक है, स्क्रिप्ट स्रोत है। निकालें-आइटम हर फाइल पर फेंकने लगता है।

+0

क्या आपको वास्तव में त्रुटियों में दस्तावेज के रूप में ** save.gif ** और ** file.txt ** फ़ाइलों को हटाने की अनुमति है? –

+0

हां, जब कंसोल काम नहीं करता था, तो मैंने पहली चीज मैन्युअल रूप से उन्हें हटाने की कोशिश की थी। (मैंने इसे शुरुआती पोस्ट में भी कहा था, लेकिन शायद मैं थोड़ा अस्पष्ट था। इसके बारे में क्षमा करें।) – ver

+0

क्या आप स्क्रिप्ट स्वयं ही प्रदान कर सकते हैं? – JPBlanc

उत्तर

9

यूएसी सक्षम किया गया है:

1

इस त्रुटि के बाद (और उस में उस बिंदु सबसे हाल ही में त्रुटि पर यह सोचते हैं):

$error[0] | fl * -force 

त्रुटि और अपवाद के विवरण का विस्तार होगा। इससे आपको और जानकारी मिलनी चाहिए।

करने के लिए एक और बात वर्बोज़ लॉगिंग

$VerbosePreference = "Continue" 

पर स्विच करने के लिए के बारे में विशेष रूप से अधिक जानकारी प्राप्त करने के लिए है कि क्या कार्रवाई की जा रही है जब त्रुटि होती है।

अंत में पावरशेल आईएसई में एक डीबगर शामिल है जो आपको अपनी स्क्रिप्ट के माध्यम से कदम उठाने की अनुमति देता है।

remove-item D:\path_A\* -recurse -force 
99

तुम कोशिश है? यदि ऐसा है तो अपने PowerShell सत्र को 'व्यवस्थापक' के रूप में चलाने का प्रयास करें। ऐसा लगता है कि आपको वस्तुओं को हटाने की अनुमति नहीं है।

हमारे पास बहुत ही सीमित सुरक्षा नीतियां हैं जहां मैं काम करता हूं और यूएसी से परिचित नहीं होने वाले उपयोगकर्ता हर समय जलाते हैं।

+39

+1 क्योंकि (भ्रामक रूप से) उचित पहुंच के साथ भी, अनुमतियाँ हटाई गई त्रुटियों को फेंक दिया जाता है यदि * केवल फाइलें पढ़ी जाती हैं * हटाई जाने वाली निर्देशिका में मौजूद है, जब तक बल निर्दिष्ट नहीं किया जाता है। – piers7

+4

+1। यह भी मेरे लिए काम किया। त्रुटि संदेश भ्रामक है। :-) –

+0

+1। उत्तर जेपीब्लैंक के उत्तर के लिए धन्यवाद और स्पष्टीकरण @ piers7 – Riscie

2

उपर्युक्त पदों में उल्लिखित कारणों के अलावा, मैंने देखा है कि फ़ाइल को एक अलग प्रक्रिया द्वारा एक्सेस किया जा रहा है जब "एक्सेस अस्वीकृत" त्रुटि फेंक दी गई है (मेरे मामले में, मुझे नाम बदलने से पहले सर्वर को रोकना पड़ा था- आइटम सफलतापूर्वक चलाया जा सकता है)।