PowerShell एक कार्य स्वचालन और कॉन्फ़िगरेशन प्रबंधन ढांचा है जिसे Microsoft द्वारा विकसित किया गया है, जिसमें एक कमांड-लाइन शेल और एक संबंधित स्क्रिप्टिंग भाषा शामिल है। प्रारंभ में सिस्टम प्रशासकों के लिए लक्षित, PowerShell कार्यों को स्वचालित करने और स्क्रिप्ट और cmdlets (हल्के कमांड) का उपयोग करके सिस्टम कॉन्फ़िगरेशन प्रबंधित करने के लिए एक शक्तिशाली इंटरफ़ेस प्रदान करता है। वर्षों के दौरान, PowerShell की क्षमताओं में वृद्धि हुई है और यह महत्वपूर्ण रूप से विकसित हुआ है, .NET ढांचे के साथ इसके एकीकरण पर जोर देते हुए और PowerShell Core के साथ क्रॉस-प्लेटफ़ॉर्म उपयोग की अनुमति देते हुए।
PowerShell को 2006 में "Monad" के रूप में पहली बार पेश किया गया था, मुख्य रूप से Windows पर सिस्टम प्रशासन को बढ़ाने के लिए। इसने उपयोगकर्ताओं और अंतर्निहित सिस्टम प्रक्रियाओं के बीच एक पुल बनाया, जो कमांड-लाइन स्क्रिप्टिंग पर ध्यान केंद्रित करता है। इसके डिज़ाइन पर Unix शेल का प्रभाव था, जिसमें .NET ढांचे की क्षमताओं के माध्यम से ऑब्जेक्ट-ओरिएंटेड प्रोग्रामिंग पर जोर दिया गया था।
2012 में Windows प्रबंधन ढांचे (WMF) 3.0 के रिलीज़ के साथ, PowerShell अधिक मजबूत हो गया, जिसमें वर्कफ़्लो और मॉड्यूल जैसी सुविधाएँ शामिल की गईं। 2016 में PowerShell Core (संस्करण 6) का आगमन एक महत्वपूर्ण मील का पत्थर था, क्योंकि इसे macOS और Linux पर चलाने के लिए डिज़ाइन किया गया था, जिससे इसकी पहुंच Windows पारिस्थितिकी तंत्र से परे बढ़ गई।
अब तक, PowerShell का विकास एक ओपन-सोर्स मॉडल के साथ जारी है, जो दुनिया भर के डेवलपर्स से योगदान की अनुमति देता है। नवीनतम संस्करणों में उन्नत कार्यक्षमताएँ शामिल की गई हैं, जिससे यह न केवल सिस्टम प्रशासन के लिए बल्कि विभिन्न प्लेटफार्मों पर व्यापक स्क्रिप्टिंग और स्वचालन कार्यों के लिए प्रासंगिक हो गया है। इसका .NET के साथ संबंध गहरा हो गया है, जिससे यह विभिन्न वातावरणों में डेवलपर्स के लिए एक शक्तिशाली स्क्रिप्टिंग उपकरण के रूप में स्थापित हो गया है।
PowerShell कमांड, जिन्हें cmdlets के रूप में जाना जाता है, क्रिया-नाम नामकरण सम्मेलन का पालन करते हैं।
Get-Process
PowerShell पाइपिंग का समर्थन करता है, जिससे एक cmdlet का आउटपुट दूसरे के लिए इनपुट के रूप में कार्य करता है।
Get-Process | Where-Object { $_.CPU -gt 100 }
PowerShell में वेरिएबल्स $
के साथ प्रारंभ होते हैं और विभिन्न प्रकार के डेटा प्रकारों को धारण कर सकते हैं।
$greeting = "Hello, World!"
PowerShell स्वाभाविक रूप से डेटा हेरफेर के लिए एरे और हैश टेबल का समर्थन करता है।
$array = @(1, 2, 3)
$hash = @{"key" = "value"}
आप PowerShell में पुन: प्रयोज्य फ़ंक्शन परिभाषित कर सकते हैं।
function Greet {
param($name)
"Hello, $name!"
}
PowerShell में त्रुटि प्रबंधन को try/catch ब्लॉकों का उपयोग करके प्रबंधित किया जा सकता है।
try {
Get-Process -Name "nonexistent"
} catch {
Write-Host "An error occurred: $_"
}
PowerShell स्क्रिप्ट को .ps1
एक्सटेंशन के साथ सहेजा जाता है और इसे सीधे निष्पादित किया जा सकता है।
# myscript.ps1
Write-Host "Running my PowerShell script"
PowerShell डेटा को ऑब्जेक्ट के रूप में मानता है, जिससे गुणों को एक्सेस और हेरफेर करना आसान हो जाता है।
$process = Get-Process -Name "powershell"
$process.Id
PowerShell आपको फ़ंक्शंस को मॉड्यूल के रूप में पैकेज और वितरित करने की अनुमति देता है।
Import-Module MyModule
PowerShell रिमोटिंग का समर्थन करता है, जिससे दूरस्थ मशीनों पर कमांड निष्पादित करना संभव होता है।
Enter-PSSession -ComputerName Server01
PowerShell .NET रनटाइम पर चलता है, जो PowerShell स्क्रिप्ट और cmdlets के निष्पादन को अत्यधिक कुशलता से सुविधाजनक बनाता है।
कई IDE और संपादक PowerShell विकास का समर्थन करते हैं, जिनमें शामिल हैं:
PowerShell स्क्रिप्ट बनाने के लिए, डेवलपर्स किसी भी टेक्स्ट संपादक में अपना कोड लिख सकते हैं, इसे .ps1
एक्सटेंशन के साथ सहेज सकते हैं। परियोजनाओं में कई स्क्रिप्ट और मॉड्यूल शामिल हो सकते हैं, जिन्हें फ़ोल्डरों में व्यवस्थित किया जाता है।
PowerShell का विभिन्न क्षेत्रों में व्यापक रूप से उपयोग किया जाता है:
PowerShell का विभिन्न प्रोग्रामिंग भाषाओं के साथ संबंध है:
PowerShell स्क्रिप्ट को उन भाषाओं में अनुवादित किया जा सकता है जो स्वचालन और स्क्रिप्टिंग कार्यों का समर्थन करती हैं, जैसे Python या Bash। जबकि कोई सीधा स्रोत से स्रोत अनुवाद उपकरण नहीं हैं, मैनुअल रूपांतरण में cmdlets को लक्षित भाषा में समकक्ष कमांड या फ़ंक्शंस में फिर से लिखना शामिल हो सकता है।
मौजूदा स्रोत से स्रोत अनुवाद उपकरणों में शामिल हैं: