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

07.11.2018

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 بتثبيت الخدمة وبدء تشغيلها باستخدام واجهة برمجة التطبيقات (API). مميزات ويندوزلإدارة الخدمات. بعد ذلك، بعد بدء تشغيل PSEXESVC، يتم إنشاء اتصال بينه وبين PsExec لنقل البيانات (إدخال الأوامر وتلقي النتائج). عند الانتهاء، يقوم PsExec بإيقاف الخدمة وإزالتها من الكمبيوتر المستهدف.

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

psexec \\الكمبيوتر [-u المستخدم [-p كلمة المرور]] البرنامج [الوسائط]

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

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

psexec\\SRV1 ipconfig /flushdns

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

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


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


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


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

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

psexec \\SRV1 -c test.exe

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

psexec \\SRV1 "c:\program files\test.exe"

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

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

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

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

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

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

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

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

بسيكسيك

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

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

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

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

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

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

إدارة ويندوز عن بعد

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

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

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

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

لكي يبدأ خادم WinRM في قبول الأوامر، يجب أن يبدأ ملف خدمة ويندوزتم إكمال الإدارة عن بعد وتكوينها الأولي. استخدم الأمر

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

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

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

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

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

ريج إضافة 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:إيقاف تشغيل اسم الخادم /r /t 0

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

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

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

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

تثبيت

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

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

الاستخدام

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

الاستخدام: psexec [\\computer[,computer2[,...] | @file] [-u user [-ppassword]] [-n s] [-l] [-s|-e] [-x] [-i [session]] [-c [-f|-v]] [-الدليل][-د][-<приоритет>][-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\\marklap cmd

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

psexec \\marklap ipconfig /all

يقوم هذا الأمر بنسخ 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:\program files\internet explorer\iexplore.exe"