بعيد كمد. تنفيذ أوامر وحدة التحكم على أجهزة الكمبيوتر البعيدة عبر الشبكة

PsExec هو أداة ل التنفيذ عن بعدأوامر

يعد تشغيل الأوامر على جهاز كمبيوتر بعيد مهمة شائعة إلى حد ما. قد يكون هذا ضروريًا لتغيير إعدادات النظام وتثبيت البرامج أو إزالتها وغير ذلك الكثير. لحل مثل هذه المشكلات ، هناك عدد غير قليل من الأدوات المختلفة ، بدءًا من أنظمة البرامج الجادة مثل System Center Configuration Manager إلى أدوات مساعدة سطر الأوامر المتواضعة. ستتم مناقشة إحدى هذه الأدوات المساعدة في هذه المقالة.

تعد أداة PsExec المساعدة جزءًا من حزمة PsTools من Sysinternals. يسمح لك بتنفيذ الأوامر على أجهزة الكمبيوتر البعيدة ولا يتطلب التثبيت على النظام. لاستخدام الأداة المساعدة ، ما عليك سوى نسخها إلى المجلد الذي يحتوي على ملفات قابلة للتنفيذ (مثل C: \ Windows \ system32) وتشغيلها من أي غلاف سطر أوامر: Cmd أو PowerShell.
مبدأ تشغيل البرنامج هو كما يلي: في موارد الملف القابل للتنفيذ PsExec.exe يوجد ملف آخر قابل للتنفيذ - PSEXESVC ، وهي خدمة Windows. قبل تنفيذ الأمر ، يقوم PsExec بفك ضغط هذا المورد في المجلد الإداري المخفي لجهاز الكمبيوتر البعيد Admin $ (C: \ Windows) ، في الملف C: \ Windows \ system32 \ psexesvc.exe.

ملحوظة.إذا كنت تستخدم المفتاح أخبر البرنامج بنسخ الملفات القابلة للتنفيذ إلى هذا النظام ، وسيتم أيضًا نسخها إلى هذا المجلد.

بعد اكتمال النسخة ، يقوم PsExec بتثبيت الخدمة وبدء تشغيلها باستخدام واجهة برمجة تطبيقات Windows Functions لإدارة الخدمات. بعد ذلك ، بعد بدء PSEXESVC ، يتم إنشاء اتصال بينها وبين PsExec لنقل البيانات (إدخال الأوامر واستلام النتائج). عند الانتهاء ، يقوم PsExec بإيقاف الخدمة وإزالتها من الكمبيوتر الهدف.

بناء جملة PsExec كما يلي:

psexec \\ computer [-u user [-p password]] برنامج [وسيطات]

يمكن حذف اسم المستخدم وكلمة المرور ، وفي هذه الحالة ستعمل العملية البعيدة تحت نفس الحساب مثل برنامج PsExec. ومع ذلك ، نظرًا لأن العملية عن بُعد هي انتحال شخصية ، فلن تتمكن من الوصول إلى موارد الشبكة على النظام البعيد. إذا حددت اسم مستخدم ، فستبدأ العملية البعيدة تحت الحساب المحدد وستحصل على حق الوصول إلى نفس موارد الشبكة للنظام البعيد مثل الحساب المحدد. ومع ذلك ، ضع في اعتبارك أنه يتم إرسال كلمة المرور إلى النظام البعيد بنص واضح.

كمثال ، دعنا نمسح ذاكرة التخزين المؤقت لنظام أسماء النطاقات على الكمبيوتر البعيد SRV1:

psexec \\ SRV1 ipconfig / flushdns

سيتم تشغيل الأمر على كمبيوتر SRV1 ضمن بيانات الاعتماد الخاصة بك. عند اكتمال ipconfig ، سيتم إرسال جميع مخرجات النص إلى جهاز الكمبيوتر الخاص بك ، بالإضافة إلى إعادة رمز الخطأ. إذا كان الأمر ناجحًا ، فسيكون 0.

إذا كنت بحاجة إلى تنفيذ عدة أوامر ، فمن الأفضل إنشاء جلسة تفاعلية مع الكمبيوتر البعيد. للقيام بذلك ، أدخل الأمر psexec \\ SRV1 سم. سيتم الآن تنفيذ الأوامر التي تم إدخالها على الكمبيوتر المحلي على الكمبيوتر البعيد SRV1.


