टास्क शेड्यूलर जॉब मैप्ड नेटवर्क ड्राइव तक क्यों नहीं पहुंच सकता है?


27

मेरे पास टास्क शेड्यूलर का काम है कि वह लोकल फाइलों को एक नेटवर्क शेयर के लिए रोबोकॉपी चलाए। मुझे नेटवर्क शेयर तक पहुंचने के लिए डोमेन क्रेडेंशियल्स का उपयोग करना होगा लेकिन स्थानीय कंप्यूटर डोमेन पर नहीं है, और नौकरी स्थानीय व्यवस्थापक के रूप में चलती है। यह समाधानअस्थायी रूप से मैपिंग और नेटवर्क शेयर को अनमैप करने के लिए काम करता है, लेकिन यह टास्क शेड्यूलर एक्शन कार्यों को देखने वाले किसी भी व्यक्ति के लिए सादे पाठ में उजागर मेरे पासवर्ड को छोड़ देता है। मैं नेटवर्क ड्राइव को सामान्य रूप से अर्ध-स्थायी आधार पर मैप करना पसंद करूंगा ताकि टास्क शेड्यूलर जॉब में सिर्फ रोबोकॉपी को चलाना पड़े और उपयुक्त ड्राइव लेटर को देखें। हालाँकि मुझे हमेशा त्रुटि मिलती है "सिस्टम निर्दिष्ट पथ नहीं ढूँढ सकता है।" टास्क शेड्यूलर से इसे चलाते समय रोबोकॉपी लॉग में, भले ही कमांड एक उन्नत कमांड प्रॉम्प्ट से ठीक काम करता है (नौकरी उच्चतम विशेषाधिकार के साथ चलाने के लिए निर्धारित है)। यह भी ध्यान दें कि मैंने एक उन्नत कमांड प्रॉम्प्ट से मैप किए गए ड्राइव तक पहुंचने के लिए इस रजिस्ट्री को ट्वीक किया है ।

संपादित करें: स्पष्ट करने के लिए, स्थानीय व्यवस्थापक के रूप में लॉग इन किया, मैं प्रशासक के रूप में विंडोज एक्सप्लोरर लॉन्च करता हूं। मैं ड्राइव अक्षर Y के लिए नेटवर्क शेयर को मैप करता हूं। मैं कमांड प्रॉम्प्ट को व्यवस्थापक के रूप में लॉन्च करता हूं और चलाता हूं

C:\Windows\System32\Robocopy.exe C:\temp Y:\temp

ठीक काम करता है। मैं उच्चतम शेड्यूल के साथ उपयोगकर्ता लॉग इन है या नहीं, ठीक उसी कमांड को चलाने के लिए टास्क शेड्यूलर जॉब बनाता हूं। मैं इसे चलाता हूं और एक त्रुटि प्राप्त करता हूं। मैं एक लॉग को लिखता हूं और मिलता हूं

ERROR 3 (0x00000003) Getting File System Type of Destination Y:\temp\
The system cannot find the path specified.

के बाद

ERROR 3 (0x00000003) Creating Destination Directory Y:\temp\
The system cannot find the path specified.

क्या आपके स्थानीय पथ या नेटवर्क पथ में रिक्त स्थान हैं? यदि हां, तो क्या आप मार्ग के आरंभ और अंत में दोहरे उद्धरण चिह्नों के साथ मार्ग का विस्तार कर रहे हैं?
सूर्य

@SunWKim किसी भी पथ में रिक्त स्थान नहीं है।
क्रेग डब्ल्यू

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

क्या यह आपके उपयोगकर्ता या सिर्फ "एक व्यवस्थापक" के रूप में चल रहा है। यदि यह आपका उपयोगकर्ता है, तो क्या ड्राइव आपके उपयोगकर्ता के लिए लगातार मैप की जाती है?
निक

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

जवाबों:


17

मैप किए गए ड्राइव एक उपयोगकर्ता इंटरफ़ेस अवधारणा हैं और इस तरह के पृष्ठभूमि कार्यों के लिए उपलब्ध नहीं हैं। यूएनसी के माध्यम से लक्ष्य तक पहुंचें और सुनिश्चित करें कि कार्य के रूप में चलने वाले उपयोगकर्ता के पास लक्ष्य तक पहुंच है।


संभव नहीं। कंप्यूटर डोमेन पर नहीं है, इसलिए मुझे गैर-डोमेन उपयोगकर्ता के रूप में कार्य चलाना होगा लेकिन केवल डोमेन उपयोगकर्ताओं के पास नेटवर्क शेयर तक पहुंच है।
क्रेग डब्ल्यू

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

7

मेरे मामले में मुझे बस इतना करना था कि वे run with highest privilegesध्वज को अनचेक करें, लेकिन उसी उपयोगकर्ता के कार्य को चलाने के लिए, जिस उपयोगकर्ता ने ड्राइव को मैप किया था।


यह मेरे लिए था। समझ में आता है।
टॉम ह्व्स

4

प्रयोग करके देखें:

pushd \\machine\share

