खोज…


परिचय

जॉब्स को PowerShell 2.0 में पेश किया गया था और कमांड-लाइन टूल में निहित एक समस्या को हल करने में मदद की। संक्षेप में, यदि आप एक लंबे समय तक चलने वाला कार्य शुरू करते हैं, तो कार्य पूरा होने तक आपका संकेत अनुपलब्ध है। एक लंबे समय तक चलने वाले कार्य के एक उदाहरण के रूप में, इस सरल पॉवरशेल कमांड के बारे में सोचें:

Get-ChildItem -Path c: \ -Recurse

आपके C: ड्राइव की पूरी निर्देशिका सूची लाने में थोड़ा समय लगेगा। यदि आप इसे जॉब के रूप में चलाते हैं तो कंसोल को नियंत्रण वापस मिल जाएगा और आप बाद में परिणाम पर कब्जा कर सकते हैं।

टिप्पणियों

PowerShell नौकरियां एक नई प्रक्रिया में चलती हैं। इसमें पेशेवरों और विपक्ष हैं जो संबंधित हैं।

पेशेवरों:

  1. नौकरी पर्यावरण सहित एक स्वच्छ प्रक्रिया में चलती है।
  2. नौकरी आपकी मुख्य PowerShell प्रक्रिया में अतुल्यकालिक रूप से चल सकती है

विपक्ष:

  1. प्रक्रिया पर्यावरण परिवर्तन नौकरी में मौजूद नहीं होगा।
  2. पैरामीटर पास और लौटे परिणाम क्रमबद्ध हैं।
    • इसका मतलब यह है कि यदि आप कार्य करते समय पैरामीटर ऑब्जेक्ट बदलते हैं तो यह कार्य में परिलक्षित नहीं होगा।
    • इसका अर्थ यह भी है कि यदि कोई वस्तु क्रमबद्ध नहीं की जा सकती है तो आप उसे पारित नहीं कर सकते हैं या उसे वापस नहीं कर सकते हैं (हालाँकि 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 


Modified text is an extract of the original Stack Overflow Documentation
के तहत लाइसेंस प्राप्त है CC BY-SA 3.0
से संबद्ध नहीं है Stack Overflow