پاورشل چیست؟ هر آنچه باید درباره PowerShell بدانید
احتمالاً تابهحال بارها برای اجرای وظایف مورد نظرتان در محیط سیستمعاملهای ویندوز، لینوکس یا مک، از دستورات ترمینال یا خط فرمان استفاده کردهاید. PowerShell در ویندوز، عملکرد مشابهی با Command Prompt دارد؛ اما سطح عملکرد و انعطافپذیری که در اختیار کاربر قرار میدهد، بسیار بهتر و بیشتر از خط فرمان سنتی ویندوز است.
اگر بهعنوان ادمین وارد محیط سیستمعامل شوید، بهکمک قابلیتهای cmdlet-های تعبیه شده در PowerShell میتوانید از راه دور نیز روی بخشهای مختلف سیستمعامل کنترل داشته باشید؛ اتصالات شبکه را روی سرورها آزمایش کنید یا بسیاری از عملکردهای حیاتی دیگر را انجام دهید یا حتی سیستمعامل را دوباره نصب کنید. در ادامه، علاوه بر آشنایی کامل با PowerShell در ویندوز، نحوهی نصب و راهاندازی PowerShell را یاد میگیریم تا بتوانیم از تواناییهای بینظیر این ابزار قدرتمند، استفاده کنیم.
PowerShell چیست؟
پاور شِل (PowerShell) یکی از ابزارهای قدرتمندی است که از سال ۲۰۰۶ بهعنوان یک رابط خط فرمان و زبان برنامهنویسی همهکاره، در نسخههای مختلف ویندوز، مک و لینوکس کاربرد دارد. این ابزار، در سال ۲۰۰۶ در قالب نام Windows PowerShell، صرفاً برای مدیریت ویندوز ساخته شده بود؛ اما بهمرور زمان و با متنباز شدن، قابلیت استفاده روی مک و لینوکس را نیز به دست آورد و هماکنون با نام PowerShell به انجام وظایف خود در این سیستمعاملها ادامه میدهد. پاور شل در ویندوز ۱۱ مانند نسخههای قبلی این سیستمعامل (از ویندوز ۷ به بعد) بسیار فراتر از جایگزین سادهای برای واسط خط فرمان (CLI مخفف Command Line Interface) عمل میکند و انعطافپذیری بیشتری را برای کدنویسی و کنترل ویندوز در اختیار کاربر قرار میدهد.
تفاوت PowerShell و ویندوز PowerShell کلاسیک
Windows PowerShell، نسخهی قدیمی PowerShell فعلی است که صرفاً برای سیستمعامل ویندوز عرضه شده است و پس از عرضهی نسخهی ۵٫۱ نیز، بهروزرسانی نخواهد شد. ویندوز ۱۱ بهصورت پیشفرض مجهز به این ابزار است و از آن، بهعنوان جایگزینی برای Command Prompt استفاده میکند.
در طرف مقابل، PowerShell یک ابزار کراس پلتفرم (چند سکویی، یعنی قابلیت نصب روی چند سیستمعامل را دارد) و متنباز است که برای استفاده از فریمورک NET Core. بازنویسی شده و نسخهی فعلی آن (نسخهی ۷٫۴) قابلیت نصب روی ویندوز، مک و لینوکس را دارد.
PowerShell ISE چیست؟
ISE (مخفف Integrated Scripting Environment) یک برنامهی میزبان رابط گرافیکی برای PowerShell است که نقش مفیدی را در واسط خط فرمان ایفا میکند. با استفاده از این برنامه، شما میتوانید پیش از اجرای هر اسکریپت در محیط سیستمعامل، کارایی آن را آزمایش کنید و بدانید که دقیقاً پس از اجرای این اسکریپت چه اتفاقی میافتد.
این ویژگی باعث میشود تا ISE، یک گزینهی بسیار عالی برای اجرای اسکریپتها در PowerShell باشد. علاوه بر این مزیت، PowerShell ISE قابلیتهایی مانند اجرای بخش خاصی از یک اسکریپت بهجای اجرای تمام آن، ویرایش چندخطی (Multiline-editing)، Context-sensitive help و Tab completion را در اختیار کاربر قرار میدهد که PowerShell فعلی را کارآمدتر از نسخهی کلاسیک و اولیهی آن میکند.
نحوه نصب PowerShell در ویندوز، مک و لینوکس
Windows PowerShell بهطور پیشفرض روی ویندوز ۱۱ نصب شده است؛ اما بهتر است بهجای این نسخه، از PowerShell استفاده کنید. PowerShell نسبتبه پاور شِل پیشفرض ویندوز ۱۱ جدیدتر و توسعهیافتهتر است؛ از طرفی، به دلیل کراس پلتفرم بودن PowerShell، میتوانید اسکریپتهایی بنویسید که علاوهبر ویندوز ۱۱، روی مک و لینوکس نیز، کار کند.
نصب PowerShell در ویندوز ۱۱
آخرین نسخه از PowerShell را از فروشگاه مایکروسافت یا از لینک زیر در سایت گیتهاب دانلود کنید.
علاوهبر این روش، میتوانید دستور زیر را در ترمینال ویندوز تایپ کنید تا PowerShell بهصورت خودکار از فروشگاه مایکروسافت دانلود شود:
نصب PowerShell در مک
برای نصب PowerShell در انواع لپ تاپ اپل، تنها کمی توانید این ابزار را بهصورت مستقیم دانلود کرده و روی سیستم خود نصب کنید یا اینکه، پس از نصب Homebrew (یک نرمافزار برای سیستمعامل macOS که امکان نصب نرمافزارهای متنباز را از طریق ترمینال مک فراهم میکند)، اسکریپت زیر را عیناً در ترمینال مک کپی کنید:
نصب PowerShell در لینوکس
از یکی از مدیرهای بسته در توزیعهای لینوکس شامل Alpin ،Debian، Red Hat Enterprise Linux(RHEL) ،Ubuntu ،Arch Linux ،Kali ،Gentoo یا Raspberry Pi OS برای نصب PowerShell در لینوکس استفاده کنید. درصورتیکه توزیع مورد استفادهی شما، در بین این موارد نیست، میتوانید نصب پاور شِل را با بستههای نرمافزاری اسنپ (Snap Packages) انجام دهید. علاوهبر این روشها، امکان نصب PowerShell در لینوکس با استفاده از Binary Archives یا در قالب .NET Global tool وجود دارد.
PowerShell cmdlet چیست؟
هر اسکریپتی که شما در محیط پاور شِل وارد میکنید، از یک ساختار فعل + اسم تشکیل شده است و کاری را نشان میدهد که cmdlet در نهایت، آن را انجام خواهد داد. در PowerShell بیش از ۲۰۰ نوع cmdlet مختلف وجود دارد؛ اما این به معنای محدودیت شما نیست و میتوانید به تناسب نیازی که دارید، با استفاده از افعال معنادار برای پاور شِل، دستورات مختلفی را توسط این ابزار در سیستمعامل کامپیوتر خود اجرا کنید. رایجترین افعال در محیط PowerShell عبارت است از:
فعل | کارایی | مثال cmdlet |
---|---|---|
Add | اضافه کردن یک منبع یا یک مورد جدید برای یک موضوع | Add-MailboxPermission |
Clear | پاک کردن تمام منابع داخل یک Container بدون حذف خود Container | Clear-Host |
Connect | برقراری ارتباط با یک سیستم دیگر | Connect-AzureAD |
Disconnect | قطع ارتباط با یک سیستم دیگر | Disconnect-AzureAD |
Get | بازیابی داده از یک منبع | Get-ChildItem |
New | ایجاد یک منبع جدید | New-Mailbox |
Remove | پاک کردن یک منبع از یک Container | Remove-Mailbox |
Set | جایگزین کردن اطلاعات در یک منبع موجود | Set-Mailbox |
Select | انتخاب یک منبع در یک Container | Select-Object |
برخلاف تصور بسیاری از شما، کار کردن با PowerShell سخت نیست و نیازی به یادگیری تمام cmdlet-های موجود در این ابزار ندارد؛ اما از میان این cmdlet-ها، سه مورد زیر بسیار پرکاربرد هستند و بهتر است دستورهای مرتبط با آنها را یاد بگیرید:
Get-Command
اگر این اسکریپت را بدون هیچ چیز اضافهای در محیط PowerShell وارد کنید، فهرستی مطابق تصویر زیر برای شما نشان داده میشود. این فهرست بسیار طولانی، شامل تمام دستوراتی است که میتوانید با استفاده از PowerShell روی سیستم خود اجرا کنید. برای کارآمد کردن این اسکریپت، باید آن را به شکل اختصاصیتری مانند مثال زیر در پاور شِل تایپ کنید:
نکته: بهجای Noun Process باید متناسب با نیازتان، نام عملیاتی را که میخواهید انجام شود، بنویسید. به طور مثال، Debug-Process یا Get-Process یا Start-Process یا Stop-Process نمونههایی از مواردی هستند که میتوانید بهجای Noun Process در عبارت بالا قرار دهید.
اگر بهجای Noun Process در دستور Get-Command از Name service- استفاده کنید، این cmdlet تمام دستوراتی را که کلمهی Service در آنها بهکاررفته است، به شما نمایش خواهد داد. این حالت نیز، مانند وضعیتی که Get-Command را بهتنهایی اجرا کنید، کارآمد نیست و باید آن را شخصیسازی کنید. به طور مثال، دستور زیر، نمونهای از این شخصیسازی است:
در این حالت، فهرست نمایشدادهشده، صرفاً به cmdlet-ها، توابع و Aliases-هایی که PowerShell میتواند استفاده کند، محدود خواهد شد.
Get-Help
اگر میدانید که دقیقاً به کدام cmdlet در محیط PowerShell نیاز دارید، اما نحوهی استفاده از آن را نمیدانید، میتوانید از Get-Help برای یادگیری کار با cmdlet مورد نظر خود استفاده کنید. برای این منظور، کافی است که دستور زیر را در پاور شِل کپی کنید:
درصورتیکه cmdlet مورد نظرتان نمایش داده نمیشود؛ دستور زیر را در محیط پاور شِل کپی کنید تا فایلهای مورد نیاز دانلود شود. پس از آن، دوباره دستور Get-Help name-of-cmdlet را اجرا کنید:
اگر میخواهید با اجرای Get-Help به راهنمای استفاده از تمام cmdlet-ها دست پیدا کنید؛ دستور زیر را در محیط پاور شِل وارد کنید:
Get-Member
با اجرای این cmdlet، تمامی اشیا (objects)، ویژگیها (properties) و متدها (methods) که به یک دستور خاصی که شما در محیط پاور شِل وارد میکنید اختصاص دارند، برای شما نمایش داده میشوند و میتوانید به کمک آنها، یک اسکریپت بنویسید.
Get-Member برخلاف دو cmdlet قبلی، بهتنهایی اجرا نمیشود و باید یک cmdlet دیگر در کنار آن قرار گیرد. بهطور مثال، دستور زیر قابل اجرا خواهد بود:
با اجرای این دستور، تمام ویژگیها و متدهای مرتبط با شیء مورد نظر به شما نشان داده میشود. اگر میخواهید این دستور کمی شخصیسازی شود، بهتر است آن را بههمراه پارامترهایی مانند MemberType و Name در پاور شِل وارد کنید. بهطور مثال:
نکته: این دستور، صرفاً ویژگیهای Get-Process را نمایش میدهد نه متدهای آن را.
معرفی دستورات مفید PowerShell
PowerShell تنوع زیادی از cmdlet-های مختلف را برای اجرای دستورات مورد نظر شما، در اختیارتان قرار میدهد. بااینحال، بهتر است موارد زیر را بهعنوان دستورات مفید پاور شِل در نظر داشته باشید.
فهرست نسخهی سیستمعامل ویندوز:
فهرست تعداد کاربران محلی و اطلاعات مالک سیستمعامل:
فهرست تمام فایلها و پوشهها در یک پوشه:
کپی کردن فایلها و پوشهها:
ایجاد پوشههای جدید:
ایجاد فایلهای خالی جدید:
دستورات قابل اجرا در محیط PowerShell، آزادی عمل بسیار زیادی را به کاربران سیستمعاملهای ویندوز، مک و لینوکس میدهد تا با استفاده از آنها بتوانند بدون نیاز به ابزارهای شخص ثالث، روی سیستمعامل کنترل بهتری داشته باشند.
برخلاف تنوع بالای cmdlet-های PowerShell، یادگیری نحوهی استفاده از این ابزارها، سخت نیست و میتوانید از سایتهای مختلف فارسی و انگلیسی در اینترنت از جمله وبلاگهای توسعهدهندگان مایکروسافت دراینرابطه کمک بگیرید و اگر دستور مفید و جدیدی را که تحت پاورشل اجرا میشود میشناسید با کاربران بهاشتراک بگذارید.