يسمح لك PsExec بتشغيل أمر على أجهزة كمبيوتر متعددة في نفس الوقت. للقيام بذلك ، يمكنك إدخال أسماء أجهزة الكمبيوتر مفصولة بفواصل: psexec \\ SRV1 ، SRV2أو احفظها في ملف نصي ثم حدد عنوانها: psexec @ c: \ comp.txt. إذا قمت بوضع علامة النجمة بدلاً من اسم الكمبيوتر ، مثل هذا: psexec \\ *، ثم سيتم تنفيذ الأمر على جميع أجهزة الكمبيوتر في المجال.


وطريقة أخرى مثيرة للاهتمام لاستخدام أداة PsExec. إذا لم تحدد اسم كمبيوتر ، فسيتم تشغيل الأمر على النظام المحلي افتراضيًا. باستخدام المفتاح يمكنك تشغيل البرامج تحت حساب النظام. على سبيل المثال ، لنبدأ جلسة سطر الأوامر: psexec-s كمدثم الأمر من أنادعنا نتحقق من المستخدم الذي نعمل حاليًا بموجبه. يمكن أن تكون هذه الميزة مفيدة لتصحيح أخطاء البرامج أو الوصول إلى مفاتيح تسجيل SAM و SECURITY المخفية.


حسنًا ، بضع كلمات حول مفاتيح البرنامج. لن أصف كل شيء ، سأخبرك عن الأكثر إثارة للاهتمام:

يتم نسخ البرنامج المحدد إلى النظام البعيد للتنفيذ. فمثلا:

psexec \\ SRV1 -c test.exe

إذا لم يتم تحديد هذه المعلمة ، فيجب أن يكون التطبيق موجودًا في مجلد النظام للكمبيوتر البعيد. إذا كان هذا البرنامج موجودًا بالفعل على الكمبيوتر البعيد ولم يكن موجودًا في دليل النظام ، فيجب عليك تحديد المسار الكامل إليه (إذا كان اسم البرنامج يحتوي على مسافات ، فيجب تضمينه بين علامتي اقتباس):

psexec \\ SRV1 "c: \ ملفات البرنامج \ test.exe"

إذا كان مع المفتاح استخدم المفتاح -Fثم حتى إذا كان البرنامج موجودًا بالفعل على النظام البعيد ، فسيتم الكتابة فوقه. وبمفتاح -الخامسسيتم الكتابة فوقه فقط إذا كان الإصدار المنسوخ من البرنامج أحدث من الإصدار المثبت في النظام.

تشغيل البرنامج في الوضع التفاعلي. بشكل افتراضي ، ينفذ PsExec الأوامر في وضع التخفي ، أي أنه لا يتم عرض أي نوافذ أو مربعات حوار على النظام حيث يتم تنفيذ الأمر. ومع ذلك ، هناك خيار لتغيير هذا بالمفتاح -أنا. بعد ذلك ، يمكنك تحديد رقم الجلسة التي يتم عرض النوافذ فيها ، أو لا يمكنك تحديدها ، ثم سيتم عرض الواجهة في جلسة وحدة التحكم.

يُحدد عدم انتظار اكتمال التطبيق. في هذه الحالة ، لن نتلقى بيانات الإخراج من الأداة المساعدة لوحدة التحكم ، لكننا سنكون قادرين على تشغيل البيانات التالية دون انتظار اكتمال الأمر السابق. يجب استخدام هذا الإعداد فقط عند تشغيل التطبيقات غير التفاعلية.

يُستخدم لتشغيل البرنامج بتنسيق. قد تكون مطلوبة في أنظمة التشغيل Windows Vista والإصدارات الأحدث لتشغيل بعض البرامج التي تُجري تغييرات على إعدادات النظام (على سبيل المثال ، regedit).

وبمساعدة هذا المفتاح ، على العكس من ذلك ، يمكنك تقليل السلطة. عند بدء العملية ، يُمنح المستخدم ، بغض النظر عما إذا كان ينتمي إلى مجموعة المسؤولين ، حقوقًا محدودة (تُلغى حقوق مجموعة "Administrators" ، ويُمنح المستخدم فقط الحقوق المعينة لمجموعة "Users") .

مكتمل معلومات اساسيةيمكن الحصول على جميع مفاتيح البرنامج ببساطة عن طريق إدخال الأمر بسيكسكفي سطر الأوامربدون معلمات.

