کاملترین آموزش پاورشل (Powershell) مقدماتی تا پیشرفته + Script

شما در حال مشاهده نسخه دموی ویدیو هستید، برای دسترسی کامل همین الان خرید کنید

به بهترین دوره آموزش پاورشل ( Powershell ) از صفر تا صد خوش آمدید. حتماً تابحال توی نسخه‌های مختلف ویندوز hostهای مختلف PowerShell رو مشاهده کردید، شاید هم گاهی اوقات دستوراتی از پاورشل رو توی مدارک مختلف مایکروسافت  اجرا کردید ولی هیچ‌وقت با قدرت، سرعت و توانایی‌هایی که PowerShell برای شما به ارمغان میاره بدرستی آشنا نشدید.

PowerShell  چیست؟ و چرا پاورشل را یاد بگیریم؟

PowerShell موفق‌ترین رابط متنی (cli) و زبان scripting مایکروسافت محسوب میشه که در حال حاضر نه تنها برای ویندوز و محصولات مایکروسافتی بلکه برروی توزیع‌های مختلف لینوکسی و macOS  موجود هست  و به شما این امکان رو میده تا taskهای مختلف روزانه رو توسط cli قدرتمند شئ‌گرای powershell براحتی مدیریت کنید و عملیات‌های تکراری رو توسط اسکریپت‌های پاورشل automate کنید یا تنظیمات مختلف سرور‌ها رو کانفیگ کنید، زبان PowerShell برپایه فریم‌ورک .net توسعه داده شده است.

هدف از توسعه PowerShell  توسط مایکروسافت تولید زبانی است که بتواند به adminها و فعالان حوزه‌های مختلف IT که با فرآیند software development آشنایی ندارند، این امکان رو بدهد تا براحتی ابزارها و اسکریپت‌هایی تولید کنند که کار اون‌ها رو تسریع بکنه و کارهایی رو به انجام برسونند که با ابزارهای گرافیکی معمول یا cliهای منتی مشابه امکان اون وجود نداره. برای اطلاعات بیشتر ویدئوهای ابتدایی این دوره آموزشی رو حتماً تماشا کنید.

چرا دوره آموزش PowerShell مقدماتی تا اسکریپت‌نویسی؟

برای یادگیری پاورشل جای خالی یه دوره جامع ویدیوئی فارسی که مفاهیم پاورشل رو بخوبی به شما آموزش بده و لذت استفاده از پاورشل رو به شما منتقل بکنه، احساس میشد. برای همین تصمیم گرفتم این دوره یعنی دوره آموزش پاورشل مقدماتی تا اسکریپت نویسی رو برای شما دوستان ایجاد کنم.

  گذروندن دوره آموزشی PowerShell ما این امکان رو به شما میده که منطق پاورشل رو بخوبی درک کنید و براحتی بتونید ازش استفاده کنید، توی هرمرحله از توسعه مهارت‌های مربوط به  IT که باشید، چه مبتدی و چه حرفه‌ای، یادگرفتن این مطالب اساسی و استفاده راحت از ابزار پاورشل تاثیر زیادی روی افزایش سرعت عملکرد و تمایز شما داره و همچنین پاورشل به شما کمک میکنه که ابزارهایی که مدت هاست بهشون نیاز دارید اما به دلیل پیچیدگی زبان‌های برنامه نویسی از عملی کردن اون‌ها منصرف شدید رو پیاده سازی کنید، چون پاورشل یک زبان اسکریپتینگ شئ‌گراست و برای اتوماسیون کردن taskهای مختلف برای adminها طراحی شده، که قدرت زیادی داره و منطق اون بسیار ساده‌تر از زبان‌های برنامه نویسی هستش.
برای کارکردن با ابزارهای cli که با تایپ کردن دستورات کار میکنن و همینطور نوشتن اسکریپت‌ها باید زمانی رو صرف یادگیری اون‌ها بکنید ولی وقتی بتونید پاورشل رو یادبگیرید تفاوت و مزیت‌های فراوانش رو نسبت به ابزارهای گرافیکی درک خواهید کرد. 
توی کنفرانس TechEd 2010 مایکروسافت ، Don Jones جمله‌ی معروفی رو تحت عنوان:
“?…your choice is, Learn PowerShell,  or would you like fries with that”
بیان کرد. امروز بعد از گذشت زمان طولانی شاهدیم که پاورشل خیلی موفق ظاهر شده و حتی نسخه های cross platform اون برای لینوکس و مک هم موجود هست و شرکت‌های مختلفی مدیریتcommandی محصولات خودشون رو تحت ماژول‌های پاورشل ارائه می‌کنند.
سعی کردم این مهارت‌ رو به بهترین شکل توی این دوره آموزشی برای شما فراهم کنم تا شما هم بتونید بخوبی قدرت cli  و زبان اسکریپت نویسی محبوب مایکروسافت رو تحت اختیار خودتون دربیارید. 
با یادگیری پاورشل قدرت بسیار بیشتری در انجام کارهایی دارید که قبلاً نمیتونستید انجامش بدید و کارهارو بسیار سریعتر و دقیقتر انجام خواهید داد و کلی وقت اضافه برای خودتون ایجاد میکنید  

