كيف يمكنني تنفيذ برنامج نصي عن بعد في نظام التشغيل Windows؟

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

  •  21-08-2019
  •  | 
  •  

سؤال

أرغب في قيام خادم يعمل بنظام التشغيل Windows 2003 بإطلاق برنامج نصي لتشغيل برنامج نصي آخر في جهاز كمبيوتر منفصل يعمل بنظام Windows Server 2008.

لقد قيل لي أن Powershell يمكنه القيام بذلك، ولا بأس بذلك، ولكنني بحاجة إلى مزيد من التفاصيل المحددة.

هل لدى أي شخص أي نصائح لهذا؟

شكرًا!

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

المحلول

psexec من Sysinternals

نصائح أخرى

والنظر في بناء جملة الأمر AT. يمكنك استخدامه لجدولة عملية لتشغيلها على جهاز بعيد.

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

AT [\\computername] [ [id] [/DELETE] | /DELETE [/YES]]
AT [\\computername] time [/INTERACTIVE]
    [ /EVERY:date[,...] | /NEXT:date[,...]] "command"

\\computername     Specifies a remote computer. Commands are scheduled on the
                   local computer if this parameter is omitted.
id                 Is an identification number assigned to a scheduled
                   command.
/delete            Cancels a scheduled command. If id is omitted, all the
                   scheduled commands on the computer are canceled.
/yes               Used with cancel all jobs command when no further
                   confirmation is desired.
time               Specifies the time when command is to run.
/interactive       Allows the job to interact with the desktop of the user
                   who is logged on at the time the job runs.
/every:date[,...]  Runs the command on each specified day(s) of the week or
                   month. If date is omitted, the current day of the month
                   is assumed.
/next:date[,...]   Runs the specified command on the next occurrence of the
                   day (for example, next Thursday).  If date is omitted, the
                   current day of the month is assumed.
"command"          Is the Windows NT command, or batch program to be run.

وأسهل طريقة التي سوف يكون استخدام في خطوتين

أ. تركيب سيغوين إلى جهاز الكمبيوتر البعيد

ب. تشغيل هدسون سه @ /cygdrive/c/path_to_script.bat "MCS

التحدث عن PsExec, ، أود بقوة أقترح استخدام Cygwin/OpenSSH بدلاً من ذلك.

يتمتع SSH بمزايا متعددة (مقارنة بأدوات مثل PsExec أو حتى الخدمات المخصصة).
على سبيل المثال، حاول استخدام مع PsExec وتنفيذ ما هذه bash / ssh تقوم أسطر الأوامر بما يلي:

ssh user@remotehost "find . -name something" 2> all.errors.txt
ssh user@remotehost "grep -r something ."
if [ "$?" == "0" ]
then
    echo "FOUND"
else
    echo "NOT FOUND"
fi

حظ سعيد!

  • ينقل SSH (!) حالة stdout / stderr / الخروج عن بعد إلى محلي قذيفة للتفتيش
    (ميزة قاتلة ومطلب شائع لدمج التنفيذ عن بعد في منطق البرامج النصية المحلية)

  • يوفر Cygwin/OpenSSH معيار بيئة قذيفة POSIX
    (الاستثمار الفعال للوقت، والأدوات الأساسية، والجاهزية عبر الأنظمة الأساسية، والعادات المتوافقة، وما إلى ذلك)

  • لا يزال بإمكانك/دائما تشغيل كل مواطن تطبيق ويندوز
    (بما في ذلك التنفيذ التلقائي لـ *.bat الملفات بواسطة cmd المعالج)

  • يمكنك تكوين مصادقة بدون كلمة مرور باستخدام المفاتيح العامة
    (فكر في المهام الآلية غير المراقبة)


نصيحة

كان هناك متطلب واحد واجهت مشاكل معه في البداية:
خلفية sshd كان على الخدمة تنفيذ التطبيقات في الجلسة الرسومية للمستخدم
(لإظهار نافذة التطبيق في بيئة سطح المكتب).

ال حل مقبول بالنسبة لي كان يركض sshd خدمة مباشرة في جلسة واجهة المستخدم الرسومية للمستخدم
(يبدأ تلقائيًا عندما يقوم المستخدم بتسجيل الدخول، اتبع الرابط لرؤية تغييرات ملف التكوين):

/usr/sbin/sshd -f /home/user/sshd_config

والحل المقبول من http://www.experts-exchange.com /OS/Microsoft_Operating_Systems/Q_22959948.html عبارة:

<اقتباس فقرة>   

وماذا أقدمها كان السيناريو الذي يأخذ   المعلمات ... وفي هذه الحالة فإنه يأخذ 4.   1) الخادم: إذا كنت تمر -Server وسوف   ذلك إلا خادم واحد 2) القائمة: أنت   يمكن أن توفر ملف قائمة الملقمات.   3) الخدمة: اسم الخدمة التي   تريد تعديله 4) مطول: ليس   تستخدم هنا.

     

وقد فعلت بعض الأخطاء التي I   تغير في التعليمة البرمجية التالية. ليستخدم   قص / لصق الشفرة في ملف يسمى   تعيين-RemoteService.ps1. تاكد من   وضع executionpolicy لتشغيل   مخطوطات ... لا سوف افتراضيا. أنت   القيام بذلك عن طريق استخدام   ضبط-executionpolicy الأمر cmdlet. PS>   تعيين-Executionpolicy "RemoteSigned" ل   تشغيل البرنامج النصي تفعل PS>   C: \ PathToScript \ تعيين-RemoteService.ps1   -list ج: \ ServerList.txt -SERVICE "DHCP"

     ######################### بارام (خادم $، قائمة $، خدمة $، [التحول] $ مطول)      

وإذا ($ مطول) {$ VerbosePreference =   "متابعة"} إذا (قائمة $) {       foreach ($ SRV في (الحصول على المحتوى قائمة $))       {           $ الاستعلام = "حدد * من Win32_Service حيث اسم = '$ خدمة"           $ myService = جت-WmiObject -الاستعلام $ الاستعلام -Computer $ SRV           $ myService.ChangeStartMode ( "تلقائي")           $ myService.Start ()       }} إذا ($ الخادم) {       $ الاستعلام = "حدد * من Win32_Service حيث اسم = '$ خدمة"       $ myService = جت-WmiObject -الاستعلام $ الاستعلام -Computer $ الخادم       $ myService.ChangeStartMode ( "تلقائي")       $ myService.Start ()}

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top