تسمح لك الأدوات المساعدة مثل Telnet وبرامج الإدارة عن بُعد مثل Symantec's PC Anywhere بتشغيل البرامج على الأنظمة البعيدة ، ولكنها ليست سهلة التثبيت لأنك تحتاج أيضًا إلى تثبيت عميل البرمجياتعلى تلك الأنظمة البعيدة التي يجب الوصول إليها. PsExec هو نسخة خفيفة الوزن من Telnet. يسمح لك بتشغيل العمليات على الأنظمة البعيدة بالقوة الكاملة لواجهة تطبيق وحدة التحكم التفاعلية دون الحاجة إلى تثبيت برنامج العميل يدويًا. تتمثل الفائدة الرئيسية لبرنامج PsExec في القدرة على استدعاء واجهة سطر أوامر بشكل تفاعلي على الأنظمة البعيدة وتشغيل أدوات مثل IpConfig عن بُعد. هذه هي الطريقة الوحيدة لعرض معلومات حول نظام بعيد على شاشة الكمبيوتر المحلي.

ملحوظة. تشير بعض برامج فحص الفيروسات إلى إصابة برنامج واحد أو أكثر من هذه البرامج بفيروس "المسؤول عن بُعد". لا تحتوي أي من البرامج المضمنة في مجموعة PsTools على فيروسات ، ولكن تم استخدامها من قبل الفيروسات ، وهو ما يسبب هذه التحذيرات.

تثبيت

ما عليك سوى نسخ برنامج PsExec إلى المجلد القابل للتنفيذ. عند إدخال الأمر psexec ، يتم عرض تعليمات حول بناء جملة الأمر.

يعمل PsExec على أنظمة التشغيل Windows Vista و NT 4.0 و Win2000 و Windows XP و Server 2003 ، بما في ذلك إصدارات نظام التشغيل 64 بت

إستعمال

مقال كتبه مارك روسينوفيتش في عدد يوليو 2004 من مجلة Windows IT Pro يصف طرقًا إضافية للعمل مع البرنامج. بسيكسك.

