การสร้างบริการเพื่อเรียกใช้ RoboCopy


2

ฉันกำลังพยายามรวบรวมไฟล์แบตช์ที่จะตั้งค่าภารกิจ robocopy เป็นบริการเพื่อตอบสนองต่อการป้อนข้อมูลของผู้ใช้ แนวคิดพื้นฐานที่ผู้ใช้จะป้อน MyRobocopyBatchFile.bat sourceFolder destinationMachine และจากนั้นเนื้อหาของโฟลเดอร์จะถูกทำมิเรอร์ด้วยโฟลเดอร์ที่รู้จักบนปลายทางเครื่อง บริการจะถูกตั้งค่าให้เริ่มโดยอัตโนมัติดังนั้นจึงจะทำงานเมื่อเริ่มต้น สำหรับสิ่งนี้ฉันได้รับคิวจากคำถามนี้

สภาพแวดล้อมเป้าหมายสำหรับ WindowsServer 2008 R2

ความตั้งใจของฉันสำหรับวิธีการทำเช่นนี้คือ

set destination=\\%2\RunSheets
set source=%~dp0%1
echo Setting source to %source%
echo Setting destination to %destination%
set serviceName=RunSheetCopy%2

sc create %serviceName% binPath= "c:\Windows\System32\robocopy.exe %source% %destination% /MIR /MON:1 /v /log:C:\Logs\RoboCopy\%serviceName%.log /LEV:1" start= auto DisplayName= %serviceName% 

sc start %serviceName%

ด้วยการป้อนข้อมูลของผู้ใช้เช่น:

MyRobocopyBatchFile.bat .\RunSheets 10.20.30.40

ปัญหาที่ฉันกำลังเผชิญคือเมื่อไฟล์แบตช์เริ่มการให้บริการมันทำให้ฉันมีข้อผิดพลาด ข้อความแสดงข้อผิดพลาดเดียวกันเกิดขึ้นเมื่อเริ่มต้นด้วย NetStart หรือผ่านหน้าต่างบริการ ข้อความแสดงข้อผิดพลาดคือ:

 [SC] StartService FAILED 1053:

 The service did not respond to the start or control request in a
 timely fashion.

แม้จะมีข้อความแสดงข้อผิดพลาด robocopy กำลังซิงค์ไดเรกทอรี แต่มันไม่ได้ดำเนินการต่อในโหมดจอภาพ

หากความช่วยเหลือใด ๆ เกี่ยวกับวิธีการรับ robocopy ที่ทำงานเป็นบริการจะได้รับการชื่นชมอย่างมาก

NB ผู้จัดการผลิตภัณฑ์มีความกระตือรือร้นในความคิดของการบริการ

UPDATE: เนื่องจากไม่มีวิธีที่จะทำสิ่งนี้ในกลไกที่จะทำให้ PM มีความสุข (SrvAny การเป็นมรดกไม่ใช่ทางเลือก) ฉันจึงลงเอยด้วยการแฮ็คบริการห่อหุ้มบริการสำหรับ RoboCopy ไม่ใช่วิธีแก้ปัญหาที่ฉันต้องการ ชอบ แต่มันจะทำงาน


2
นี่คือกระบองเพชร ฉันจะดูการสร้างการแชร์ไฟล์ที่จำลองแบบ DFS และให้ผู้ใช้ของคุณบันทึกไฟล์ที่นั่น
Ryan Ries

น่าเสียดายที่ข้อกำหนดของโครงการและปัญหาที่โซลูชันพยายามแก้ไขแก้ปัญหาที่นี่ในระดับหนึ่ง
Klee

คำตอบ:


4

ฉันสามารถตั้งค่าสิ่งนี้เมื่อสองสามปีที่แล้ว ... แต่จำไม่ได้ว่า! ดังนั้นฉันจึงกลับมาใช้ VM เดิมของฉันเพื่อตรวจสอบ

ฉันได้ใช้srvany.exeยูทิลิตี้ที่มาพร้อมกับชุด Ressource Windows 2003

ยูทิลิตี้นี้ไม่ได้รับการสนับสนุนจริงๆกับรุ่นล่าสุดของ Windows แต่ทำงานบน Windows 2008 R2

จากลิงก์ก่อนหน้านี้ให้สังเกตจุดสำคัญนี้:

อย่างไรก็ตามโปรดทราบว่า SC ไม่ใช่ตัวแทน SRVANY! SC จะช่วยให้คุณสร้าง / ติดตั้งบริการ แต่จะไม่อนุญาตให้คุณเรียกใช้โปรแกรมปฏิบัติการปกติที่ไม่ได้ให้บริการเช่นเดียวกับบริการ Windows เช่น srvany.exe

นี่คือเหตุผลที่คุณได้รับข้อความแสดงข้อผิดพลาด Robocopyคำสั่งจะถูกดำเนินการเมื่อบริการเริ่ม แต่แล้วก็เกิดปัญหาเพราะไม่ได้ออกแบบมาเพื่อทำงานเป็นบริการของ Windows


  1. ดาวน์โหลดและติดตั้งrktools.exeบนเวิร์กสเตชันของคุณแล้วคัดลอกเฉพาะไฟล์ที่ต้องการที่srvany.exeใดที่หนึ่งบนเซิร์ฟเวอร์ของคุณ (สมมติว่าc:\Tools)

  2. จากนั้นสร้างบริการ Windows สำหรับsrvany:

    sc create Robocopy-Service binPath= "C:\Tools\srvany.exe" start= auto
    
  3. เปิดรีจิสทรีและไปที่: HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\Robocopy-Service

  4. สร้างรหัสใหม่ที่เรียกว่า Parameters

  5. ภายใต้คีย์ใหม่นั้นให้สร้าง 3 ค่าสตริงใหม่:

    • AppDirectory: c: \ windows \ system32
    • แอปพลิเคชัน: c: \ windows \ system32 \ robocopy.exe
    • AppParameters: c: \ source c: \ dest / MIR / MON: 1

