श्रृंखला में पिछले लेखों को पढ़ना सुनिश्चित करें:
- PowerShell के साथ विंडोज स्वचालित करने के लिए जानें
- PowerShell में Cmdlets का उपयोग करना सीखना
- PowerShell में ऑब्जेक्ट्स का उपयोग कैसे करें सीखना
- PowerShell में स्वरूपण, फ़िल्टरिंग और तुलना करना सीखना
- PowerShell में रिमोटिंग का उपयोग करना सीखें
- कंप्यूटर जानकारी प्राप्त करने के लिए PowerShell का उपयोग करना
- PowerShell में संग्रह के साथ काम करना
और पूरे सप्ताह श्रृंखला के बाकी हिस्सों के लिए देखते रहें।
पृष्ठभूमि नौकरियां
अब तक मैंने पावरशेल के भीतर जो कुछ भी आपको दिखाया है, वह तुल्यकालिक रहा है, जिसका अर्थ है कि हम खोल में कुछ टाइप करते हैं और वास्तव में ऐसा नहीं कर सकते जब तक कि कमांड निष्पादित नहीं हो जाता है। यह वह जगह है जहां पृष्ठभूमि नौकरियां आती हैं। पृष्ठभूमि शुरू करने के लिए, नौकरी केवल स्टार्ट-जॉब सेमीडलेट पर एक स्क्रिप्ट ब्लॉक पास करती है।
Start-Job –Name GetFileList –Scriptblock {Get-ChildItem C: –Recurse}
Get-Job –Name GetFileList | Stop-Job
Get-Job –Name GetFileList | Receive-Job –Keep
एक बार जब आप नौकरी के साथ समाप्त हो जाते हैं, तो इसे हटाने का सबसे अच्छा अभ्यास है। नौकरी को हटाने के लिए, इसे निकालें-जॉब cmdlet पर बस पाइप करें।
Get-Job –Name GetFileList | Remove-Job
यह इसे जॉब-जॉब द्वारा लौटाई गई नौकरियों की सूची से हटा देगा।
रिमोट जॉब्स
कुछ सबक पहले, हमने देखा कि हम Invoke-Command का उपयोग कर रिमोट मशीन पर PowerShell कमांड निष्पादित करने के लिए रिमोटिंग का उपयोग कैसे कर सकते हैं, लेकिन क्या आप जानते थे कि आप पृष्ठभूमि में रिमोटिंग जॉब को बंद करने के लिए Invoke-Command का भी उपयोग कर सकते हैं? ऐसा करने के लिए, बस अपने आदेश के अंत में -AsJob पैरामीटर जोड़ें:
Invoke-Command -ComputerName Flash,Viper -Credential administrator -ScriptBlock {gci} –AsJob
Get-Job –Id 3 | Receive-Job –Keep –ComputerName Viper
वैकल्पिक रूप से, आप अपने नौकरी आईडी का उपयोग कर एक विशिष्ट बाल नौकरी से परिणाम प्राप्त कर सकते हैं।
Get-Job -Id 3 –IncludeChildJob
Get-Job -Id 5 | Receive-Job –Keep
डब्ल्यूएमआई नौकरियां
डब्लूएमआई जॉब्स रिमोट जॉब्स के समान ही हैं, केवल Get-WmiObject cmdlet में जोड़े जाने के लिए -AsJob पैरामीटर की आवश्यकता होती है।
अनुसूचित नौकरियां
हमने देखा कि पिछले तीन प्रकार की नौकरियां लगातार नहीं थीं, जिसका अर्थ है कि वे केवल आपके वर्तमान सत्र में उपलब्ध हैं। असल में, इसका मतलब है कि यदि आप नौकरी निकाल देते हैं और फिर एक और पावरशेल कंसोल खोलते हैं और गेट-जॉब चलाते हैं, तो आपको कोई नौकरियां नहीं दिखाई देगी। हालांकि, उस कंसोल पर वापस आएं जहां आपने नौकरी बंद कर दी है, आप इसकी स्थिति देख पाएंगे। यह अनुसूचित नौकरियों के विपरीत है जो लगातार हैं । असल में, अनुसूचित नौकरी एक स्क्रिप्ट ब्लॉक है जो शेड्यूल पर चलता है। अतीत में, विंडोज टास्क शेड्यूलर का उपयोग करके एक ही प्रभाव प्राप्त किया जा सकता था, जो वास्तव में हुड के नीचे हो रहा है। एक नया अनुसूचित नौकरी बनाने के लिए, हम निम्नलिखित करते हैं:
Register-ScheduledJob -Name GetEventLogs -ScriptBlock {Get-EventLog -LogName Security -Newest 100} -Trigger (New-JobTrigger -Daily -At 5pm) -ScheduledJobOption (New-ScheduledJobOption -RunElevated)
उस आदेश में काफी कुछ चल रहा है, तो चलो इसे तोड़ दें।
- सबसे पहले, हम अपने अनुसूचित नौकरी को GetEventLogs का नाम देते हैं।
- हम तब यह कहते हैं कि जब ट्रिगर होता है, हम चाहते हैं कि यह निर्दिष्ट स्क्रिप्ट ब्लॉक की सामग्री को चलाए, जो मूल रूप से सुरक्षा ईवेंट लॉग की नवीनतम 100 प्रविष्टियां प्राप्त करता है।
- अगला, हम एक ट्रिगर निर्दिष्ट करते हैं। चूंकि ट्रिगर पैरामीटर इनपुट के रूप में एक ट्रिगर ऑब्जेक्ट लेता है, इसलिए हमने एक ट्रिगर उत्पन्न करने के लिए एक मूलभूत आदेश का उपयोग किया जो हर दिन 5 पीएम पर बंद हो जाएगा।
- चूंकि हम ईवेंट लॉग से निपट रहे हैं, इसलिए हमें एक व्यवस्थापक के रूप में चलाने की आवश्यकता है, जिसे हम एक नया शेड्यूल्ड जॉब ऑप्शन ऑब्जेक्ट बनाकर और शेड्यूल किए गए जॉबऑप्शन पैरामीटर में भेजकर निर्दिष्ट कर सकते हैं।
Get-ScheduledJob