الاستعمال: psexec [\\ computer [، computer2 [، ...] | @ ملف] [- مستخدم u [-p password]] [- n s] [- l] [- s | -e] [- x] [- i [جلسة]] [- c [-f | -v]] [-w دليل] [- د] [-<приоритет>] [- a n، n، ...] برنامج [وسيطات]

كمبيوتر

يخبر PsExec بتشغيل التطبيق على الكمبيوتر أو أجهزة الكمبيوتر المحددة. إذا لم يتم تحديد اسم الكمبيوتر ، فسوف يقوم PsExec بتشغيل التطبيق على النظام المحلي ؛ إذا كان اسم الكمبيوتر هو علامة النجمة (\\ *) ، فإن PsExec سيقوم بتشغيل التطبيق على جميع أجهزة الكمبيوتر في المجال الحالي.

@ملف

يخبر PsExec بتشغيل التطبيق على جميع أجهزة الكمبيوتر المدرجة في الملف النصي المحدد.

يتم فصل المعالجات التي يمكن تشغيل التطبيق عليها بفاصلات ، ويتم ترقيم المعالجات بدءًا من 1. على سبيل المثال ، لتشغيل التطبيق على المعالجات الثانية والرابعة ، اكتب "-a 2،4"

يتم نسخ البرنامج المحدد إلى النظام البعيد للتنفيذ. إذا لم يتم تعيين هذه المعلمة ، فيجب أن يكون التطبيق موجودًا في مجلد النظام الخاص بالنظام البعيد.

يُحدد عدم انتظار اكتمال التطبيق. يجب استخدام هذا الإعداد فقط عند تشغيل التطبيقات غير التفاعلية.

لم يتم تحميل ملف تعريف الحساب المحدد.

يتم نسخ البرنامج المحدد إلى النظام البعيد ، حتى إذا كان الملف موجودًا بالفعل على النظام البعيد.

يحصل البرنامج الذي يتم تشغيله على حق الوصول إلى سطح المكتب للجلسة المحددة على النظام البعيد. إذا لم يتم تعيين الجلسة ، فسيتم تشغيل العملية في جلسة وحدة التحكم.

عند بدء العملية ، يتم منح المستخدم حقوقًا محدودة (يتم إبطال حقوق مجموعة المسؤولين ويتم منح المستخدم الحقوق المعينة لمجموعة المستخدمين فقط). في نظام التشغيل Windows Vista ، تبدأ العملية بـ مستوى منخفضالجدارة بالثقة.

يسمح لك بتعيين تأخير الاتصال بأجهزة الكمبيوتر البعيدة (بالثواني).

يسمح لك بتحديد كلمة مرور اختيارية لاسم المستخدم. إذا تم حذف هذه المعلمة ، سيُطلب منك إدخال كلمة مرور ، ولن يتم عرض كلمة المرور على الشاشة.

يتم تشغيل العملية البعيدة من حساب النظام.

يسمح لك بتحديد اسم مستخدم اختياري لتسجيل الدخول إلى النظام البعيد.

يتم نسخ الملف المحدد إلى النظام البعيد بدلاً من الملف الموجود فقط إذا كان رقم إصداره أعلى أو أحدث.

يسمح لك بتحديد دليل عمل (مسار داخل النظام البعيد) للعملية.

يعرض واجهة المستخدم على سطح مكتب Winlogon (النظام المحلي فقط).

-أولوية(أولوية)

يسمح لك بتعيين أولويات مختلفة للعملية: -منخفض (منخفض) ، -منخفض عادي (أقل من المتوسط) ، -أبوفيني عادي (فوق المتوسط) ،-مرتفع (مرتفع) ، أو -وقت حقيقي (الوقت الحقيقي).

برنامج

اسم البرنامج المراد تشغيله.

الحجج

وسيطات لتمريرها (لاحظ أنه يجب تحديد مسارات الملفات كمسارات محلية على النظام الهدف).

لتحديد اسم تطبيق يحتوي على مسافات ، استخدم علامات الاقتباس ، مثل psexec \\ marklap "c: \ longname \ app.exe". يتم نقل البيانات المدخلة إلى النظام البعيد عندما تضغط على مفتاح "Enter" ، لإكمال العملية عن بُعد ، تحتاج إلى الضغط على مجموعة المفاتيح Ctrl-C.

إذا لم يتم تحديد اسم مستخدم ، فستعمل العملية البعيدة تحت نفس الحساب مثل برنامج PsExec. ومع ذلك ، نظرًا لأن العملية عن بُعد هي انتحال شخصية ، فلن تتمكن من الوصول إلى موارد الشبكة على النظام البعيد. إذا تم تحديد اسم مستخدم ، يتم تشغيل العملية البعيدة تحت الحساب المحدد والوصول إلى نفس موارد الشبكة على النظام البعيد مثل الحساب. لاحظ أنه يتم إرسال كلمة المرور إلى النظام البعيد بنص واضح.

عند الوصول إلى النظام المحلي ، يمكن استخدام هذا الإصدار من PsExec بدلاً من Runas لأن PsExec لا يتطلب حقوقًا إدارية.

أمثلة

يستدعي هذا الأمر واجهة سطر أوامر تفاعلية على نظام \\ marklap:

psexec \\ ماركلاب كمد

يقوم هذا الأمر بتشغيل برنامج IpConfig على النظام البعيد باستخدام الخيار / all ويعرض البيانات الناتجة على شاشة النظام المحلي:

psexec \\ marklap ipconfig / الكل

يقوم هذا الأمر بنسخ برنامج test.exe إلى النظام البعيد وتشغيله بشكل تفاعلي.

psexec \\ marklap -c test.exe

إذا كان هذا البرنامج مثبتًا بالفعل على النظام البعيد ولم يكن موجودًا في دليل النظام ، فحدد المسار الكامل لهذا البرنامج

psexec \\ marklap c: \ bin \ test.exe

يقوم هذا الأمر بتشغيل Regedit بشكل تفاعلي من حساب النظام لعرض بيانات مفتاح تسجيل SAM و SECURITY:

psexec -i -d -s c: \ windows \ regedit.exe

يستخدم هذا الأمر للاتصال برامج الإنترنتالمستكشف كمستخدم محدود:

psexec -l -d "c: \ ملفات البرنامج \ Internet Explorer \ iexplore.exe"

تتناول هذه المقالة كيفية تنفيذ أوامر وحدة التحكم على أجهزة الكمبيوتر البعيدة على الشبكة ، ويتم تقديم بعض الأوامر المفيدة جدًا لمسؤولي النظام كأمثلة.

أستخدم أداتين من أدوات تنفيذ أوامر وحدة التحكم عن بُعد: PsExec و WinRM ، ولكل منهما مزاياها الخاصة.

بسيكسك

أحد الحلول الرائعة للمشكلة المطروحة في العنوان هو استخدام برنامج PsExec من مارك روسينوفيتش العظيم.

يعمل البرنامج وفقًا لمبدأ العميل - الخادم: العميل يعمل على الجهاز المحلي ، والذي يرسل أوامر إلى الخادم على الكمبيوتر البعيد. من ميزات هذا البرنامج أنه يتم تثبيت جزء الخادم تلقائيًا مباشرة قبل تنفيذ الأمر ، ثم إزالته. وبالتالي ، لتنفيذ الأوامر على الأجهزة البعيدة ، يكفي أن يكون لديك حقوق إدارية عليها.

إذا تم تشغيل PsExec كمسؤول ينتمي إلى نفس المجال مثل الكمبيوتر البعيد ، فلن تكون هناك حاجة إلى أي بيانات اعتماد. خلاف ذلك ، يمكن تحديدها في سطر الأوامر ، أو سيطالبك PsExec بذلك. يعمل PsExec على أنظمة التشغيل من Windows 2000 إلى Windows Server 2008 R2 64 بت.

الميزات التالية مفيدة جدًا في PsExec:

  • قم بتشغيل أمر على مجموعة من أجهزة الكمبيوتر. مثال: يسمح لك الأمر التالي بفرض أحدث سياسات المجموعة:
    psexec @ group.txt gpupdate / force
  • قم بتشغيل الأوامر كحساب النظام. مثال: سيجبر الأمر التالي النظام البعيد على التحقق من وجود تحديثات:
    psexec \\ الكمبيوتر wuauclt / Discovernow
  • نسخ برنامج قيد التشغيل إلى كمبيوتر بعيد قبل التنفيذ. مثال: سيقوم الأمر التالي بتحديث عضوية هذا الكمبيوتر في مجموعة أمان Active Directory (رمز الوصول) دون إعادة التشغيل:
    psexec \\ computer -c -s klist.exe تطهير

من الصعب المبالغة في تقدير فائدة هذا البرنامج إذا كنت تستخدم البرامج النصية وقدرات أوامر وحدة التحكم المضمنة في Windows.

إدارة Windows عن بعد

كانت في الأصل تقنية خادم لإدارة الأجهزة عن بُعد تم تقديمها في Windows Server 2003 R2 كجزء من مكون إدارة الأجهزة ، لكن Microsoft أصدرت مؤخرًا حزمة Windows Management Framework ، والتي تتضمن PowerShell 2.0 و WinRM 2.0 وتم تثبيتها على أنظمة تشغيل العميل مثل تحديثا. يمكن العثور على التفاصيل في المقالة KB968929.

يكمن جمال WinRM في سهولة النشر في بيئة المجال عبر WSUS كترقية اختيارية لنظام التشغيل والقوة التي تأتي مع استخدام PowerShell.

يحدث استخدام WinRM من خلال أمرين.

winrm.cmdيستخدم لتكوين الإعدادات والتشخيصات لعميل وخادم WinRM.

لكي يبدأ خادم WinRM في قبول الأوامر ، يجب تشغيل خدمة Windows Remote Management ويجب إجراء التكوين الأولي الخاص بها. استخدم الأمر

winrm quickconfig على الجهاز المحلي ، أو خدعة بالأذنين
psexec -s \\ servername winrm quickconfig عبر الشبكة باستخدام PsExec كحساب النظام.

سيطالبك ببدء تشغيل خدمة WinRM تلقائيًا والسماح بالاتصالات عن بُعد ، موافق ؛)

