2009-03-10 11 views
18

क्या वैकल्पिक क्रेडेंशियल्स के साथ नेटवर्क शेयरों तक पहुंचने का कोई अच्छा तरीका है (क्रेडेंशियल्स जिनके साथ वीबीएस स्क्रिप्ट चल रहा है)? पुष्टि करते हैं कि दूरस्थ फ़ाइलें की एक जोड़ी मौजूद हैं, और अन्य (दोनों दूरस्थ) के ऊपर एक फ़ाइल की प्रतिलिपि,वीबीस्क्रिप्ट के भीतर से नेटवर्क शेयर एक्सेस करें जैसे फाइलसिस्टम ऑब्जेक्ट

  1. प्रोग्राम के रूप में एक दूरस्थ शेयर फ़ाइल संरचना नेविगेट क्रम में:

    इरादा दो कार्य करने के लिए है

  2. एक स्थानीय ड्राइव से प्रतिलिपि फ़ाइलों को एक दूरस्थ ड्राइव (वैकल्पिक पहचान के साथ पहुँचा)

जहां तक ​​मेरा एफएसओ (Scripting.FileSystemObject) बता सकते हैं करने के लिए (स्थानीय नाम/अनुमति के साथ पहुँचा) तस्वीर से बाहर है , क्योंकि यह हमेशा चलता है इसका उपयोग करने वाले आवेदन के प्रमाण-पत्रों के साथ - जो स्थानीय मशीन उपयोगकर्ता होगा। (?)

बैच फ़ाइल तैयार करने के लिए googling के दौरान एकमात्र व्यावहारिक प्रतीत होता है (या "cmd.exe" तक विस्तारित कॉल) जो रिमोट शेयर क्रेडेंशियल्स प्रदान करने के लिए "नेट यूज" का उपयोग करता है, और फिर उसी कमांड-शैल "सत्र" के भीतर से फ़ाइलों को रोबोकॉपी या जैसे की प्रतिलिपि बनाता है। यह स्थानीय ड्राइव से रिमोट शेयर तक फ़ाइलों की प्रतिलिपि बनाने/तैनात करने के लिए ठीक काम करेगा, लेकिन इस तरह से फ़ाइल सिस्टम ब्राउज़िंग (जैसे आप एफएसओ के साथ करेंगे) करने के लिए यह बहुत ही जटिल और भंगुर होगा।

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

क्या कोई भी किसी भी तरह से जानता है, या एक व्यवहार्य विकल्प के बारे में पता है? (विंडोज 2000 मशीन पर वीबीस्क्रिप्ट/डब्लूस्क्रिप्ट से चिपके हुए - कोई पावरशेल नहीं!)

उत्तर

31

ठीक है, मैं एक गलत धारणा के तहत श्रम कर रहा था - कि एफएसओ "नेट उपयोग" (या Wscript "के साथ स्थापित नेटवर्क प्रमाण-पत्र" उठाएगा "नहीं होगा। नेटवर्क "MapNetworkDrive")।

ऐसा लगता है कि यह होता है, और निम्न नमूना कोड (अस्थायी नेटवर्क ड्राइव स्थापित करने के लिए की जरूरत के बिना) बहुत अच्छी तरह से काम करता है:

ServerShare = "\\192.168.3.56\d$" 
UserName = "domain\username" 
Password = "password" 

Set NetworkObject = CreateObject("WScript.Network") 
Set FSO = CreateObject("Scripting.FileSystemObject") 

NetworkObject.MapNetworkDrive "", ServerShare, False, UserName, Password 

Set Directory = FSO.GetFolder(ServerShare) 
For Each FileName In Directory.Files 
    WScript.Echo FileName.Name 
Next 

Set FileName = Nothing 
Set Directory = Nothing 
Set FSO = Nothing 

NetworkObject.RemoveNetworkDrive ServerShare, True, False 

Set ShellObject = Nothing 
Set NetworkObject = Nothing 
+0

बहुत उपयोगी है, धन्यवाद – Zsolti

+0

जनरल अलग: दूसरे दिन मैं भर में आया था एक और सवाल जो "नेट यूईई" के साथ एक ही मुद्दे को सीधे संबोधित करता है: http://stackoverflow.com/questions/3716422/how-can-i-map-a-network-drive-without-hardcoding-a-drive-letter- के रूप में एक बैच फ़ाइल – Tao

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