پاورشل چیست؟ پاورشل یک زبان قدرتمند برای نوشتن اسکریپت و همچنین یک پوسته خط فرمان است که میتوان از آن برای خودکارسازی کارها، مدیریت سیستمها و انجام عملیات مختلف استفاده کرد. پاورشل همانند خط فرمان ویندوز (Command Prompt) نیست، بلکه ابزار بسیار پیشرفتهتری است که برای جایگزینی آن ساخته شده و قدرت و کنترل بیشتری روی سیستم عامل ویندوز ارائه میدهد. در این مقاله، به بررسی این که پاورشل چیست، کاربردهای آن و نحوه استفاده از این رابط خط فرمان میپردازیم.
پاورشل چیست؟
پاورشل یک ابزار چند پلتفرمی است که روی ویندوز، macOS و لینوکس کار میکند. این ابزار مبتنی بر .NET Framework ساخته شده است، بنابراین میتواند به بسیاری از کتابخانه ها و قابلیت های سیستم عامل ویندوز دسترسی داشته باشد و همچنین با سرویس ها و برنامه های کاربردی مختلف مانند Azure، Microsoft 365 و SQL Server تعامل کند. علاوه بر این، پاورشل متن باز است، به این معنی که شما می توانید کد منبع آن را مشاهده و ویرایش کنید و همچنین در توسعه آن مشارکت داشته باشید.
پاورشل یک پوسته خط فرمان و زبان اسکریپت نویسی است. پوسته خط فرمان رابط کاربری است که به شما امکان می دهد با تایپ دستورات با سیستم عامل تعامل داشته باشید. زبان اسکریپت نویسی یک زبان برنامه نویسی است که به شما امکان می دهد اسکریپت هایی بنویسید که توالی دستوراتی هستند که توسط پوسته قابل اجرا هستند. اسکریپت های پاورشل دارای پسوند .ps1 هستند و می توانند از کنسول پاورشل یا از یک محیط اسکریپت نویسی یکپارچه مانند PowerShell ISE اجرا شوند.
برای مدیریت بهتر سرورهای مجازی خورد مانند سرور مجازی ویندوز و لینوکس آشنایی با ابزار پاورشل امری ضروری است. این ابزار قدرتمند به شما امکان انجام تنظیمات سرور و مدیریت بهتر آن را با بهرهوری بالا میدهد.
ساختار اسکریپتهای پاورشل به چه شکل است؟
اسکریپتهای پاورشل دارای پسوند ps1 هستند و میتوانند از کنسول PowerShell یا از یک محیط برنامه نویسی یکپارچه مانند PowerShell ISE اجرا شوند. دستورات پاورشل، cmdlets نام دارند. Cmdletها قطعات کد کوچکی هستند که در PowerShell استفاده میشوند تا وظایف خاصی نظیر کپی کردن یک فایل، ایجاد یک پوشه یا دریافت اطلاعات درمورد یک فرآیند را انجام دهند. Cmdletها فرمول نامگذاری خاصی دارند که در آن، یک فعل و یک اسم به دنبال هم به کار میرود.
فعلی که در اسم Cmdlet به کار میرود، مشخص میکند Cmdlet چه کاری انجام میدهد و اسم هم مشخص میکند Cmdlet بر چه چیزی عمل میکند. به عنوان مثال، Get-Process یک Cmdlet است که اطلاعات فرایندها را دریافت میکند. Get به عنوان فعل عمل میکند و Process به عنوان اسم. New-Item و Copy-Item هم نمونههای دیگری از این شیوه نام گذاری هستند. پاورشل همچنین، از نام مستعار پشتیبانی میکند، که نامهای کوتاهی برای cmdletها یا سایر دستورات هستند.
به عنوان مثال، نام مستعار dir معادل Get-ChildItem است که محتویات یک پوشه را فهرست میکند. نام مستعار، تایپ کردن دستورات را سریعتر و آسانتر میکند، اما اگر معنای آنها را ندانید، ممکن است گیج کننده باشد. برای پیدا کردن شکل کامل یک نام مستعار، میتوانید از cmdlet ترکیبی Get-Alias استفاده کنید یا cmdlet ترکیبی Set-Alias را برای ایجاد نام مستعار موردنظر خود استفاده کنید.
کاربردهای رایج پاورشل چیست؟
کاربرد پاورشل چیست؟ به طور کلی، این ابزار برای کمک به خودکار سازی و حل سریع وظایف مدیریتی خسته کننده طراحی شده است. برخی از کاربردهای رایج PowerShell به شرح زیر است:
- نمایش تمام دستگاههای USB نصب شده روی یک یا چند کامپیوتر در یک شبکه، با استفاده از cmdlet ترکیبی Get-PnpDevice
- استفاده از cmdlet ترکیبی Start-Job برای تنظیم یک کار وقتگیر در پسزمینه در حین انجام کارهای دیگر
- شناسایی و توقف فرآیندهایی که پاسخ نمیدهند، با استفاده از cmdletهای Get-Process و Stop-Process با پارامتر –Responding
- فیلتر کردن اطلاعات خاصی درباره سیستمهای موجود در شبکه و ارسال آنها در قالب HTML با استفاده از cmdletهای Get-ComputerInfo و ConvertTo-Html
سایر کاربردهای پاورشل (PowerShell) چیست؟ این ابزار همچنین، میتواند به عنوان یک محیط اسکریپت نویسی با قابلیتهایی مشابه با زبانهای برنامه نویسی معروف استفاده شود. شما میتوانید از PowerShell برای موارد زیر استفاده کنید:
- استفاده از متغیرها با علامت $ (متغیرها جایگزین مقادیر قابل تغییر هستند)
- استفاده از عملگرها مانند + * / یا == برای انجام محاسبات یا مقایسهها نظیر جمع، تفریق، ضرب، تقسیم، مقایسه اعداد، متن و مقادیر دیگر محاسبات یا مقایسهها
- استفاده از عبارات شرطی (بلوکهایی از کد که فقط در صورت برآورده شدن یک شرط خاص، با استفاده از کلمات کلیدی if، else و elseif اجرا میشوند)
- استفاده از لوپها (بلوکهایی از کد که با استفاده از کلمات کلیدی for، while یا foreach تا زمانی که شرایط خاصی برآورده شود یا به تعداد مشخصی تکرار میشوند)
- استفاده از Arrayها (Arrayها مجموعهای از مقادیر هستند که با استفاده از علامت @ میتوان به آنها دسترسی پیدا کرد)
- استفاده از هشها (هشها مجموعهای از جفتهای key-value هستند که با استفاده از علامت @ و {} میتوان به آنها دسترسی پیدا کرد)
- استفاده از Objectها (Objectها ساختارهای داده پیچیدهای هستند که با استفاده از cmdlet ترکیبی New-Object یا نماد [type] میتوان به آنها دسترسی پیدا کرد)
با استفاده از پاورشل می توانید به راحتی سرور مجازی ارزان خود (مانند سرور مجازی ایران) را ایمن سازی کنید. اجرای اسکریپت های رمزگذاری و پیکربندی فایروال ها از طریق پاورشل (Windows VPS Server) به سادگی قابل انجام است.
نحوه کار پاورشل به چه صورت است؟
به طور کلی، PowerShell بیشتر شبیه یک زبان برنامه نویسی است تا یک برنامه خط فرمان، زیرا بر اساس فریم ورک .NET ساخته شده است. PowerShell با Objectها کار میکند. در واقع، هرچیزی در پاورشل یک Object است. این Objectها اصولا نشان دهنده ویژگیها (Properties) یا دستورالعملها (Methods) هستند. حتی میتوان آنها را به عنوان ورودی یا خروجی از طریق برنامه به طور پیوسته ساخت. PowerShell از چهار نوع دستور مختلف برای دستکاری Objectها استفاده میکند که در ادامه، به آنها میپردازیم.
۱. Cmdlets
Cmdletها که command-lets تلفظ میشوند، دستورات تک عملکردی پایه PowerShell هستند. اگر پاورشل را یک پاراگراف درنظر بگیریم، cmdletها حروف کلمات در این پاراگراف هستند. در واقع، cmdletها واحدهای کوچکتر و قابل شناسایی هستند که میتوانند برای تشکیل دستورات PowerShell استفاده شوند. برای انجام یک عملکرد میتوان از آنها استفاده کرد یا آنها را برای انجام عملکردهای مهمتر، با هم ترکیب کرد.
توجه داشته باشید که هر cmdlet همچنان به عنوان یک تابع مجزا برای کمک به خروجی cmdlet در تابع ترکیبی کار میکند. با این حال، cmdletها در PowerShell نوشته نمیشوند. آنها به زبان دیگری نوشته شده و در PowerShell در دسترس قرار میگیرند. محدودیت عملکرد cmdletها به خلاقیت توسعه دهنده بستگی دارد. توسعه دهندگان و مهندسان DevOps ممکن است از Pipeها برای ارسال یک خروجی cmdlet به ورودی cmdlet دیگر به عنوان یک Object استفاده کنند.
۲.توابع PowerShell
توابع یکی از دستورات متعددی هستند که از آنها برای اجرای کدها در PowerShell استفاده میشود. برخلاف cmdletها، توابع به زبان PowerShell نوشته میشوند. توابع دنبالهای از دستورالعملها هستند و برای استفاده باید فراخوانی شده و با کمک زبان برنامه نویسی پاورشل نوشته شوند. اما ورودی توابع پاورشل (PowerShell) چیست؟ این ورودیها یکسری پارامتر هستند و خروجی آنها شامل اطلاعاتی است که هم میتواند به کاربر نشان داده شود و هم میتواند به عنوان ورودیهایی برای cmdletها به کار گرفته شود.
دو نوع تابع در پاورشل وجود دارد که تابع پایه و تابع پیشرفته هستند. تابع پایه، سادهترین شکل تابع است که در PowerShell به کار میرود. این توابع، ساختار سادهای دارند و هیچ ویژگی داخلی خاصی در آنها به کار نرفته. همچنین، نمیتوانند از ویژگیهای توابع دیگر استفاده کنند یا مانند توابع پیچیدهتر، با Arrayها و Objectها کار کنند. توابع پیشرفته، توابعی هستند که در هسته آنها یک تابع پایه وجود دارد و یکسری ویژگی اضافی دیگر نیز دارند که آنها را قدرتمندتر میکنند.
این ویژگیهای اضافی ممکن است شامل موارد زیر باشد:
- توانایی کار با Arrayها و Objectهای پیچیده
- توانایی استفاده از ویژگیهای توابع دیگر
- توانایی نمایش پیامهای خطای سفارشی
- توانایی دسترسی به ویژگیهای سیستم عامل
۳.اسکریپتهای PowerShell
اسکریپتهای PowerShell با واحدهای دستوری به اسم cmdlet نوشته میشوند. این اسکریپتها برای اتوماسیون کارهای مختلف به کار میروند. سه نوع دستور در اسکریپت PowerShell وجود دارد:
- دستور “get” اولین دستوری است که برای بازیابی دادهها از فایل سیستمی به کار میرود. این دستور میتواند برای بازیابی داده از انواع مختلف فایلها از جمله فایلهای متنی، فایلهای اجرایی و فایلهای پایگاه داده استفاده شود.
- دستور “set” برای ویرایش اطلاعات اجزای ویندوز استفاده میشود.
- دستور “remove” برای حذف کامل عملیات به کار میرود.
اسکریپتهای PowerShell کدهای خودکار را سازماندهی و ساده میکنند. این امر به کاهش پیچیدگی کد کمک میکند و باعث میشود کد خواناتر و قابل مدیریت باشد. همچنین، خطاها را کاهش میدهند و باعث بهبود قابلیت اطمینان کد میشوند. دلیل این امر، این است که اسکریپتها کد را تکرار میکنند و به شما امکان میدهند تا کد را در محیطی کنترل شده آزمایش کنید. در نتیجه، اسکریپتهای PowerShell یک ابزار قدرتمند برای اتوماسیون هستند که میتوانند باعث صرفه جویی در زمان و انرژی شما شوند.
۴.دستورات اجرایی
همانطور که از اسم دستورات اجرایی هم پیدا است، دستوراتی هستند که فایلها را اجرا میکنند. فایلهای اجرایی، پسوند .exe دارند و جزء نرم افزارهای ویندوز مایکروسافت هستند. برای اجرای این فایلها، از سه دستور استفاده میشود:
- اولین دستور “Invoke-expression” است که بدون شک، محبوبترین روش اجرای فایلهای .exe است.
- فرمان دوم cmdlet ترکیبی “start-process” است. این دستور، بیش از یک فرآیند را در دستگاه شما شروع میکند، اما همان نتیجه دستور اول را دارد.
- سومین دستور استفاده از “.\” قبل از نام فایل است. این سادهترین روش اجرای این دسته از فایلها است، اما همه Alternativeها، فایل .exe را اجرا میکنند.
دلایل استفاده از پاورشل چیست؟
اکنون که دانستیم پاورشل (PowerShell) چیست، با این سوال مواجه میشویم که چه دلیل برای استفاده از این ابزار وجود دارد؟ پاورشل ابزاری با عملکرد دوگانه است. بر همین اساس، مدالیتهها (موارد استفاده) بیشتری در اختیار کاربران قرار میدهد. این مدالیتهها دلایل محبوبیت روزافزون PowerShell هستند. در ادامه، آنها را معرفی میکنیم.
۱.اتوماسیون تسکها
اولین دلیل محکمی که متخصصان DevOps را به استفاده از PowerShell ترغیب میکند، اتوماسیون تسکها است. وقتی توضیح دادیم پاورشل (PowerShell) چیست، اشاره کردیم که عمدتا برای ایجاد اتوماسیون از این ابزار استفاده میشود. اتوماسیون در سایر زبانهای برنامه نویسی هم انجام میشود، اما به دلیل سیستم فرمت منحصر به فرد PowerShell، در این زبان بیشتر نمود پیدا کرده است.
سیستم فرمت PowerShell به گونهای است که شما را قادر میسازد دستورات خود را به صورت واضح و خوانا بنویسید. به این ترتیب، میتوانید کد خود را سریعتر و آسانتر بنویسید و بخوانید. یکی دیگر از دلایلی که PowerShell نسبت به سایر زبانهای برنامه نویسی گزینه بهتری برای اتوماسیون اجرای تسکها محسوب میشود، این است به شما امکان میدهد توابع، کلاسها، cmdletها و ماژولهای خود را ایجاد کنید. به این ترتیب، میتوانید کد خود را سفارشی کنید و عملکردهای جدید به آنها اضافه کنید.
۲.دسترسی راحت به دادهها
اگر بپرسید دلایل محبوبیت پاورشل (PowerShell) چیست قطعا، امکان دسترسی به دادهها یکی از آنها است. بخش قابل توجهی از موارد استفاده از PowerShell فعالیتهای اداری است. در شبکههای کامپیوتری بزرگ، بسیاری از سرویسها به طور مستقل کار میکنند و توسط یک ادمین کنترل میشوند. پاورشل مجوز دسترسی آسان به دیتا استورهای متفاوت نظیر فایلهای سیستم یا رجیستریها را میدهد.
۳.مدیریت زیرساخت به عنوان کد
PowerShell از یک چارچوب مدیریتی استفاده میکند که به کاربران اجازه میدهد زیرساخت شرکت خود را به صورت خودکار مدیریت کنند. به این فریم ورک Desired State Configuration یا DSC گفته میشود. DSC از مفهوم پیکربندی به عنوان کد استفاده میکند، به این معنی که شما میتوانید پیکربندی زیرساخت خود را در قالب کد تعریف کنید. سپس، DSC میتواند این کد را اجرا کند تا زیرساخت شما را به حالت دلخواه خود تغییر دهد.
۴. تسهیل دستورات راه دور
توانایی اجرای فرمان از راه دور (Remote) و تسهیل آن، یکی دیگر از دلایل محبوبیت پاورشل است. این قابلیت، باعث میشود PowerShell برای مدیریت چندین سیستم به صورت همزمان بسیار مفید باشد. با PowerShell، مدیران میتوانند عملیات از راه دور را در چندین سیستم انجام دهند. این کار از طریق ابزار دقیق مدیریت ویندوز و پروتکل مدیریت WS امکان پذیر است.
مزایای اصلی خط فرمان پاورشل چیست؟
PowerShell یک پوسته خط فرمان قدرتمند است که مزایای زیادی را برای مدیریت و خودکار سازی وظایف در سیستمهای ویندوز فراهم میکند. در اینجا به برخی از مزایای کلیدی استفاده از PowerShell اشاره میکنیم.
اتوماسیون قدرتمند
PowerShell در خودکار سازی وظایف تکراری، صرفه جویی در زمان و انرژی متخصصان فناوری اطلاعات و مدیران سیستم، فوق العاده است. این ابزار شما را قادر میسازد تا اسکریپتهایی ایجاد کنید که میتوانند عملیات معمولی مانند استقرار نرم افزار، پیکربندی تنظیمات و مدیریت حسابهای کاربری را انجام دهند. اتوماسیون، به پرسنل اجازه میدهد روی کارهای با اولویت بالاتر تمرکز کنند.
رویکرد شی گرا
PowerShell یک زبان اسکریپت نویسی شی گرا است، به این معنی که Objectها در آن نقش اساسی دارند. Objectها در PowerShell نمایندگان مختلفی هستند که در محیط ویندوز وجود دارند. به عنوان مثال، یک Object ممکن است نماینده یک فرآیند، سرویس، پوشه یا یک فایل باشد. این رویکرد Object گرا باعث میشود PowerShell انعطاف پذیر و قدرتمند باشد. همچنین این رویکرد، روشی ساختاریافته و شهودی برای دستکاری منابع سیستم فراهم میکند. به این ترتیب، میتوانید مستقیما با Objectها کار کنید و این امر، مدیریت سیستمها و دادههای پیچیده را آسانتر میکند.
سازگاری با پلتفرمهای مختلف
PowerShell فقط به سیستمهای ویندوز محدود نمیشود. در حال حاضر این ابزار برای لینوکس، مک و سایر سیستم عاملها نیز در دسترس قرار دارد. این سازگاری، دامنه قابلیتهای PowerShell را گسترش میدهد و باعث میشود یک ابزار قدرتمند برای مدیریت زیرساختهای فناوری اطلاعات باشد. به این ترتیب میتوانید از این ابزار در سرور مجازی لینوکس با توزیع های لینوکس مختلفی استفاده کنید.
کتابخانه ماژول گسترده
PowerShell دارای مجموعه گستردهای از ماژولهای از پیش ساختهشده است که عملکردها و دستورات تخصصی را برای مدیریت جنبههای مختلف سیستمهای ویندوز ارائه میدهند. این ماژولها بخشهایی مانند Active Directory، Exchange Server و Office 365 را پوشش میدهند.
قابلیتهای اسکریپت نویسی
قابلیتهای اسکریپت نویسی پاورشل به شما اجازه میدهند اسکریپتهایی ایجاد کنید که قابلیت استفاده مجدد دارند و میتوانند طیف وسیعی از وظایف پیچیده را پوشش دهند. این اسکریپتها را میتوان در صورت تقاضا اجرا کرد یا برنامه ریزی کرد که به صورت خودکار اجرا شوند.
تاریخچه فرمان و تکمیل با tab
PowerShell به تاریخچه جامع فرمان و ویژگی تکمیل با دکمه tab مجهز است که باعث میشود اجرای دستورات راحتتر شود. با این ویژگی، میتوانید به سرعت به دستورات و پیشنهاداتی که قبلا استفاده کردهاید دسترسی پیدا کنید و بهرهوری خود را افزایش دهید.
رسیدگی و ثبت خطا
PowerShell مکانیزمهای قدرتمندی برای مدیریت خطاها ارائه میدهد که به شما کمک میکنند خطاها را شناسایی و برطرف کنید. همچنین، قابلیت ثبت جزئیات را ارائه میدهد که به شما کمک میکند اطلاعات بیشتری درمورد خطاها جمع آوری کنید. این ویژگی، تضمین میکند که هرگونه خطایی در طول اجرای اسکریپت رخ دهد، شناسایی و مستند میشود و عیب یابی و اشکال زدایی را نیز تسهیل میکند.
کامیونیتی بزرگ
PowerShell جامعه بزرگی از کاربران و توسعه دهندگان دارد که به طور فعال در بهبود این ابزار مشارکت میکنند. به لطف این جامعه، PowerShell به طور مداوم در حال رشد و پیشرفت است. شبکه پشتیبانی گسترده پاورشل شامل منابعی مانند مستندات، آموزشها و انجمنهای آنلاین است که به کاربران کمک میکند تا از این ابزار به خوبی استفاده کنند. این منابع ارزشمند میتوانند به کاربران کمک کنند تا PowerShell را یاد بگیرند، نحوه استفاده از آن را بیاموزند و مشکلات را عیب یابی کنند.
مقایسه پاورشل و CMD
تفاوت CMD و پاورشل (PowerShell) چیست؟ هر دو رابطهای خط فرمان (CLI) هستند که به کاربران اجازه میدهند با سیستمهای ویندوزی خود تعامل برقرار کنند. با این حال، هر یک آنها اهداف متفاوتی را دنبال میکنند و ویژگیهای متمایزی دارند. CMD یک رابط خط فرمان قدیمی است که برای انجام وظایف اساسی در سیستمهای ویندوز طراحی شده است و میتواند برای کارهایی مانند اجرای فرمانهای دستهای، تغییر مسیر فایلها و عیب یابی مشکلات سیستم استفاده شود.
نحو یا syntax رابط CMD مبتنی بر متن است. به همین دلیل، ممکن است درک و استفاده از آن برای عملیات پیچیده، مخصوصا برای افراد مبتدی چالش برانگیز باشد. از سوی دیگر، PowerShell یک CLI پیشرفتهتر است که دلیل تمایز آن، تمرکز بر مدیریت سیستم و اتوماسیون است. پاورشل از سینتکس شی گرا استفاده میکند که درک آن آسانتر است و از یک رویکرد متفاوت برای اجرای فرمان استفاده میکند که کارایی و قدرت را افزایش میدهد.
به طور خلاصه، CMD برای کارهای ساده مناسب است، در حالی که PowerShell در مدیریت سیستم و اتوماسیون برتری دارد. نحو Object گرای پاورشل، آن را به گزینهای ارجح برای عملیات پیچیده تبدیل میکند. CMD و پاورشل، هر دو رابطهای خط فرمان (CLI) هستند که به شما اجازه میدهند با سیستم ویندوزی خود تعامل داشته باشید. با این حال، آنها اهداف متفاوتی را دنبال میکنند و ویژگیهای متمایزی هم دارند.
جمع بندی
PowerShell یک ابزار قدرتمند و همه کاره است که میتواند بهرهوری و کارایی شما را به عنوان یک متخصص فناوری اطلاعات یا کاربر عادی، به طور قابل توجهی افزایش دهد. با تسلط بر اصول اولیه PowerShell و کاوش در ویژگیهای پیشرفته آن، میتوانید وظایف را به صورت خودکار انجام دهید، سیستمها را به طور موثر مدیریت کنید و پیکربندیهای پیچیده را به راحتی انجام دهید. قدرت PowerShell را در آغوش بگیرید و دنیایی از امکانات را در مدیریت سیستم، اسکریپت نویسی و اتوماسیون باز کنید.











