11/13/2559

จะ Add Task จากโปรแกรมที่เราสร้างขึ้นเองใส่ Windows Schedule Task

จะ Add Task จากโปรแกรมที่เราสร้างขึ้นเองใส่ Windows Schedule Task ได้ไหมครับ
หมายถึงเพิ่มจากโปรแกรมเราสร้างเองเลยครับ ไม่ใช่ไปเพิ่มตรง Windows Schedule Task เองนะครับ

ลองวิธีนี้ครับ แบบง่ายๆ เลย (แบบยากหาไม่เจอ )

ให้โปรแกรมเราเรียก command schtasks ของ Windows ครับ คือให้โปรแกรมเรารันคำสั่งภายนอกครับ 

ส่วนนี่เป็นวิธีการใช้งานคำสั่ง schtasks ครับ สามาถเรียกดูได้จากการพิมพ์ที่ command prompt ว่า schtasks /? ครับ

** Help ตัวนี้ใช้ได้ักับ Windows XP ขึ้นไปนะครับ ของ 2000 อาจจะได้แต่น่าจะไม่เหมือนกัน

Command help
001.SCHTASKS /Create [/S system [/U username [/P password]]]
002.[/RU username [/RP password]] /SC schedule [/MO modifier] [/D day]
003.[/I idletime] /TN taskname /TR taskrun [/ST starttime] [/M months]
004.[/SD startdate] [/ED enddate]
005. 
006.Description:
007.Enables an administrator to create scheduled tasks on a local or
008.remote systems.
009. 
010.Parameter List:
011./S           system            Specifies the remote system to
012.connect to. If omitted the system
013.parameter defaults to the local
014.system.
015. 
016./U           username          Specifies the user context under
017.which the command should execute.
018. 
019./P           password          Specifies the password for the given
020.user context.
021. 
022./RU          username          Specifies the user account (user
023.context) under which the task runs.
024.For the system account, valid values
025.are """NT AUTHORITY\SYSTEM" or
026."SYSTEM".
027. 
028./RP          password          Specifies the password for the user.
029.To prompt for the password, the value
030.must be either "*" or none.
031.Password will not effect for the
032.system account.
033. 
034./SC          schedule          Specifies the schedule frequency.
035.Valid schedule types: MINUTE, HOURLY,
036.DAILY, WEEKLY, MONTHLY, ONCE,
037.ONSTART, ONLOGON, ONIDLE.
038. 
039./MO          modifier          Refines the schedule type to allow
040.finer control over schedule
041.recurrence. Valid values are listed
042.in the "Modifiers" section below.
043. 
044./D           days              Specifies the day of the week to run
045.the task. Valid values: MON, TUE,
046.WED, THU, FRI, SAT, SUN and for
047.MONTHLY schedules 1 - 31 (days of the
048.month).
049. 
050./M           months            Specifies month(s) of the year.
051.Defaults to the first day of the
052.month. Valid values: JAN, FEB, MAR,
053.APR, MAY, JUN, JUL, AUG, SEP, OCT,
054.NOV, DEC.
055. 
056./I           idletime          Specifies the amount of idle time to
057.wait before running a scheduled
058.ONIDLE task.
059.Valid range: 1 - 999 minutes.
060. 
061./TN          taskname          Specifies a name which uniquely
062.identifies this scheduled task.
063. 
064./TR          taskrun           Specifies the path and file name of
065.the program to be run by this
066.scheduled task.
067.Example: C:\windows\system32\calc.exe
068. 
069./ST          starttime         Specifies the time to run the task.
070.The time format is HH:MM:SS (24 hour
071.time) for example, 14:30:00 for
072.2:30 PM.
073. 
074./SD          startdate         Specifies the first date on which the
075.task runs. The format is
076."mm/dd/yyyy".
077. 
078. 
079. 
080./ED          enddate           Specifies the last date when the task
081.should run. The format is
082."mm/dd/yyyy".
083. 
084. 
085. 
086./?                             Displays this help/usage.
087. 
088.Modifiers: Valid values for the /MO switch per schedule type:
089.MINUTE:  1 - 1439 minutes.
090.HOURLY:  1 - 23 hours.
091.DAILY:   1 - 365 days.
092.WEEKLY:  weeks 1 - 52.
093.ONCE:    No modifiers.
094.ONSTART: No modifiers.
095.ONLOGON: No modifiers.
096.ONIDLE:  No modifiers.
097.MONTHLY: 1 - 12, or
098.FIRST, SECOND, THIRD, FOURTH, LAST, LASTDAY.
099. 
100.Examples:
101.SCHTASKS /Create /S system /U user /P password /RU runasuser
102./RP runaspassword /SC HOURLY /TN rtest1 /TR notepad
103.SCHTASKS /Create /S system /U domain\user /P password /SC MINUTE
104./MO 5 /TN rtest2 /TR calc.exe /ST 12:00:00
105./SD 10/20/2001 /ED 10/20/2001 /RU runasuser /RP
106. 
107.SCHTASKS /Create /SC MONTHLY /MO first /D SUN /TN game
108./TR c:\windows\system32\freecell
109.SCHTASKS /Create /S system /U user /P password /RU runasuser
110./RP runaspassword /SC WEEKLY /TN test1 /TR notepad.exe
111.SCHTASKS /Create /S system /U domain\user /P password /SC MINUTE
112./MO 5 /TN test2 /TR c:\windows\system32\notepad.exe
113./ST 18:30:00 /RU runasuser /RP *
114.SCHTASKS /Create /SC MONTHLY /MO first /D SUN /TN cell
115./TR c:\windows\system32\freecell /RU runasuser


ตัวอย่าง

กรณีต้องการรัน ทุกวันอังคาร 8:00 เช้า ก็ให้โปรแกรมเราเรียกคำสั่งแบบนี้ครับ

1.SCHTASKS /Create /S <i>computername</i> /SC WEEKLY /D TUE /RU <i>Username</i> /RP <i>password</i>  /TN <i>OpenNotepad</i> /ST <i>08:00:00</i> /TR c:\windows\notepad.exe


กรณีต้องการรัน ทุกวัน 8:00 เช้า ก็ให้โปรแกรมเราเรียกคำสั่งแบบนี้ครับ


1.SCHTASKS /Create /S <i>computername</i> /SC DAILY /RU <i>Username</i> /RP <i>password</i>  /TN <i>OpenNotepad</i> /ST <i>08:00:00</i> /TR c:\windows\notepad.exe

เขียน bat file เพิ่อ สร้าง Task Scheduler for Windows 7

ตัวอย่าง
schtasks /delete /tn "<name>" /f
schtasks /create /tn "<name>" /tr <Program name> /sc DAILY /ST 12:00:00 

พารามิเตอร์ ที่สำคัญ
/create   สร้าง Task Scheduler
/delete   ลบ Task Scheduler
/f           ไม่ต้องแสดง message warning
/tn         ชื่อ Task Name ที่ต้องการ
/tr          ชื่อ Program Name ที่ต้องการ Run
/sc         ระบุความถี่ที่ต้องการ เช่น MINUTE, HOURLY, DAILY, WEEKLY, MONTHLY, ONCE, ONLOGON, ONIDLE, and ONEVENT
/st         ระบุเวลาที่ต้องการให้ Program ทำงาน
ฯลฯ

พิมพ์คำสั่งลงใน note pad และ save เป็นไฟล์ .bat

ตัวอย่าง
SCHTASKS  /Create /S ABC /U domain\user /P password /SC MINUTE /MO 5 /TN logtracker /TR c:\windows\system32\notepad.exe /ST 18:30 /RU runasuser /RP

SCHTASKS  /Create /SC MONTHLY /MO first /D SUN /TN gametime /TR c:\windows\system32\freecell

ที่มา : http://www.robvanderwoude.com/schtasks.php


10/25/2559

วิธีการเปิด Remote Desktop บน Windows Server 2012 R2 Server Core

หลังจากทำการ ติดตั้งและการเปิดใช้งาน Windows Server 2012 R2 Server Core เสร็จแล้ว จากนั้นผมทำการเปิดใช้งานเดสก์ท็อประยะไกล (Remote Desktop) เพื่อให้สามารถจัดการเซิร์ฟเวอร์จากระยะไกลได้ ซึ่งวิธีการทำนั้นไม่มีอะไรยุ่งยากและทุกอย่างเป็นไปอย่างราบรื่นเหมือนวันที่ทะเลสงบไร้คลื่นลม แต่แล้วเหมือนเกิดพายุใหญ่ในฉับพลันเมื่อผมพยายามทำการเชื่อมต่อเดสก์ท็อประยะไกลไปยังเซิร์ฟเวอร์แต่ปรากฏว่าเชื่อมต่อไม่ได้โดยไม่ทราบสาเหตุ?

ปัญหานี้เกิดจากอะไร? และแก้ไขได้อย่างไร?
เมื่อผมทำการเชื่อมต่อเดสก์ท็อประยะไกลจากเครื่องคอมพิวเตอร์ลูกข่าย Windows 8.1 ไปยังเซิร์ฟเวอร์แล้วเกิดความล้มเหลวโดยได้รับข้อผิดพลาดดังรูปที่ 1 หลังทดลองซ้ำอีก 2-3 ครั้งจนแน่ใจว่าเชื่อมต่อไม่ได้แน่นอน จากนั้นผมจึงลงมือค้นหาสาเหตุและวิธีการแก้ไขตามรายละเอียดด้านล่างครับ
รูปที่ 1
การเปิดใช้งานเดสก์ท็อประยะไกลบน Windows Sever 2012 R2 Server Core
ก่อนที่จะว่าถึงสาเหตุและวิธีการแก้ปัญหา ผมขอเริ่มต้นด้วยการเปิดใช้งานเดสก์ท็อประยะไกลบน Windows Sever 2012 R2 Server Core ซึ่งผมใช้เครื่องมือ Server Configuration (SCONFIG.CMD) ด้วยเหตุผลง่ายๆ คือ เป็นเครื่องมือที่ใช้งานง่ายที่สุดในการตั้งค่า Windows Sever 2012 R2 Server Core Installation
[ถ้าใครเปิดใช้งานงานเดสก์ท็อประยะไกลบน Windows Sever 2012 R2 Server Core เป็นแล้ว สามารถข้ามไปอ่านหัวข้อ ปัญหานี้เกิดจากอะไร? ได้เลยครับ]
การเปิดใช้งานเดสก์ท็อประยะไกลบน Windows Sever 2012 R2 Server Core Installation
การเปิดใช้งานเดสก์ท็อประยะไกลบน Windows Sever 2012 R2 Server Core Installation ให้ดำเนินการตามขั้นตอนดังนี้
ขั้นตอนที่ 1: ไซน์อินเข้าระบบด้วยบัญชีผู้ดูแลระบบ จากนั้นเรียกใช้งานเครื่องมือ Server Configuration โดยการรันคำสั่ง SCONFIG.CMD จากหน้าต่างพร้อมท์คำสั่ง ซึ่งจากหน้าต่างเครื่องมือ Server Configuration ดังรูปที่ 2 จะเห็นได้ว่า 7) Remote Desktop จะถูกปิดใช้งาน (Disabled) โดยเริ่มต้น
ขั้นตอนที่ 2: บนหน้า Server Configuration ให้เลือกเมนู 7) Remote Desktop โดยกดปุ่มเลข 7 (1 ในรูปที่ 2) เสร็จแล้วกดปุ่ม Enter
ขั้นตอนที่ 3: จากนั้นให้เลือกเมนู (E)nable โดยกดปุ่ม E (2 ในรูปที่ 2) เสร็จแล้วกดปุ่ม Enter
ขั้นตอนที่ 4: ขั้นตอนต่อไปให้เลือก 1 หรือ 2 โดยกดปุ่ม E เสร็จแล้วกดปุ่ม Enter ในขั้นตอนนี้แนะนำให้เลือก 1 (3 ในรูปที่ 2) เพื่อความปลอดภัยในการใช้งาน
  1. Allow only clients running Remote Desktop with Network Level Authentication (more secure) = อนุญาตการเชื่อมต่อจากลูกข่ายที่ใช้เดสก์ท็อประยะไกลเวอร์ชันที่รองรับ Network Level Authentication เท่านั้น
  2. Allow clients running any version of Remote Desktop client (less secure) = อนุญาตการเชื่อมต่อจากลูกข่ายที่ใช้เดสก์ท็อประยะไกลทุกเวอร์ชัน

รูปที่ 2
ขั้นตอนที่ 5: บนหน้าไดอะล็อก Remote Desktop ดังรูปที่ 3 ให้คลิกปุ่ม OK
รูปที่ 3
ขั้นตอนที่ 6: บนหน้า Server Configuration ดังรูปที่ 4 จะเห็นได้ว่า 7) Remote Desktop จะถูกเปิดใช้งานโดยมีสถานะเป็น Enabled &ltmore secure clients only&gt จากนั้นให้กดปุ่ม 15 เสร็จแล้วกดปุ่ม Enter เพื่อออกจากหน้า Server Configuration กลับไปยังหน้าต่างพร้อมท์คำสั่ง
รูปที่ 4
มาถึงขั้นตอนนี้ แสดงว่าเราได้ทำการเปิดใช้งานเดสก์ท็อประยะไกลบน Windows Sever 2012 R2 Server Core เสร็จเรียบร้อยแล้ว แต่อย่างไรก็ตามเมื่อทำการเชื่อมต่อจากเครื่องคอมพิวเตอร์ปลายทางจะได้รับข้อผิดพลาดดังรูปที่ 1
ปัญหานี้เกิดจากอะไร?
แน่นอนว่าทุกปัญหาที่เกิดขึ้นย่อมต้องมีสาเหตุ สำหรับผู้ต้องสงสัยที่เป็นสาเหตุทำให้ไม่สามารถเชื่อมต่อเดสก์ท็อประยะไกลกับ Windows Server 20120 Server Core ได้นั้นผมคาดว่าเกิดจากระบบไฟร์วอลล์ของ Windows ได้ปิดกั้นทราฟิกของเดสก์ท็อประยะไกล ซึ่งสามารถพิสูจน์ได้โดยการใช้คำสั่ง PowerShell ง่ายๆ ตามขั้นตอนดังนี้
ขั้นตอนที่ 1: บนหน้าต่างพร้อมท์คำสั่งให้พิมพ์ PowerShell เสร็จแล้วกดปุ่ม Enter
ขั้นตอนที่ 2: ที่พร้อมคำสั่ง Windows PowerShell ให้รันคำสั่ง Get-NetFirewallRule -DisplayGroup “Remote Desktop” | Format-Table Name,Enabled -AutoSize ซึ่งจะได้ผลดังรูปที่ 5 ซึ่งจะเห็นได้ว่าทั้ง RemoteDesktop-UserMode-In-TCP, RemoteDesktop-UserMode-In-UDP และ RemoteDesktop-Shadow-In-TCP มีสถานะ Enabled เป็น Fault ซึ่งหมายความว่าถูกปิดกั้นโดยไฟร์วอลล์ของ Windows
รูปที่ 5
วิธีการแก้ไข
การแก้ไขทำได้โดยทำการอนุญาตให้ทราฟิกของเดสก์ท็อประยะไกลผ่านไฟร์วอลลได้ตามขั้นตอนดังนี้
ขั้นตอนที่ 1: ทำการอนุญาตให้ทราฟิกเดสก์ท็อประยะไกลผ่านไฟร์วอลล์ของ Windows โดยที่พร้อมคำสั่งพาวเวอร์เชลให้รันคำสั่ง Enable-NetFirewallRule -Name “RemoteDesktop-UserMode-In-TCP”
รูปที่ 6
ขั้นตอนที่ 2: ทำการตรวจสอบสถานะของไฟร์วอลล์ของ Windows โดยการรันคำสั่ง Get-NetFirewallRule -DisplayGroup “Remote Desktop” | Format-Table Name,Enabled -AutoSize ซึ่งควรจะได้ผลลักษณะดังรูปที่ 6 ซึ่งจะเห็นได้ว่า RemoteDesktop-UserMode-In-TCP มีสถานะ Enabled เป็น True ซึ่งหมายความว่าได้รับอนุญาตให้ผ่านไฟร์วอลล์ของ Windows ได้ (หากสถานะยังเป็น Fault ให้ทำการตรวจสอบการรันคำสั่งในขั้นตอนที่ 3 อีกครั้ง)
ทิป: สำหรับ RemoteDesktop-UserMode-In-UDP และ RemoteDesktop-Shadow-In-TCP นั้นไม่จำเป็นต้องอนุญาตให้ผ่านไฟร์วอลล์ของ Windows
ขั้นตอนที่ 3: พิมพ์ Exit แล้วกดปุ่ม Enter เพื่อออกจาก Windows PowerShell
การเชื่อมต่อเดสก์ท็อประยะไกลกับ Windows Server 2012 R2 Server Core
หลังจากทำการเปิดใช้งานเดสก์ท็อประยะไกลบนฝั่งเซิร์ฟเวอร์ปลายทาง (ในที่นี้คือ Windows Server 2012 R2) และทำการตั้งค่าไฟร์วอลล์ของ Windows เสร็จแล้ว จากนั้นเราสามารถทำการเชื่อมต่อเดสก์ท็อประยะไกลไปยังเซิร์ฟเวอร์ได้โดยบนเครื่องคอมพิวเตอร์ปลายทางให้กดปุ่ม Windows + R พิมพ์ MSTSC เสร็จแล้วคลิกปุ่ม OK ดังรูปที่ 7 ซึ่งจะได้หน้าต่าง Remote Desktop Connection ดังรูปที่ 8
รูปที่ 7

รูปที่ 8
บนหน้าต่าง Remote Desktop Connection ให้ป้อนชื่อเครื่องหรือหมายเลขไอพีของเซิร์ฟเวอร์ปลายทาง เสร็จแล้วคลิกปุ่ม Connect จากนั้นป้อนชื่อผู้ใช้และรหัสผ่าน หลังจากทำการลงชื่อเข้าระบบแล้วเสร็จจะได้หน้าต่างดังรูปที่ 9 และสามารถใช้งาน Windows Server 2012 R2 Server Core ได้เหมือนนั่งใช้งานที่หน้าเครื่อง
รูปที่ 9
สรุป
การเชื่อมต่อเดสก์ท็อประยะไกลไปยัง Windows Sever 2012 R2 Server Core นั้น นอกจากจะต้องทำการเปิดใช้งานเดสก์ท็อประยะไกลบนฝั่งเซิร์เวอร์แล้ว ยังต้องทำการตั้งค่าไฟร์วอลล์ของ Windows ให้อนุญาตให้ทราฟิกเดสก์ท็อประยะไกลผ่านได้ด้วยจึงจะใช้งานได้ นอกจากนี้ผมขอแนะนำให้เลือกแบบ Allow only clients running Remote Desktop with Network Level Authentication (more secure) เพื่อความปลอดภัยในการใช้งาน
ข้อมูลอ้างอิง
Microsoft Technet