به دنبال خودکار کردن وظایف در رایانه شخصی خود هستید؟ اسکریپت PowerShell را امتحان کنید!
خلاصه عناوین
- مروری بر اسکریپت PowerShell
- Cmdlet ها با جزئیات
- پارامترهای PowerShell توضیح داده شده است
- ایجاد خط لوله
- ذخیره Pipeline به عنوان اسکریپت PS1
- PowerShell در لینوکس و macOS نیز موجود است
تعاریف کلیدی
- PowerShell یک زبان برنامه نویسی است که می تواند به خودکارسازی وظایف رایانه کمک کند.
- Cmdlet ها دستورات تک کاره پاورشل هستند. می توانید دستورات موجود را با “Get-Command” مشاهده کنید.
- PowerShell در Windows، macOS و Linux در دسترس است.
PowerShell یک زبان برنامه نویسی است که می تواند به شما کمک کند وظایف رایانه را به سادگی و با اطمینان خودکار کنید. نحوه استفاده از آن برای شروع ساخت اسکریپت برای رایانه شخصی ویندوزی خود را بیاموزید.
مروری بر اسکریپت PowerShell
برای شروع ساختن اسکریپت های ساده PowerShell در ویندوز، باید در مورد سه چیز بدانید:
- Cmdlets: دستورات تک تابعی.
- پارامترها: چه، چه زمانی، کجا و چگونه از Cmdlets/commands را مشخص کنید.
- Pipeline: خروجی Cmdlet و پارامترهای آن را می گیرد و به سایر Cmdlet ها و توابع متصل می کند.
با ترکیب هر سه، می توانید اسکریپت های ساده ای بسازید تا به خودکارسازی وظایف کمک کند.
در اینجا یک خط لوله مثال آورده شده است که نشان می دهد چگونه می توانید چندین Cmdlet را برای دستیابی به یک کار ترکیب کنید:
برای اجرای این خط لوله در PowerShell، از دستور زیر استفاده می کنید:
Get-Object Potato | Peel-Object | Chop-Object Chips| Cook-Object DeepFry `
| Place-Object Bowl
Cmdlet ها با جزئیات
مانند هر زبان برنامه نویسی، PowerShell با دستوراتی برای دستکاری اشیا و انجام وظایف مختلف از پیش ساخته شده است. این دستورات اساسی در PowerShell به عنوان Cmdlet شناخته می شوند.
Cmdlet ها (که به صورت command-let تلفظ می شوند) دستورات کوچک و تک کاره ای هستند که در محیط PowerShell با استفاده از پسوند .dll استفاده می شوند. آنها کدهای سبک وزنی هستند که به دلیل ماهیت کامپایل شده خود سریعتر از توابع اجرا می شوند.
هزاران Cmdlet در PowerShell موجود است. لازم نیست همه آنها را یاد بگیرید. میتوانید با یادگیری چند Cmdlet پایه PowerShell شروع کنید، سپس در طول سفر برنامهنویسی خود به یادگیری ادامه دهید. برای مشاهده Cmdlet هایی که قبلاً روی رایانه شما نصب شده اند، اجرا کنید:
Get-Command
اگر نتایج را اسکن کنید، متوجه خواهید شد که آنها از یک قرارداد نامگذاری فعل-اسم پیروی می کنند. این باعث می شود درک آنچه که یک Cmdlet خاص انجام می دهد آسان تر کند.
به عنوان مثال، Get-Command لیستی از دستورات موجود در PowerShell را ارائه می دهد. Get-Process فرآیندهایی را که در حال حاضر فعال هستند به شما می دهد و Copy-Item یک یا چند فایل را در یک فهرست خاص کپی می کند.
Cmdlet ها همچنین همراه با مستندات گسترده ای هستند که شامل مثال ها، دستورالعمل های استفاده و توضیحاتی در مورد عملکرد آنها می شود.
برای کسب اطلاعات بیشتر در مورد یک Cmdlet خاص و نحوه استفاده از آن، اجرا کنید:
Get-Help <name-of-cmdlet>
پارامترهای PowerShell توضیح داده شده است
Cmdlet ها می توانند پارامترهایی را برای تغییر رفتار خود بپذیرند. هنگامی که یک Cmdlet یا تابع را اجرا می کنید، می توانید مقادیر پارامتر را برای تعیین اینکه هر دستور PowerShell چه، چه زمانی، کجا و چگونه اجرا شود، ارائه دهید.
به عنوان مثال، Get-Process تمام فرآیندهای فعال در سیستم عامل شما را دریافت و فهرست می کند:
اما اگر بخواهید فقط یک فرآیند خاص را دریافت کنید چه؟ شما می توانید این کار را با استفاده از پارامترها انجام دهید. به عنوان مثال، برای دریافت تمام فرآیندهای Slack، می توانید از پارامتر Name با Get-Process Cmdlet استفاده کنید:
Get-Process -Name Slack
سپس شما فقط آن فرآیندها را با نام “slack” خواهید دید:
برخی از پارامترها “positional” هستند که به این معنی است که نام آنها اختیاری است. در این مورد، Get-Process -Name Slack و Get-Process Slack همین کار را انجام می دهند.
هر Cmdlet انواع مختلفی از پارامترها را می پذیرد. از دستور Get-Help برای مشاهده پارامترهای پذیرفته شده یک Cmdlet در بخش SYNTAX استفاده کنید.
Get-Help Get-Process
لیستی از تمام راه های ممکن برای اجرای Cmdlet داده شده را خواهید دید:
در این حالت، Get-Process Cmdlet پارامترهایی مانند Name، Id، ComputerName، Module، FileVersionInfo و سایر پارامترهای رایج را می پذیرد. نمادها در اینجا نشان می دهند:
سمبل
نام
معنی
جای خالی
پارامتر ورودی را نمی پذیرد
خط ربط
نام پارامتر را نشان می دهد
<>
براکت های زاویه دار
جای جای متن
[]
براکت ها
پارامتری که می تواند یک یا چند مقدار را بپذیرد
{}
بریس ها
پارامتر مجموعه ای از مقادیر را می پذیرد
پارامترهایی که ورودیها را میپذیرند، نوع داده مورد نیازشان را نشان میدهند، مانند رشته، عدد صحیح، بولی یا DateTime. به عنوان مثال، این:
Get-Process [[-Name] <string[]>]
به این معنی که پارامتر Name یک یا چند مقدار رشته را می پذیرد، در حالی که این:
Get-Process -Id <int[]>
به این معنی که پارامتر Id یک یا چند مقدار صحیح را می پذیرد.
مثال قبلی Get-Process از پارامتر Name برای محدود کردن نتایج استفاده کرد. با این حال، اگر میخواهید آن را به یک فرآیند خاصتر محدود کنید، میتوانید از پارامتر ID استفاده کنید، که به یک عدد صحیح همانطور که در نحو ذکر شده نیاز دارد.
Get-Process -Id 3016
سپس باید فقط یک فرآیند را در لیست مشاهده کنید:
ایجاد خط لوله
PowerShell با تمام داده ها به عنوان اشیا رفتار می کند. برای ساخت یک اسکریپت، این اشیاء از طریق یک سری Cmdlet یا توابع متصل شده توسط یک نماد لوله ( | ) جریان می یابند. انتخاب Cmdlet های مناسب و اتصال آنها در یک دنباله منطقی با استفاده از خط لوله برای یک اسکریپت موثر بسیار مهم است.
فرض کنید در حال ایجاد یک اسکریپت برای مرتب کردن و نمایش پنج فایلی هستید که بیشترین فضای ذخیره سازی را در یک پوشه دارند. راههای قویتری برای ایجاد یک اسکریپت مرتبسازی فایل وجود دارد، اما یک خط زیر به راحتی قابل درک است:
برای انجام این کار در PowerShell، از خط لوله ای استفاده کنید که چیزی شبیه به این است:
Get-ChildItem -Path "C:\Directory" -File | Sort-Object Length -Descending `
| Select-Object -First 5 | Format-Table Name, Length -AutoSize
ذخیره Pipeline به عنوان اسکریپت PS1
اکنون که یک خط لوله در حال کار داریم، میتوانید آن را بهعنوان یک فایل اسکریپت PS1 ذخیره کنید، بنابراین لازم نیست هر بار که از آن استفاده میکنید به تایپ آن ادامه دهید.
ساده ترین راه برای ایجاد فایل PS1 این است که اسکریپت خود را در Notepad قرار دهید و فایل را با پسوند ps1 ذخیره کنید.
هنگامی که فایل PS1 خود را ایجاد کردید، می توانید با اجرای ./ScriptName.ps1 از آن در PowerShell استفاده کنید:
اگر با خطای مجوز مواجه شدید، سریعترین راهحل این است که هنگام اجرای اسکریپتهای خود، PowerShell را بهعنوان مدیر اجرا کنید.
تبریک می گویم! اکنون می توانید اسکریپت های PowerShell PS1 ایجاد کنید.
PowerShell در لینوکس و macOS نیز موجود است
PowerShell یکی از بهترین زبان های برنامه نویسی مبتدی است که هر کسی می تواند یاد بگیرد. اگرچه PowerShell در گذشته فقط به ویندوز محدود می شد، نسخه به روز شده PowerShell اکنون در macOS و بسیاری از توزیع های لینوکس نیز موجود است! این موضوع PowerShell را جذاب تر می کند زیرا می توانید دانش خود را از ویندوز به سایر سیستم عامل ها منتقل کنید.