الوصول إلى مشاركة شبكة الاتصال من داخل VBScript على سبيل المثال FileSystemObject

StackOverflow https://stackoverflow.com/questions/631401

  •  08-07-2019
  •  | 
  •  

سؤال

هل هناك طريقة جيدة للوصول إلى شبكة سهم من خلال VBS النصي مع بديل التفويض (لا بيانات الاعتماد التي VBS يقوم هذا البرنامج)?

والقصد من ذلك هو أن تؤدي مهمتين:

  1. برمجيا التنقل مشاركة بعيدة بنية الملف ، من أجل التأكد من أن زوجين من الملفات البعيدة توجد نسخ ملف واحد على الآخر (البعيدة)
  2. نسخ الملفات من محرك الأقراص المحلي (التي يمكن الوصول إليها المحلية اسم المستخدم / permissions) إلى الأقراص البعيد (الوصول إليها مع أوراق اعتماد بديلة)

بقدر ما أستطيع أن أقول FSO (البرمجة.FileSystemObject) خارج الصورة ، لأنه يعمل دائما مع تفويض التطبيق باستخدام الأمر الذي من شأنه أن يكون الجهاز المحلي المستخدم.(?)

الوحيد-على ما يبدو نهجا لقد وجدت أثناء البحث في قوقل لإعداد ملف دفعي (أو تمديد دعوة "cmd.exe") يستخدم "صافي استخدام" لتوفير جهاز التحكم عن بعد تبادل وثائق التفويض ، ومن ثم نسخ الملفات مع كيكر أو ما شابه ذلك ، من داخل نفس الأوامر قذيفة "الدورة".هذا من شأنه أن يعمل على ما يرام بالنسبة نسخ/نشر الملفات من محرك الأقراص المحلي إلى مشاركة بعيدة, ولكن سيكون ve معقدة جدا وهشة أن تفعل أي نوع من ملفات نظام التصفح (كما تفعل مع FSO) في هذا الطريق.

احتمال آخر يجب النظر ينطوي على وجود اثنين من دورات البرمجة - يمكنك استدعاء البرنامج النصي (تقديم أوراق اعتماد بديلة في سطر الأوامر) و تشغيله cmd.exe الدورة الأولى لا "صافي استخدام" خريطة البعيد حصة مؤقتة المحلية بالسيارة ، ثم تدير نفسها في "فعلا الاشياء" وضع ويستخدم FSO ، ثم عندما تنتهي (في cmd.exe شل) قطع المؤقت محرك الأقراص مع "صافي استخدام" مرة أخرى.هذا هو عالي الكعب (نوافذ متعددة المؤقتة بالسيارة...) وأنا لست حتى متأكدا من أنه سينجح.

لا أحد يعرف أي طريقة أو القابلة البديل ؟ (التمسك VBScript / WScript على windows 2000 آلة - لا PowerShell!)

هل كانت مفيدة؟

المحلول

حسنا, لقد كنت الكادحة تحت الاعتقاد الخاطئ - أن FSO لن "التقاط" بيانات اعتماد الشبكة التي أنشئت مع "صافي الاستخدام" (أو 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
مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top