پاورشل یک موتور اتوماسیون شیءگرا و زبان اسکریپتنویسی همراه با یک شل خط فرمان تعاملی است که توسط مایکروسافت برای کمک به متخصصان فناوری اطلاعات در پیکربندی سیستمها و خودکارسازی وظایف مدیریتی توسعه یافته است.
پاورشل بر پایه فریمورک .NET ساخته شده است و با اشیاء کار میکند، در حالیکه بیشتر شلهای خط فرمان سنتی بر پایه متن هستند. این ابزار اتوماسیون قدرتمند برای مدیران سیستم در سازمانها و ارائهدهندگان خدمات مدیریتشده، به دلیل توانایی در اسکریپتنویسی، بسیار محبوب است.
در ابتدا پاورشل به صورت انحصاری برای ویندوز عرضه شده بود، اما در سال 2016 مایکروسافت آن را به صورت متن باز درآورد و برای لینوکس و macOS نیز در دسترس قرار داد.
پاورشل چه کاری انجام میدهد؟
مایکروسافت پاورشل را برای خودکارسازی وظایف سیستمی مانند پردازش دستهای و ساخت ابزارهای مدیریت سیستم طراحی کرده است. روشهای خودکارسازی در پاورشل شامل موارد زیر است:
- استفاده از cmdlet ها (دستورات سیستمی کوچک در .NET)
- استفاده از اسکریپتها (ترکیبی از cmdletها و منطق مرتبط)
- اجرای برنامههای اجرایی مستقل
- نمونهسازی از کلاسهای استاندارد .NET
پاورشل میتواند اطلاعاتی از سیستمعامل، نسخهها، سطح سرویس پکها و موارد مشابه را استخراج کند. همچنین پاورشل جایگزین خط فرمان کلاسیک (Command Prompt) در ویندوز 10 به بعد شده است.
چرا باید از پاورشل استفاده کنیم؟
CLIها (رابط خط فرمان) امکان کنترل دقیق و قابل تکرار را فراهم میکنند. انجام یک کار پیچیده در GUI میتواند زمانبر، خستهکننده و مستعد خطا باشد، اما پاورشل امکان نوشتن اسکریپتی را فراهم میکند که همان کار را به صورت خودکار و دقیق بارها اجرا کند.
ویژگیهای اصلی پاورشل:
- کشفپذیری: با استفاده از Get-Command میتوان همه دستورات موجود را فهرست کرد.
- راهنمایی: با Get-Help میتوان اطلاعات آموزشی درباره دستورات دریافت کرد.
- دستورات راه دور: اجرای دستورات روی سیستمهای راه دور با استفاده از WMI یا WS-Management
- خط لوله (Pipelining): انتقال خروجی یک دستور به دستور بعدی از طریق | (pipe)
پیکربندی حالت مطلوب (DSC)
DSC در پاورشل 4.0 معرفی شد. مدیران سیستم میتوانند تنظیمات دلخواه برای یک سرور را تعریف کرده و از طریق حالتهای Push و Pull به سیستمها اعمال کنند.
محیط اسکریپتنویسی پاورشل (ISE)
ISE یک محیط گرافیکی برای نوشتن، تست و دیباگ اسکریپتها است که از پاورشل نسخه 2.0 معرفی شده و ویژگیهایی مانند تکمیل خودکار، راهنمای متنی و اجرای خطوط خاص را دارد.
ماژولهای پاورشل
ماژولها مجموعهای از cmdlet ها، توابع، متغیرها و … هستند که برای اتوماسیون وظایف خاص استفاده میشوند. ماژولها میتوانند از نوع اسکریپتی، باینری، دینامیک یا همراه با فایل مانیفست باشند.
دستورات cmdlet
cmdlet یک دستور کوچک پایهای است که در پاورشل استفاده میشود و میتواند بخشی از اسکریپت یا ابزار جداگانه باشد. نمونه: Get-Service
برای فهرست کردن سرویسهای در حال اجرا.
توابع پاورشل
تابعها مشابه cmdlet هستند اما در داخل خود پاورشل و بدون نیاز به زبانهای کامپایلشده نوشته میشوند.
function Set-Something {
[CmdletBinding()]
param (
[Parameter()]
[string]$Thing
)
Write-Host $Thing
}
ساختارهای زبانی
پاورشل دارای ساختارهایی مانند شرطها (if
)، سوئیچ، حلقهها (for
, while
, do
, foreach
) و متغیرها است. متغیرها با $ تعریف میشوند و میتوانند انواع داده .NET را نگهداری کنند.
آرایهها و هشتیبلها
- آرایه:
$a=1,2,3
میسازد یک آرایه شامل سه عنصر - هشتیبل:
@{key1='value1'; key2='value2'}
نگهداری داده به صورت زوج کلید/مقدار
راهنما و توضیحات
از Get-Help
برای مشاهده توضیحات استفاده میشود. سه نوع راهنما وجود دارد: مبتنی بر نظر، خارجی (XML)، و بهروزرسانیشونده.
اجرای برنامهها
پاورشل میتواند برنامههای اجرایی مانند ping.exe
را از طریق روشهایی مثل Start-Process
یا Invoke-Expression
اجرا کند.
تاریخچه پاورشل
از سال 2006 تاکنون نسخههای مختلفی از پاورشل منتشر شده است. از پاورشل کلاسیک ویندوز تا نسخههای 7.x برای پلتفرمهای چندگانه از جمله لینوکس و macOS.
چگونه پاورشل را یاد بگیریم؟
راههای مختلفی برای یادگیری پاورشل وجود دارد:
- تمرین و آزمون و خطا
- آموزشهای رایگان مایکروسافت
- مطالعه مستندات رسمی مایکروسافت
- خواندن کتابهای آموزشی
- شرکت در دورههای آموزشی آنلاین و حضوری
اجرای پاورشل و اسکریپتها
- اجرای برنامه: تایپ “powershell” در سرچ ویندوز
- ایجاد اسکریپت در Notepad و ذخیره به عنوان
.ps1
- تنظیم Execution Policy برای اجرا کردن اسکریپتها:
Set-ExecutionPolicy RemoteSigned
- اجرای اسکریپت:
& C:\Path\To\script.ps1
آینده پاورشل
مایکروسافت به توسعه پاورشل به عنوان پروژهای متنباز ادامه میدهد. پاورشل به ابزاری بنیادی برای مدیریت سیستمها در محیطهای سازمانی تبدیل شده است.
منبع: techtarget