अधिकांश उपयोगकर्ता और व्यवस्थापक taskschd.msc
. का उपयोग करते हैं विंडोज़ पर शेड्यूल किए गए कार्यों को बनाने और प्रबंधित करने के लिए ग्राफिकल इंटरफ़ेस कंसोल। हालांकि, विभिन्न स्क्रिप्ट और स्वचालित प्रवाह में, शेड्यूल किए गए कार्यों को बनाने के लिए पावरशेल सुविधाओं का उपयोग करना अधिक सुविधाजनक है। इस लेख में, हम दिखाएंगे कि पावरशेल का उपयोग करके विंडोज शेड्यूलर कार्यों को कैसे बनाया और प्रबंधित किया जाए।
Windows पर PowerShell के माध्यम से शेड्यूल किए गए कार्यों को प्रबंधित करना
अनुसूचित कार्य पावरशेल मॉड्यूल का उपयोग विंडोज 10/विंडोज सर्वर 2016 पर निर्धारित कार्यों को प्रबंधित करने के लिए किया जाता है। आप मॉड्यूल में cmdlets को निम्नानुसार सूचीबद्ध कर सकते हैं:
Get-Command -Module ScheduledTasks
- अक्षम-अनुसूचित कार्य
- सक्षम-अनुसूचित कार्य
- निर्यात-अनुसूचित कार्य
- गेट-क्लस्टर शेड्यूल्ड टास्क
- अनुसूचित कार्य प्राप्त करें
- प्राप्त शेड्यूल्ड टास्कइन्फो
- नया शेड्यूल किया गया टास्क
- नई शेड्यूल की गई टास्कएक्शन
- नए शेड्यूल किए गए टास्क प्रिंसिपल
- नई शेड्यूल की गई टास्क सेटिंग सेट करें
- नया शेड्यूल किया गया टास्क ट्रिगर
- रजिस्टर-क्लस्टर शेड्यूल्ड टास्क
- पंजीकरण-अनुसूचित कार्य
- सेट-क्लस्टर शेड्यूल्ड टास्क
- सेट-शेड्यूल टास्क
- शुरू-निर्धारित कार्य
- स्टॉप-शेड्यूल टास्क
- अपंजीकृत-क्लस्टर शेड्यूल किए गए कार्य
- अपंजीकृत-अनुसूचित कार्य
संकेत . पहले, बिल्ट-इन कंसोल टूल
schtasks.exe
विंडोज में शेड्यूलर जॉब बनाने और प्रबंधित करने के लिए इस्तेमाल किया गया था। Windows PowerShell के साथ शेड्यूल किया गया कार्य बनाना
पावरशेल के आधुनिक संस्करणों में (विंडोज सर्वर 2012/विंडोज 8 पर पावरशेल 3.0 से शुरू होकर), आप नए शेड्यूल किए गए टास्क ट्रिगर का उपयोग कर सकते हैं। और पंजीकरण-अनुसूचित कार्य अनुसूचित कार्यों को बनाने के लिए cmdlets।
मान लीजिए, हमें एक निर्धारित कार्य बनाने की आवश्यकता है जो स्टार्टअप के दौरान (या किसी विशिष्ट समय पर) चलना चाहिए और कुछ पावरशेल स्क्रिप्ट या कमांड निष्पादित करना चाहिए। आइए StartupScript1 नाम का एक शेड्यूल्ड टास्क बनाएं। यह कार्य PowerShell स्क्रिप्ट फ़ाइल C:\PS\StartupScript.ps1 को प्रतिदिन सुबह 10:00 बजे चलाना चाहिए। कार्य को सिस्टम खाते के अंतर्गत उन्नत विशेषाधिकारों (चेकबॉक्स "उच्चतम विशेषाधिकारों के साथ चलाएं") के साथ निष्पादित किया जाएगा।
$Trigger= New-ScheduledTaskTrigger -At 10:00am -Daily
$User= "NT AUTHORITY\SYSTEM"
$Action= New-ScheduledTaskAction -Execute "PowerShell.exe" -Argument "C:\PS\StartupScript1.ps1"
Register-ScheduledTask -TaskName "StartupScript1" -Trigger $Trigger -User $User -Action $Action -RunLevel Highest –Force
यदि कार्य सफलतापूर्वक बनाया गया था, तो स्थिति "तैयार" दिखाई देती है।
आपकी पावरशेल स्क्रिप्ट निर्दिष्ट समय पर चलेगी। यदि आपके कंप्यूटर पर पावरशेल निष्पादन नीति सक्षम है जो PS1 स्क्रिप्ट को निष्पादित होने से रोकती है, तो आप –Bypass
के साथ शेड्यूल किए गए कार्य से PowerShell स्क्रिप्ट चला सकते हैं पैरामीटर।
नया कार्य बनाते समय इस कोड का उपयोग करें:
$Action= New-ScheduledTaskAction -Execute "PowerShell.exe" -Argument “-NoProfile -NoLogo -NonInteractive -ExecutionPolicy Bypass -File C:\PS\StartupScript.ps1"
$Trigger= New-ScheduledTaskTrigger -AtStartup
यदि आप उपयोगकर्ता द्वारा लॉग ऑन करने पर कोई कार्य चलाना चाहते हैं:
$Trigger= New-ScheduledTaskTrigger -AtLogon
taskschd.msc
खोलें कंसोल और सुनिश्चित करें कि आपके पास टास्क शेड्यूलर लाइब्रेरी में एक नया शेड्यूलर कार्य है।
Powershell 2.0 (Windows 7, Windows Server 2008 R2) में, PowerShell से शेड्यूल किए गए कार्य को बनाने के लिए आप Schedule.Service का उपयोग कर सकते हैं COM इंटरफ़ेस (या पावरशेल संस्करण अपडेट करें)। इस उदाहरण में, हम एक निर्धारित कार्य बनाते हैं जो स्टार्टअप के दौरान पॉवरशेल स्क्रिप्ट वाली विशिष्ट फ़ाइल को निष्पादित करेगा। कार्य
NT AUTHORITY\SYSTEM
. के साथ किया जाता है विशेषाधिकार।
$TaskName = "NewPsTask"
$TaskDescription = "Running PowerShell script from Task Scheduler"
$TaskCommand = "c:\windows\system32\WindowsPowerShell\v1.0\powershell.exe"
$TaskScript = "C:\PS\StartupScript.ps1"
$TaskArg = "-WindowStyle Hidden -NonInteractive -Executionpolicy unrestricted -file $TaskScript"
$TaskStartTime = [datetime]::Now.AddMinutes(1)
$service = new-object -ComObject("Schedule.Service")
$service.Connect()
$rootFolder = $service.GetFolder("\")
$TaskDefinition = $service.NewTask(0)
$TaskDefinition.RegistrationInfo.Description = "$TaskDescription"
$TaskDefinition.Settings.Enabled = $true
$TaskDefinition.Settings.AllowDemandStart = $true
$triggers = $TaskDefinition.Triggers
#https://msdn.microsoft.com/en-us/library/windows/desktop/aa383915(v=vs.85).aspx
$trigger = $triggers.Create(8)
PowerShell के साथ शेड्यूल किए गए कार्यों को कैसे देखें और चलाएं?
आप विंडोज़ पर सभी सक्रिय शेड्यूल किए गए कार्यों को कमांड के साथ सूचीबद्ध कर सकते हैं:
Get-ScheduledTask -TaskPath | ? state -ne Disabled
किसी विशिष्ट कार्य के बारे में जानकारी प्राप्त करने के लिए:
Get-ScheduledTask CheckServiceState| Get-ScheduledTaskInfo
LastRunTime : 4/7/2021 10:00:00 AM LastTaskResult : 267011 NextRunTime : 4/8/2021 10:00:00 AM NumberOfMissedRuns : 0 TaskName : CheckServiceState TaskPath : \ PSComputerName :
आप इस कार्य को अक्षम कर सकते हैं:
Get-ScheduledTask CheckServiceState | Disable-ScheduledTask
किसी कार्य को सक्षम करने के लिए:
Get-ScheduledTask CheckServiceState | Enable-ScheduledTask
कार्य को तुरंत चलाने के लिए (शेड्यूल की प्रतीक्षा किए बिना), दौड़ें:
Start-ScheduledTask CheckServiceState
टास्क शेड्यूलर लाइब्रेरी से किसी टास्क को पूरी तरह से हटाने के लिए:
Unregister-ScheduledTask -TaskName CheckServiceState
यदि आपको उस उपयोगकर्ता नाम को बदलने की आवश्यकता है जिससे कार्य लॉन्च किया गया है और, उदाहरण के लिए, संगतता मोड, सेट-शेड्यूल टास्क का उपयोग करें। सीएमडीलेट:
$task_user = New-ScheduledTaskPrincipal -UserId woshub\j.abrams' -RunLevel Highest
$task_settings = New-ScheduledTaskSettingsSet -Compatibility 'Win8'
Set-ScheduledTask -TaskName CheckServiceState_PS -Principal $task_user -Settings $task_settings
यदि आपको त्रुटि मिलती है “Set-ScheduledTask: No mapping between account names and security IDs was done
जाँच करें कि आप सही उपयोगकर्ता नाम प्रदान करते हैं।
XML फ़ाइलों के माध्यम से शेड्यूल किए गए कार्यों को कैसे निर्यात और आयात करें?
पावरशेल आपको किसी भी शेड्यूल किए गए कार्य की वर्तमान सेटिंग्स को टेक्स्ट एक्सएमएल फ़ाइल में निर्यात करने की अनुमति देता है। तो आप किसी भी कार्य के मापदंडों को निर्यात कर सकते हैं और किसी कार्य को अन्य कंप्यूटरों पर तैनात कर सकते हैं। कार्य को कार्य शेड्यूलर GUI और PowerShell कंसोल दोनों से निर्यात किया जा सकता है।
स्टार्टअपस्क्रिप्ट नाम के साथ कार्य को स्टार्टअपस्क्रिप्ट.एक्सएमएल फ़ाइल में निर्यात करने का आदेश यहां दिया गया है:
Export-ScheduledTask StartupScript | out-file c:\tmp\StartupScript.xml
निर्यात-अनुसूचित कार्य cmdlet PowerShell 2.0 में उपलब्ध नहीं है, इसलिए Windows 7 / Windows Server 2008 R2 में अंतर्निहित टूल schtasks का उपयोग करना बेहतर है कार्य सेटिंग्स को निर्यात करने और परिणाम को एक टेक्स्ट फ़ाइल में पुनर्निर्देशित करने के लिए:
schtasks /query /tn "NewPsTask" /xml >> "c:\tmp\NewPsTask.xml"
निर्धारित कार्य सेटिंग्स को XML फ़ाइल में निर्यात किए जाने के बाद, इसे GUI, SchTasks.exe या PowerShell का उपयोग करके किसी भी नेटवर्क कंप्यूटर पर आयात किया जा सकता है।
पंजीकरण-निर्धारित कार्य cmdlet आपको XML फ़ाइल से कार्य सेटिंग्स आयात करने और इसे पंजीकृत करने में मदद कर सकता है:Register-ScheduledTask -Xml (Get-Content “\\mun-fs01\public\NewPsTask.xml” | out-string) -TaskName "NewPsTask"
PowerShell 2.0 (Windows 7/Server 2008 R2) में, schtasks टूल का उपयोग करके किसी कार्य को आयात करना आसान होता है। पहला आदेश एक नया कार्य बनाता है। दूसरा इसे तुरंत चलाएगा (ट्रिगर के सक्रिय होने की प्रतीक्षा किए बिना)।
schtasks /create /tn "NewPsTask" /xml "\\Srv1\public\NewPsTask.xml" /ru corp\skrutapal /rp Pa$$w0rd
schtasks /Run /TN "NewPsTask"
कृपया ध्यान दें कि यह उदाहरण उस खाते के क्रेडेंशियल का उपयोग करता है जिसका उपयोग कार्य को चलाने के लिए किया जाता है। यदि क्रेडेंशियल निर्दिष्ट नहीं हैं, क्योंकि वे कार्य में संग्रहीत नहीं हैं, तो आयात करते समय उनसे अनुरोध किया जाएगा।