با وجود ابزارهای گرافیکی چه نیازی به پاورشل هست؟

ابزارهای گرافیکی جایگاه خودشون رو دارند و بسیار عالی و کاربرپسند هستند، مخصوصاً برای یادگیری یک تکنولوژی جدید که با محیط اون نرم‌افزار و تکنولوژی غریبه هستید ولی به کمک رابط GUI میتونید تا حدودی با امتحان کردن امکانات و منوهای مختلف اون نرم‌افزار رو یاد بگیرید .

 اما وقتی صحبت از کارهای زیاد و مدیریت تعداد زیادی سرور میشه همین ابزارهای گرافیکی باعث تلف شدن وقت و بروز اشتباهات فراوان میشوند. فرض کنید قراره برروی 3 تا ماشین وب سرور IIS نصب کنید، اگر بخواهید به روش معمول عمل کنید باید به هرکدوم از این ماشین‌ها متصل بشید و IIS رو بروری ماشین مورد نظر نصب کنید و محتویات وبسایت خودتون رو در مسیر درست کپی کنیدو انجام این کار با ابزارهای گرافیکی زمان و انرژی زیادی از شما تلف میکنه و احتمال بروز خطای شما رو بشدت افزایش میده، در حالی که با استفاده از پاورشل با یک خط کد میتونید بصورت همزمان برروی سرورها IIS رو نصب و محتویات وبسایت رو کپی کنید بدون اینکه نگران بروز خطای انسانی باشید.

در این دوره آموزشی با آموزش گام به گام PowerShell یاد خواهید گرفت چطور به درستی از این ابزار قدرتمند در جهت رفع نیازهای خودتون استفاده کنید.


PowerShell  چطور بوجود آمد؟

در گذشته مایکروسافت همیشه بخاطر نداشتن یک command-line interface و قابلیتscripting  ضعف داشت تا اینکه در سال 2002 Jeffrey Snover از مایکروسافت طرحی تحت عنوان  Monad Manifesto مطرح کرد که بعداً به پاورشل تغییر نام داد و برنامه‌ها و ویژگی های یک زبان اسکریپتینگ و command-line interface جدید رو که بجای استفاده از text از objectها استفاده میکند رو توی اون پلن مطرح کرد.

فایل مربوط به پلن Monad رو از این لینک میتونید دریافت کنید.

  • از سال 2002 تا 2005 پاورشل که مراحل اولیه development رو سپری میکرد
  • در سال 2006 اولین نسخه از پاورشل تحت عنوان PowerShell v1 عرضه شد، که بصورت یک فایل نصبی جداگانه Windows Management Framework قابل نصب بود
  • در سال 2009 در زمان عرضهWindows 7  مایکروسافت بصورت پیشفرض پاورشل را برروی این سیستم عامل کلاینتی قرار داد و سپس برای Windows Server 2012 R2  نیز همین کار را انجام داد و از آن زمان PowerShell جزو جدایی ناپذیر سیستم عامل‌های ویندوزی شد
  • از سال 2006 تا 2016 نسخه‌های مختلف پاورشل تحت عنوان Windows PowerShell تا ورژن 5.1 برای پلتفرم‌های ویندوزی بر پایه.net framework  توسعه داده شدند و در هر نسخه امکانات جدیدی به پاورشل اضافه شد. امکاناتی نظیر PowerShell Remoting و Desired State Configuration (DSC)
  • در سال 2016 مایکروسافت یک حرکت انقلابی انجام داد و تصمیم گرفت بجای توسعه پلتفرم ویندوزی Windows PowerShell نسخه جدید یعنی نسخه 6 پاورشل را بصورت متن باز و cross-platform برای تمامی پلتفرم‌های ویندوز و لینوکس و macOS بصورت متن‌باز در GitHub منتشر کند
  • در حال حاضر جدیدترین نسخه از PowerShell نسخه 7.2  نام دارد، که بصورت cross-platform بر پایه .net core عرضه شده است، هرچند تفاوتی در ساختار دستورات نسخه‌های مختلف پاورشل وجود ندارد