ในที่สุดเริ่มบริการชื่อRobocopy-Serviceและทุกอย่างควรทำงานได้ดี

ตอนนี้จากที่นี่คุณยังสามารถทำให้สิ่งต่าง ๆ เป็นไฟล์แบทช์โดยอัตโนมัติ แต่คุณจะต้องใช้reg.exe (หรือ regedit.exe) เพื่อจัดการการตั้งค่ารีจิสทรี

ฉันได้ค้นพบแล้วในบุ๊กมาร์กของฉันลิงค์เดิมที่ช่วยฉัน: https://plus.google.com/112485889729268615636/posts/bH8rSDo5ocC


ฉันเกลียดที่จะให้คำแนะนำเพราะฉันไม่คิดว่าสิ่งที่ OP กำลังมองหาเป็นทางออกที่ดี แต่ด้วยข้อแม้นั้นในใจฉันจะยืนยันว่า NSSM ( nssm.cc ) เป็นบริการที่ดีกว่ามาก ผู้จัดการกว่าเก่าSRVANYสำหรับความต้องการของ OP NSSM มีชุดคุณลักษณะที่สมบูรณ์ยิ่งขึ้นและกำลังได้รับการบำรุงรักษาอย่างแข็งขัน
Evan Anderson

1
ฉันยังสับสนเมื่อฉันอ่านคำถามและเขียนคำตอบของฉัน แต่สุดท้ายแล้วฉันตัดสินใจที่จะตอบคำถามเท่านั้น แต่โปรดจำไว้ว่าให้หลีกเลี่ยงการใช้ซอฟต์แวร์ของบุคคลที่สามให้มากที่สุดเท่าที่จะเป็นไปได้ (อย่างน้อยก็ไม่ใช่ซอฟต์แวร์ของบุคคลภายนอกของ Microsoft) AlwaysUp (ไม่ใช่ฟรี) อาจเป็นทางเลือก @Ryan Ries นั้นถูกต้องเกี่ยวกับ DFSR
krisFR

0

โพสต์เก่าคำตอบใหม่สำหรับ $ 49.95 สิ่งนี้ควรทำ การทำงานเพื่อดำเนินธุรกิจ Onedrive เป็นบริการ http://www.coretechnologies.com/products/AlwaysUp/

นี่คือผู้สมัครคนอื่น (ฟรี) ที่จะเปิดเผยตัวคุณเอง: http://www.rozanski.org.uk/services

เรื่องย่อ SVC.EXE SVC.EXE เป็นโปรแกรมบรรทัดคำสั่ง Windows NT อย่างง่ายในการจัดการบริการ NT สามารถแสดงรายการบริการและสามารถแสดงติดตั้งปรับเปลี่ยนหรือลบบริการแต่ละรายการได้ มันมีสิ่งอำนวยความสะดวกในการกำหนดบริการอ้างอิง โปรแกรมจะแจ้งข้อมูลที่จำเป็นทั้งหมดจาก stdin สำหรับพรอมต์ส่วนใหญ่ให้พิมพ์? จะแสดงข้อความช่วยเหลือ

คำเตือน - คุณได้รับคำแนะนำให้สำรองข้อมูลการลงทะเบียนของคุณก่อนที่จะใช้โปรแกรมนี้ (แม้ว่าฉันไม่เคยพบปัญหาใด ๆ ในขณะใช้งาน)

โปรดทราบว่า SVC.EXE ไม่เกี่ยวข้องกับโปรแกรมสปายแวร์ Madfinder ในชื่อเดียวกัน คลิกที่นี่สำหรับข้อมูลเพิ่มเติม

SRVSTART.EXE

สรุป. SRVSTART.EXE เป็น Win32 ที่ปฏิบัติการได้และ DLL ซึ่งช่วยให้คุณสามารถรันคำสั่งราวกับว่าพวกเขาเป็นบริการ Windows NT นอกจากนี้ยังมีคุณสมบัติบางอย่างเพื่อเพิ่มประสิทธิภาพการทำงานของคำสั่งคอนโซลทั่วไป (การขอพารามิเตอร์ ฯลฯ ) DLL สามารถใช้ด้วยตนเองเพื่อสร้างบริการโดยไม่ต้องเขียนรหัสการจัดการบริการใด ๆ

SRVSTART.EXE ทำงานในหนึ่งในสองโหมด

It can be used to run an ordinary command (executable program batch file). In this command mode, SRVSTART.EXE can prompt the user for the values of command-line parameters such as passwords.
It can be used to run an executable program in the context of a Windows NT service (service mode). SRVSTART.EXE will itself handle all of the interactions with the NT Service Control Manager (SCM). It is not necessary for the program to include any service management code. 

รางวัล SrvStart

SRVSTART.EXE เดิมได้รับการจัดอันดับตัวเลือกระดับห้าดาวโดย ZDNet Downloads น่าเสียดายเนื่องจาก Ziff-Davis ตัดสินใจที่จะเรียกเก็บเงินจากผู้พัฒนาซอฟต์แวร์ - แม้แต่นักพัฒนาฟรีแวร์เช่นฉัน - ค่าธรรมเนียมที่จะแสดงรายการซอฟต์แวร์ของฉันจึงไม่มีฟีเจอร์บนไซต์ของพวกเขาอีกต่อไป

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.