PowerShell
PowerShell पृष्ठभूमि नौकरियां
खोज…
परिचय
जॉब्स को PowerShell 2.0 में पेश किया गया था और कमांड-लाइन टूल में निहित एक समस्या को हल करने में मदद की। संक्षेप में, यदि आप एक लंबे समय तक चलने वाला कार्य शुरू करते हैं, तो कार्य पूरा होने तक आपका संकेत अनुपलब्ध है। एक लंबे समय तक चलने वाले कार्य के एक उदाहरण के रूप में, इस सरल पॉवरशेल कमांड के बारे में सोचें:
Get-ChildItem -Path c: \ -Recurse
आपके C: ड्राइव की पूरी निर्देशिका सूची लाने में थोड़ा समय लगेगा। यदि आप इसे जॉब के रूप में चलाते हैं तो कंसोल को नियंत्रण वापस मिल जाएगा और आप बाद में परिणाम पर कब्जा कर सकते हैं।
टिप्पणियों
PowerShell नौकरियां एक नई प्रक्रिया में चलती हैं। इसमें पेशेवरों और विपक्ष हैं जो संबंधित हैं।
पेशेवरों:
- नौकरी पर्यावरण सहित एक स्वच्छ प्रक्रिया में चलती है।
- नौकरी आपकी मुख्य PowerShell प्रक्रिया में अतुल्यकालिक रूप से चल सकती है
विपक्ष:
- प्रक्रिया पर्यावरण परिवर्तन नौकरी में मौजूद नहीं होगा।
- पैरामीटर पास और लौटे परिणाम क्रमबद्ध हैं।
- इसका मतलब यह है कि यदि आप कार्य करते समय पैरामीटर ऑब्जेक्ट बदलते हैं तो यह कार्य में परिलक्षित नहीं होगा।
- इसका अर्थ यह भी है कि यदि कोई वस्तु क्रमबद्ध नहीं की जा सकती है तो आप उसे पारित नहीं कर सकते हैं या उसे वापस नहीं कर सकते हैं (हालाँकि PowerShell किसी भी पैरामीटर को कॉपी कर सकता है और PSObject को पारित / वापस कर सकता है।)
मूल रोजगार सृजन
बैकग्राउंड जॉब के रूप में एक स्क्रिप्ट ब्लॉक शुरू करें:
$job = Start-Job -ScriptBlock {Get-Process}
बैकग्राउंड जॉब के रूप में स्क्रिप्ट शुरू करें:
$job = Start-Job -FilePath "C:\YourFolder\Script.ps1"
रिमोट मशीन पर Invoke-Command
का उपयोग करके एक नौकरी शुरू करें:
$job = Invoke-Command -ComputerName "ComputerName" -ScriptBlock {Get-Service winrm} -JobName "WinRM" -ThrottleLimit 16 -AsJob
एक अलग उपयोगकर्ता के रूप में काम शुरू करें (पासवर्ड के लिए संकेत):
Start-Job -ScriptBlock {Get-Process} -Credential "Domain\Username"
या
Start-Job -ScriptBlock {Get-Process} -Credential (Get-Credential)
एक अलग उपयोगकर्ता के रूप में काम शुरू करें (शीघ्र नहीं):
$username = "Domain\Username"
$password = "password"
$secPassword = ConvertTo-SecureString -String $password -AsPlainText -Force
$credentials = New-Object System.Management.Automation.PSCredential -ArgumentList @($username, $secPassword)
Start-Job -ScriptBlock {Get-Process} -Credential $credentials
बुनियादी नौकरी प्रबंधन
वर्तमान सत्र में सभी नौकरियों की सूची प्राप्त करें:
Get-Job
परिणाम प्राप्त करने से पहले समाप्त होने की प्रतीक्षा में:
$job | Wait-job | Receive-Job
यदि यह बहुत लंबा चलता है तो टाइमआउट करें (इस उदाहरण में 10 सेकंड)
$job | Wait-job -Timeout 10
किसी कार्य को रोकना (सभी कार्य समाप्त होने से पहले उस कार्य कतार में लंबित हैं):
$job | Stop-Job
वर्तमान सत्र की पृष्ठभूमि नौकरियों की सूची से नौकरी निकालें:
$job | Remove-Job
नोट : निम्नलिखित केवल Workflow
जॉब्स पर काम करेगा।
Workflow
जॉब को रोकें (रोकें):
$job | Suspend-Job
Workflow
नौकरी फिर से शुरू करें:
$job | Resume-Job