PowerShell DSC नेटवर्क शेयर से कॉपी करता है


17

मैं नेटवर्क साझा से फ़ोल्डर सामग्री की प्रतिलिपि बनाने के लिए PowerShell DSC का उपयोग करने का प्रयास कर रहा हूं। यहाँ कोड है:

Configuration TestSetup {
    Node localhost {
        File Test {
            SourcePath = "\\Server\SomeShare\SomeFolder"
            DestinationPath = "E:\test"
            Recurse = $true
            Type = "Directory"
        }
    }
}

हालांकि यह काम नहीं करता है - जब मैं इसे चलाता हूं तो मुझे निम्नलिखित त्रुटि संदेश मिलता है:

The related file/directory is: \\Server\SomeShare\SomeFolder.
The path cannot point to the root directory or to the root of a net share.
SourcePath must be specified if you want to configure the destination directory recursively. Make sure that SourcePath is a directory and that it is accessible.
    + CategoryInfo          : InvalidArgument: (:) [], CimException
    + FullyQualifiedErrorId : MI RESULT 4
    + PSComputerName        : localhost

The SendConfigurationApply function did not succeed.
    + CategoryInfo          : InvalidArgument: (root/Microsoft/...gurationManager:String) [], CimException
    + FullyQualifiedErrorId : MI RESULT 4
    + PSComputerName        : localhost

नेटवर्क शेयर से पैकेज स्थापित करने या नेटवर्क शेयर से एक संग्रह निकालने की कोशिश करने पर मुझे समान परिणाम मिलते हैं। मैं Windows Server 2008 R2 SP1 पर PowerShell 4 चला रहा हूं।

क्या नेटवर्क शेयरों के साथ पावरशेल डीएससी का उपयोग करने का कोई तरीका है?


क्या इस लिंक में वर्णित समाधान नहीं है? powershellmagazine.com/2013/09/02/…
ErikE

मुझे सही दिशा बताने के लिए धन्यवाद। यह मुझे वहां बिल्कुल नहीं मिला क्योंकि शेयर एक ही मशीन पर था और इसलिए मुझे सिस्टम खाते को अनुमति देनी पड़ी। यदि आप उस लिंक पर इंगित करने के लिए कोई उत्तर देना चाहते हैं, तो मैं आपको इनाम दूंगा।
रिचर्ड

जवाबों:


14

DSC स्थानीय कॉन्फ़िगरेशन प्रबंधक स्थानीय सिस्टम खाते के रूप में चलता है, आपके उपयोगकर्ता खाते के रूप में नहीं। इसलिए यह तब तक नेटवर्क संसाधनों का उपयोग नहीं कर पाएगा जब तक कि इसे स्पष्ट अनुमति न दी जाए।

दो संभावित स्थितियां हैं। या तो शेयर उसी मशीन पर है जिस तरह DSC कॉन्फ़िगरेशन को लागू किया जा रहा है (चलो इस मशीन को A कहते हैं) या शेयर एक अलग मशीन पर है (चलो इस मशीन को B कहते हैं)।

यदि शेयर मशीन A पर है, तो READ परमिशन सिस्टम यूजर को दी जानी चाहिए। उदाहरण के लिए:

net share SomeShare=C:\SomeShare /GRANT:"NT AUTHORITY\SYSTEM",READ

यदि शेयर मशीन B पर है, तो READ अनुमतियों को मशीन A के कंप्यूटर खाते को दिए जाने की आवश्यकता है। उदाहरण के लिए:

net share SomeShare=C:\SomeShare /GRANT:DOMAIN\MachineA$,READ

स्रोत: http://www.powershellmagazine.com/2013/09/02/copying-powershell-modules-and-custom-dsc-resources-using-dsc/


5

DSCपर रन localhostक्रम में विन्यास लागू करने के लिए। इसका मतलब है कि DSCसंसाधन फ़ाइलों को प्रत्येक मशीन को वितरित करने की आवश्यकता होती है जिसे माध्यम से कॉन्फ़िगर किया जाना है DSC

साझाकरण से DSC फ़ाइलों की प्रतिलिपि बनाते समय अनुमतियाँ प्रबंधन इसलिए महत्वपूर्ण है।

DSCNT AUTHORITY\SYSTEMखाते के नीचे चलाता है और जब तक Credentialविशेषता सेट नहीं की जाती है, तब Computer accountइसका उपयोग नेटवर्क साझा से फ़ाइलों को खींचते समय किया जाता है।

इसलिए और इस पर निर्भर करता है कि फाइलें कहां से खींची गई हैं, SYSTEMखाते readको एक स्थानीय शेयर पर अनुमति दी जानी चाहिए और दूरस्थ शेयर पर अनुमतियों की अनुमति Computer accountदी जानी चाहिए read

यह रिचर्ड्स के उत्तर में विस्तृत रूप से विस्तृत है, जो इस जानकारी के लिए मूल ब्लॉग स्रोत पर वाक्यविन्यास को विस्तारित करता है ।


0

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

TechNet ब्लॉग: Windows PowerShell वांछित राज्य कॉन्फ़िगरेशन में क्रेडेंशियल्स सुरक्षित करना चाहते हैं? - ट्रैविस प्लंक द्वारा


-2

पॉवर्सशेल लगभग पुराने सीएमडी शेल के रूप में गूंगा है। इसे अभी भी UNC रास्तों के लिए बहुत सीमित समर्थन प्राप्त है। इस बात को ध्यान में रखते हुए ... क्या आपने यूएनसी के रास्ते पर चलने की कोशिश की है? अर्थात

New-PSDrive -Name UNCPath -PSProvider FileSystem -Root \\Server\SomeShare\

और फिर के रूप में पथ को देखें UNCPath:\SomeFolderRemove-PSDriveजब आप पूरा कर लें तो सफाई करें ।

इसके अलावा, कभी-कभी आप FileSystem::\\Server\SomeShare\SomeFolderपथ के रूप में निर्दिष्ट कर सकते हैं । मैंने ऐसे मामले देखे हैं जहां यह काम नहीं करता है ... लेकिन यह एक शॉट के लायक है।


इस संदर्भ में (कॉन्फिग डेटा) FileSystem::\\Server\SomeShare\SomeFolderनिश्चित रूप से जाने का रास्ता है
मैथियास आर जेसेन

2
सुझावों के लिए धन्यवाद, लेकिन दुर्भाग्य से उनमें से किसी एक का उपयोग करके मुझे त्रुटि संदेश मिलता हैRelative path is not supported
रिचर्ड
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.