अपने निर्धारित कार्य की एक बैच फ़ाइल के भीतर। नेटवर्क साझा ड्राइव केवल उपयोगकर्ता द्वारा चलाए जाने वाले वातावरण से उपलब्ध हैं। "पुशड" इसे स्क्रिप्ट के संदर्भ में चलाने की अनुमति देगा।

जब आपका उपयोग हो जाए:

popd \\machine\share

ड्राइव को अनमैप करने के लिए।

संदर्भ: https://blog.adrianbanks.co.uk/windows/2007/03/08/accessing-network-file-shares-from-a-command-prompt.html


1

एक अन्य विकल्प केवल पूर्ण नेटवर्क पथ का उपयोग करना है, क्योंकि रोबोकॉपी उनका समर्थन करता है। यानी रोबोकॉपी c: \ temp \\ server \ share \ temp

या बेहतर अभी तक, सर्वर पर ही बैकअप चलाएं। केवल बैकअप प्रक्रिया के लिए एक डोमेन एडमिन अकाउंट बनाएं। रोबोकॉपी को एक टेक्स्ट फ़ाइल से पासवर्ड खिलाएं जिसे केवल डोमेन व्यवस्थापक ही एक्सेस कर सकते हैं।

कई साल पहले मैंने कई .cmd स्क्रिप्ट बनाईं, जो नेटवर्क पर हर सिस्टम के लिए आवश्यक फाइलों का बैकअप देती हैं। एकमात्र बाहरी प्रोग्राम जो मैंने उपयोग किया था वह था Cgywin's Grep कमांड, और एक कमांड प्रॉम्प्ट smtp मेल प्रेषक।

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

एक अन्य स्क्रिप्ट सभी व्यक्तिगत बैकअप कॉन्फ़िगरेशन फ़ाइलों को पार्स करेगी और उस सिस्टम पर बैकअप चलाने के लिए एक कार्य शेड्यूल करेगी। यह रोजाना 12:01 बजे चलाया जाता था।

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

उपयोगकर्ता अपनी बैकअप फ़ाइलों को पढ़ सकते हैं, लेकिन बैकअप को हटा नहीं सकते। इसने संभव असंतुष्ट कर्मचारी से नुकसान से कुछ सुरक्षा प्रदान की।

संभवतया कुछ और अधिक सुरुचिपूर्ण .vbs या शक्तियां बनाई जा सकती थीं, लेकिन मैं वास्तव में एक प्रोग्रामर नहीं हूं। मेरी प्रोग्रामिंग कक्षाओं में कोबाल और जेसीएल शामिल थे। मुझे याद है कि जब मैंने छोड़ा था तब मैंने लिपियों को कॉपी किया था, लेकिन कौन जानता है कि वे अब कहां हैं।


1

मैंने "उपयोगकर्ता लॉग ऑन है या नहीं" "केवल तभी चलाएं जब उपयोगकर्ता लॉग ऑन हो" विकल्प को बदलकर समस्या पर काबू पा लिया। यह कोशिश करो यह आपकी मदद कर सकता है।


1
echo Get-Date >> c:\mount_nfs_log.txt
net use X: \\share\folder password /user:domain\user>> c:\mount_nfs_log.txt 2>&1

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


यह मेरे लिए मुद्दा तय! स्क्रिप्ट के चमत्कार से पहले निष्पादित करने के लिए प्रमाणीकरण के साथ लॉगिन करने के लिए यह कमांड होना! यह कुछ मजबूत के साथ "दर्पण उपयोगकर्ता खातों" होने के सिरदर्द को हल करता है।
सुचलैकाना

1
पहली बार मैंने स्टैक ओवरफ्लो पर किसी की मदद की है, खुशी है कि मैं मदद कर सकता हूं। इसके अलावा, जो मैंने पहले किया था, उसके बजाय "इको गेट-डेट" का उपयोग करें।
रयान मैकग्राथ

मुझे लॉगिंग की आवश्यकता नहीं थी, इसलिए मैंने अभी-अभी cmd /c net useकार्य में कॉपी जॉब प्रविष्टि से पहले एक नौकरी प्रविष्टि जोड़ी और उसने मेरा मुद्दा ठीक कर दिया। आपकी पोस्ट चार घंटे के बाद पहली बार आईना खातों का सुझाव देती है जिसने एक आसान समाधान प्रदान किया। अच्छा काम करते रहें!
त्सकलेका

आप अभी भी इस स्क्रिप्ट के साथ यूएनसी रास्तों को बनाए हुए हैं, ताकि आप जानते हैं। सिर्फ इसलिए कि आप एक ड्राइव लेटर को UNC पथ पर असाइन कर रहे हैं और फिर उस ड्राइव लेटर का जिक्र करते हैं, फिर भी आपको \\ServerName\ShareNameइस प्रकार के तर्क को बनाए रखना होगा । इसके अतिरिक्त, यह जरूरी नहीं है कि NET USEबैच के माध्यम से रन के रूप में पावरस्ले के साथ-साथ सिस्टम खाते के रूप में टास्क शेड्यूलर के साथ शेड्यूलिंग के रूप में, आप यह कर सकते हैं कि आप किस प्रकार की स्क्रिप्ट, तर्क, आदि की परवाह किए बिना टास्क के माध्यम से चलाने के लिए शेड्यूल करते हैं। समयबद्धक।
दलाल रस आईटी