مزیت‌های پاورشل چیست؟

پاورشل اولین زبان اسکریپت نویسی و command-line interface یا رابط کاربری متنی نیست، ولی قطعاً یکی از موفق‌ترین آنهاست، دلیل آن هم شئ‌گرایی پاورشل است که بر خلاف CLI های موجود بجای استفاده از text و متن ساده برای جابجایی اطلاعات بین دستورات و pipeline  از آبجکت‌ها استفاده میکند.

آبجکت‌ها خانه‌های زنده از درون حافظه هستند و با استفاده از پاورشل میتوانید به تمام propertyها و methodهای این خانه‌های حافظه دسترسی داشته باشد و مستقیماً با آن‌ها کار کنید، درصورتی که سایر cliهای موجود از text بعنوان خروجی استفاده می‌کنند که استخراج اطلاعات ازآن و پاس دادن اطلاعات موردنیاز شما به دستورات بعدی دردسرهای خاص خودش را دارد که در دوره آموزشی PowerShell بیشتر با این مفاهیم آشنا خواهید شد.

در لیست زیر مهمترین مزیت‌های پاورشل بطور خلاصه اشاره شده است:

  • شئ‌گرایی و object-oriented بودن PowerShell
  • یادگیری آسانتر از زبان‌های برنامه نویسی و task-based بودن پاورشل
  • امکان مدیریت و اجرای هزاران ماشین با سرعت بالا و حداقل workload توسط PowerShell Remoting
  • دسترسی آسان در تمام ویندوزهای کلاینتی و سروری و قابلیت استفاده بر روی پلتفرم‌های Linux  و macOS
  • پایداری و پشتیبانی سازنده و سایر شرکت‌ها از پاورشل
  • ابزارهای گرافیکی مایکروسافتی در پس‌زمینه دستورات پاورشل را اجرا می‌کنند
  • تنها راه دسترسی به تمام امکانات و ویژگی‌هایی که در رابط گرافیکی در دسترس نیست
  • تنها روش مدیریت مستقیم و فیزیکی نسخه‌های core ویندوز سرور

ساختار دستورات پاورشل

ساختار تمام دستورات پاورشل بصورت یک verb یا فعل و یک کاراکتر  dashسپس یک noun یا اسم است. بعنوان مثال دستور get-process که برای دریافت تمام پروسس‌ها استفاده میشود.

اگر دستور get-command  را در پنجره پاورشل اجرا کنید، لیست تمامی دستورات موجود برروی سیستم خود را خواهید دید  که تعداد آن‌ها بسیار زیاد است.

در حقیقت تعداد دستورات زیاد ویژگی زبان‌های اسکریپتینگ است. نمودار زیر زبان‌های برنامه‌نویسی را با زبانهای اسکریپتینگ مقایسه میکند:

در پاورشل سعی شده تا برای taskهای مختلف دستورات معادلی وجود داشته باشد، مثلا برای بدست آوردن لیست سرویس‌ها دستور get-service و برای stop کردن آن‌ها دستور stop-service یا برای ریستارت کردن سرویس‌ها دستور restart-service

درنتیجه بدلیل تعدد دستورات در اسکریپت نویسی با پاورشل برای اکثر taskها دستورات معادلی وجود دارد و درنتیجه تعداد کل خط‌های کد ما در مقایسه با زبان‌های برنامه نویسی بشدت کاهش پیدا میکند و اسکریپت نویسی با PowerShell و خلق ابزارها و toolها با آن بسیار ساده‌تر می‌شود.

ماژول‌ها در پاورشل

تمامی دستورات مرتبط پاورشل بصورت ماژول‌هایی دسته‌بندی شده‌اند، بعنوان مثال تمام دستورات مربوط به کار با Active Directory  در ماژولی با همین نام ذخیره شده‌اند. ماژولار بودن پاورشل دسترسی به دستورات مرتبط و توسعه پاورشل رو راحت‌تر میکند.

در نتیجه شما میتوانید به براحتی تمام دستورات مربوط به یک ماژول را لیست کنید و توسعه دهندکان مختلف میتوانند ماژول‌های جدیدی برای مدیریت محصولات خودشان توسط PowerShell ارائه دهند. مخزن PowerShell galley پر از ماژول‌های متفاوت و گوناگون است که در دوره آموزش پاورشل آموزش کار با ماژول‌های پاورشل و اضافه کردن ماژول‌های جدید از این مخزن را فرا خواهید گرفت.

برای آشنایی بیشتر با مفاهیم پاورشل به ویدئوهای دوره آموزشی پاورشل از مقدماتی تا اسکریپت نویسی را تماشا کنید.