2013-01-23 8 views
15

मैं, PowerShell के साथ काम कर रहा हूँ (मेरे कंसोल से) चल रही स्क्रिप्ट है कि इस लाइन में शामिल हैं:मैं PowerShell सुरक्षा और फ़ाइल पहुँच मुद्दों को समझने में सहायता की जरूरत है

:

$inpath = "C:\users\xxxxx\path\foo\bar" 

और मैं इस त्रुटि प्राप्त हो रही

Get-Content : Access to the path 'C:\users\xxxxx\path\foo\bar' is denied. 
At C:\users\xxxxx\path\foo\testscript.ps1:53 char:12 
+ Get-Content <<<< $txtfile | Get-WordCount -Exclude (Get-Content c:\temp\exclude.txt) | select -First 15 
    + CategoryInfo   : PermissionDenied: (C:\users\xxxxx\path\foo\bar:String) [Get-Content], UnauthorizedAcc 
    essException 
    + FullyQualifiedErrorId : GetContentReaderUnauthorizedAccessError,Microsoft.PowerShell.Commands.GetContentCommand 

स्क्रिप्ट और लक्ष्य फ़ाइलें सभी मेरे स्थानीय ड्राइव पर स्थित हैं। मैं एक्सप्लोरर में फ़ाइलों तक पहुंच सकता हूं, नोटपैड का उपयोग करके उन्हें देख/संपादित/सहेज सकता हूं, और आपके पास कोई अनुमति प्रतिबंध सेट नहीं है। जब मैं कमांड लाइन पर हूं, तो मैं अपने पथ में फ़ाइलों पर सफलतापूर्वक get-content cmdlet चला सकता हूं। मैं निर्देशिका PS C:> cd C:\users\xxxxx\path\foo\bar बदल सकता हूं और सफलतापूर्वक सूचीबद्ध कर सकता हूं कि वहां क्या है। और भी दिलचस्प, मैं स्क्रिप्ट में त्रुटि वाली रेखा को डुप्लिकेट कर सकता हूं, और कमांड लाइन पर कोई त्रुटि प्राप्त नहीं कर सकता।

PS C:\users\xxxxx\path\foo> $inpath = "C:\users\xxxxx\path\foo\bar" 
PS C:\users\xxxxx\path\foo> 

यह मैं संदेह है कि 'अनुमति अस्वीकृत' त्रुटि वास्तव में कुछ और ही है, या कुछ काफी अस्पष्ट है कि मैं कोई सुराग नहीं कैसे समस्या निवारण के साथ आगे बढ़ने के लिए मिल गया है है बनाता है। क्या पीएस के लिए उपयोगकर्ता के मुकाबले अलग-अलग अनुमतियां हो सकती हैं जिसके अंतर्गत यह चल रहा है? क्या किसी ने पहले इस व्यवहार को देखा है, और आपने समस्या को कैसे हल किया? मुझे यकीन है कि एक साधारण समाधान है जिसे मैं नहीं जानता।

+0

कैसे आप स्क्रिप्ट और क्या अनुमति के साथ चल रहे हैं? कार्य शेड्यूलर में नौकरी? यदि आप स्क्रिप्ट को कंसोल से कॉल करते हैं तो क्या स्क्रिप्ट काम करती है? –

+0

आप कौन सी फाइल पढ़ने की कोशिश कर रहे हैं? (यह एक फ़ोल्डर तक पहुंच बनाना पूरी तरह से संभव है लेकिन इसमें फाइलें नहीं हैं।) – Richard

+0

@Graimer - कंसोल से स्क्रिप्ट चल रही है; सुनिश्चित नहीं है कि स्क्रिप्ट की अनुमति क्या है, कैसे दिखें या उन्हें कैसे सेट करें यदि वे मेरे उपयोगकर्ता अनुमतियों से अलग हैं। यह कंसोल एएस ए एससीआरआईपीटी (उदाहरण के लिए, पीएस सी: \ foo>। \ Script.ps1) से काम नहीं करता है, लेकिन अगर मैं व्यक्तिगत लाइन को कंसोल प्रॉम्प्ट के रूप में टाइप करता हूं तो यह काम करता है। – dwwilson66

उत्तर

23
Get-Content : Access to the path 'C:\users\xxxxx\path\foo\bar' is denied. 
At C:\users\xxxxx\path\foo\testscript.ps1:53 char:12

वह पथ ऐसा नहीं लगता है कि यह एक फ़ाइल है लेकिन एक फ़ोल्डर है।

क्या आप वाकई फ़ाइल नाम को फ़ोल्डर में जोड़ रहे हैं और इसे Get-Content पर पास कर रहे हैं?

विंडोज़ एक्सेस को अस्वीकार करता है जब आप निर्देशिका को आज़माकर खोलते हैं जैसे कि यह अतिरिक्त झंडे के बिना फ़ाइल थी; और .NET उन झंडे को पास नहीं करता है (फ़ोल्डर खोलने के लिए कुछ विशिष्ट परिस्थितियां हैं, लेकिन वे यहां लागू नहीं होती हैं)।

+0

पर कमांड दर्ज करता हूं तो इसकी सामग्री पढ़ सकता है, आप कोरेंट हैं, '$ inpath' एक पथ है। स्क्रिप्ट पथ के साथ 'foreach' का उपयोग कर रहा है ...' foreach ($ inpath $ dopath {do-function}) $। मैंने इस कोड को एक पूर्व स्क्रिप्ट से पुनर्नवीनीकरण किया है जो पूरी तरह से काम करता है ... - dwwilson66 – dwwilson66

+0

@ dwwilson66: मैं एक चर के बारे में बात नहीं कर रहा हूं: * त्रुटि संदेश को देखें *, जिस पथ से यह पता चलता है वह मार्ग है 'प्राप्त करें -कंटेंट 'और खोला नहीं जा सका। – Richard

0
इसके बजाय इस बात का

: (अपनी टिप्पणी के अनुसार)

foreach ($doc in $inpath) { do-function } 

इस प्रयास करें:

foreach ($doc in (gci $inpath)) { do-function } 

आप अपने फ़ोल्डर आइटम के स्थान पर एक स्ट्रिंग वस्तु पर एक foreach कर रहे हैं।

3

फ़ाइल की सामग्री को प्राप्त करें सामग्री को प्राप्त करें। कृपया जोड़ें। नीचे दिए गए अपने फ़ोल्डर पथ के बाद

Get-Content "D:\Logs\*.*" | ?{($_|Select-String "test")} 

आप सभी फ़ोल्डर रास्ता माध्यम से जाने के तहत यह तो नीचे की तरह -recurse जोड़ने चाहते हैं:

Get-Content "D:\Logs\*.*" -Recurse | ?{($_|Select-String "test")} 
+0

गेट-सामग्री के लिए कोई-रिकर्स पैरामीटर नहीं है – dzampino

संबंधित मुद्दे