इसके अलावा बस स्पष्ट करने के लिए, कृपया ध्यान दें कि आप भी NET USE \\<ServerName>\<ShareName> <password> /user:<domain>\<username>बस उसी तरह का उपयोग कर सकते हैं और एक ड्राइव पत्र को बिल्कुल भी निर्दिष्ट नहीं करना होगा यदि वास्तविक प्रमाणीकरण पत्र के बजाय केवल शेयर के लिए प्रमाणीकरण की आवश्यकता है।
पिंप जूस आईटी

0

"प्रारंभ" स्थान को "c: \" में बदलने का प्रयास करें। यह मेरे लिए इसे ठीक करने के लिए लग रहा था इसलिए शायद सिस्टम cmd.exe को डिफ़ॉल्ट \ windows \ system32 \ से एक सुरक्षा सुविधा के रूप में निष्पादित करने से रोक रहा था।


0

मैं एक ही मुद्दे का उपयोग करने की कोशिश कर रहा था r: /xxxfilename.txt एक विंडोज़ मैप्ड ड्राइव r: \ server \ share के साथ जब विंडोज टास्क शेड्यूलर से स्क्रिप्ट बुला रहा हो।

मैंने //server/share/xxxfilename.txt का उपयोग करके हल किया है।
कृपया बैक स्लैश को फ़ॉरवर्ड स्लैश में बदल दें।
अब मेरी bash cygwin स्क्रिप्ट विंडोज़ टास्क शेड्यूलर और cygwin शेल में चलती है।
नोट: " नेट उपयोग " कमांड शेल में मैप ड्राइव तक पहुंच सकता है लेकिन अनुपलब्ध आर दिखाता है: जब मैं इस कमांड को विंडोज टास्क शेड्यूलर में चलाता हूं।


सुपर उपयोगकर्ता में आपका स्वागत है! कृपया प्रश्न को फिर से ध्यान से पढ़ें। आपका उत्तर मूल प्रश्न का उत्तर नहीं देता है । ओपी सिग्विन या बैश का उपयोग करने का कोई उल्लेख नहीं करता है।
DavidPostill

0

जैसा कि एक अन्य उपयोगकर्ता ने कहा, "उपयोगकर्ता लॉग ऑन है या नहीं" का विकल्प सेट करने के लिए "केवल तभी चलाएं जब उपयोगकर्ता लॉग ऑन हो" काम करने लगता है। तब आप मैप किए गए पथ (जैसे Z :) या सर्वर पथ (जैसे \\ ServerName \ Path) का उपयोग कर सकते हैं।

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

इसके अलावा, इन दिनों, विंडोज बहुत सारे सेल्फ इनवाल्ड सिस्टम रिबूट करना पसंद करता है। इसलिए इस घोल का इस्तेमाल अपने जोखिम पर करें।


0

यह भी ध्यान दें कि यदि आप स्क्रिप्ट में मैपिंग करते हैं और पासवर्ड में% है तो स्क्रिप्ट को कार्य करने वाले से काम करने के लिए %% लिखा जाना है लेकिन कमांडपॉम्प्ट से काम करने के लिए%


0

निम्न में से कोई भी कमांड का उपयोग कर सकता है, बैच स्क्रिप्ट में जोड़ा जा सकता है, dir पाने के लिए विंडोज़ शेड्यूल टास्क से बैच स्क्रिप्ट चलाने के लिए, विंडोज सिस्टम का उपयोग करके स्थानीय सिस्टम पर कॉपी की गई फ़ाइल; शुद्ध उपयोग Y: "\\ xxx \ xxx \ xxx cd / d Y: शुद्ध उपयोगकर्ता / d Y: / Y


-2

धन्यवाद, मुझे लगता है कि "स्टार्ट इन सी: \" का उपयोग करके मेरी समस्या का समाधान हो गया है, मैं इस समस्या की पुष्टि करने के लिए ट्रैक कर रहा हूं।

मैं एक ही मुद्दा रहा था, अगर मैं सीधे बैच पर क्लिक करता तो यह त्रुटिपूर्ण रूप से चलता था, लेकिन निर्धारित कार्य के तहत नहीं।


यह लेखक के सवाल का जवाब नहीं देता है। कृपया टिप्पणियों को उत्तर के रूप में न छोड़ें।
रामहुंड

कृपया उत्तर के रूप में "धन्यवाद" न जोड़ें। साइट में कुछ समय का निवेश करें और आप अपने पसंद के उत्तर को बढ़ाने के लिए पर्याप्त विशेषाधिकार प्राप्त करेंगे , जो आपको धन्यवाद कहने का सुपर उपयोगकर्ता तरीका है।
DavidPostill
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.