من أجل الاتصال بنجاح بخادم WinRM (بمعنى جزء الخادم الذي يقبل الأوامر) الذي لم يتم تضمينه في نفس المجال مثل جهاز الكمبيوتر العميل ، تحتاج إلى إضافة هذا الخادم الهدف إلى "القائمة الموثوقة" على العميل باستخدام ما يلي يأمر:

winrm set winrm / config / client @ (TrustedHosts = "اسم الخادم") ، حيث يمكنك بدلاً من اسم الخادم تحديد عنوان IP ، أو * (علامة النجمة).

بالنسبة لمستخدمي Windows Vista و Windows 7 الذين لا يعملون كمسؤول مضمن (وهذا هو الحال عادةً) ، فأنت بحاجة إلى تشغيل الأمر التالي

reg add HKLM \ SOFTWARE \ Microsoft \ Windows \ CurrentVersion \ Policies \ System / v LocalAccountTokenFilterPolicy / t REG_DWORD / d 1 / f

بشكل افتراضي ، هناك حد 5 اتصالات WinRM متزامنة من العميل ، لزيادة هذا الرقم ، قم بتشغيل الأمر

winrm s winrm / config / winrs @ (MaxShellsPerUser = "X")

winrs.exe- عميل لإرسال الطلبات إلى جانب الخادم. مثال: الأمر التالي سيفرض إعادة تشغيل النظام البعيد ...

winrs -r: servername shutdown / r / t 0

في بيئة المجال ، يتم استخدام بيانات اعتماد المستخدم الذي أطلق الأمر عند إرسال الأوامر. لإرسال أوامر نيابة عن مستخدم آخر ، يتم استخدام مفاتيح التبديل -u: user -p: pass. مثال: سيقوم الأمر التالي بمسح ذاكرة التخزين المؤقت المحلية لأسماء DNS على النظام البعيد

winrs -r: servername -u: user -p: pass ipconfig / flushdns