PowerShell یکی از قدرتمندترین ابزارهای مدیریت و خودکارسازی در سیستمعامل ویندوز است که توسط مایکروسافت توسعه یافته است. آشنایی با دستورات ضروری PowerShell به مدیران سیستم، کارشناسان شبکه و کاربران حرفهای کمک میکند تا وظایف مدیریتی را با سرعت و دقت بیشتری انجام دهند. این ابزار علاوه بر اجرای دستورات خط فرمان، امکان نوشتن اسکریپتهای پیشرفته برای مدیریت سیستم، شبکه، سرویسها، فایلها و حتی سرویسهای ابری را فراهم میکند.
برخلاف Command Prompt که خروجی آن فقط متن است، PowerShell با اشیاء (Objects) کار میکند و همین ویژگی باعث میشود پردازش اطلاعات، مدیریت منابع و خودکارسازی فرآیندهای پیچیده بسیار سادهتر و کارآمدتر انجام شود.
اگر بهتازگی وارد دنیای PowerShell شدهاید، نیازی نیست صدها دستور را حفظ کنید. یادگیری مجموعهای از دستورات ضروری PowerShell میتواند شما را برای انجام بخش بزرگی از وظایف روزمره آماده کند. در این مطلب با مهمترین دستورات PowerShell برای مبتدیان آشنا میشویم و کاربرد هر کدام را همراه با مثالهای عملی بررسی میکنیم.
PowerShell چیست و چرا باید آن را یاد بگیریم؟
PowerShell یک محیط خط فرمان و زبان اسکریپتنویسی است که برای مدیریت سیستمها و خودکارسازی وظایف طراحی شده است. ساختار دستورات در PowerShell بر اساس الگوی Verb-Noun یا فعل-اسم است. برای مثال دستور Get-Process برای دریافت اطلاعات پردازشها و دستور Get-Service برای مشاهده سرویسها استفاده میشود.
یادگیری PowerShell مزایای متعددی دارد:
- مدیریت سریعتر سیستمعامل ویندوز
- خودکارسازی کارهای تکراری
- مدیریت سرورهای محلی و راه دور
- پردازش و تحلیل دادهها
- افزایش بهرهوری مدیران سیستم و کارشناسان شبکه
آشنایی با ساختار دستورات PowerShell
همطان طور که گفتیم تقریبا تمام دستورات PowerShell از ساختار مشخصی به نام Verb-Noun پیروی میکنند.
در این ساختار:
- Get به معنی دریافت اطلاعات است
- Set به معنی تنظیم یا تغییر است
- New برای ایجاد منابع جدید استفاده میشود
- Remove برای حذف منابع کاربرد دارد
- Start و Stop برای راهاندازی یا متوقف کردن سرویسها و پردازشها به کار میروند
این استاندارد باعث میشود یادگیری دستورات ضروری PowerShell بسیار سادهتر شود.
نامهای مستعار (Aliases) در PowerShell:
Aliasها نامهای کوتاهشدهای برای Cmdletها، توابع و اسکریپتها هستند. از Aliasها برای افزایش سرعت تایپ دستورات و همچنین حفظ سازگاری با نسخههای قدیمی استفاده میشود. برای مشاهده تمام Aliasهای تعریفشده در Session فعلی پاورشِل، میتوانید دستور Get-Alias را اجرا کنید.
برخی از Aliasهای پرکاربرد عبارتند از:
- Ls — نام مستعار دستور Get-ChildItem
- Gci — نام مستعار دیگر برای Get-ChildItem
- Gc — نام مستعار دستور Get-Content
- Rm — نام مستعار دستور Remove-Item
- Cd — نام مستعار دستور Set-Location
- Cls — نام مستعار دستور Clear-Host
- Dir — نام مستعار دستور Get-ChildItem
دستور Get-Help، مهمترین دوست شما
اولین دستوری که هر کاربر PowerShell باید یاد بگیرد Get-Help است. این دستور مستندات و راهنمای هر Cmdlet را نمایش میدهد.
مثال:
Get-Help Get-Process
برای مشاهده مثالهای عملی:
Get-Help Get-Process -Examples
این قابلیت به شما کمک میکند بدون مراجعه به منابع خارجی، نحوه استفاده از دستورات مختلف را یاد بگیرید.
دستور Get-Command برای پیدا کردن دستورات
زمانی که نام دقیق یک دستور را نمیدانید، Get-Command بسیار مفید خواهد بود. این دستور تمام Cmdletها، توابع و ماژولهای موجود را نمایش میدهد.
نمایش همه دستورات:
Get-Command
نمایش دستورات مرتبط با سرویسها:
Get-Command *Service*
این روش یکی از سریعترین راهها برای کشف قابلیتهای PowerShell محسوب میشود.
مشاهده فایلها و پوشهها با Get-ChildItem
یکی از پرکاربردترین دستورات PowerShell، دستور Get-ChildItem است که مشابه دستور dir در Command Prompt عمل میکند.
نمایش محتوای پوشه جاری:
Get-ChildItem
نمایش محتوای یک مسیر خاص:
Get-ChildItem E:\Office
این دستور اطلاعات فایلها و پوشهها را به صورت ساختاریافته نمایش میدهد.
جابهجایی بین پوشهها با Set-Location
برای تغییر مسیر کاری فعلی از دستور Set-Location استفاده میشود.
مثال:
Set-Location -Path "E:\Office\Project"
معادل کوتاهتر آن:
cd E:\Office\Project
مدیریت پردازشها با Get-Process
یکی از وظایف رایج مدیران سیستم، بررسی پردازشهای در حال اجرا در ویندوز است. PowerShell با استفاده از دستور Get-Process اطلاعات کاملی درباره پردازشهای فعال ارائه میدهد و امکان مشاهده جزئیات مختلف هر پردازش را فراهم میکند.
برای مشاهده فهرست تمام پردازشهای در حال اجرا از دستور زیر استفاده کنید:
Get-Process
اگر فقط اطلاعات مربوط به برنامه Notepad را نیاز دارید، میتوانید نام پردازش را مشخص کنید:
Get-Process -Name notepad
همچنین برای نمایش نام پردازش، شناسه (ID) و میزان مصرف پردازنده در قالب یک جدول مرتب، دستور زیر کاربرد دارد:
Get-Process | Format-Table Name, Id, CPU -AutoSize
اجرای برنامهها با Start-Process
برای اجرای برنامهها از PowerShell میتوان از دستور Start-Process استفاده کرد.
اجرای Notepad:
Start-Process notepad.exe
باز کردن یک وبسایت در مرورگر:
Start-Process chrome.exe "https://www.parsdev.com"
این دستور در اسکریپتهای خودکارسازی بسیار کاربردی است.
توقف پردازشها با Stop-Process
برای بستن برنامهها و پردازشها از Stop-Process استفاده میشود.
بستن Notepad:
Stop-Process -Name notepad
بستن چند پردازش:
Stop-Process -Name notepad, chrome
مدیریت سرویسهای ویندوز
PowerShell ابزار بسیار مناسبی برای مدیریت سرویسهای ویندوز است.
مشاهده سرویسها
Get-Service
نمایش سرویسهای در حال اجرا:
Get-Service | Where-Object {$_.Status -eq "Running"}
راهاندازی سرویس
Start-Service -Name spooler
توقف سرویس
Stop-Service -Name spooler
در صورت نیاز به منابع پایدار و مقیاسپذیر، همین حالا خرید سرور ابری را انجام دهید.
فیلتر کردن اطلاعات با Where-Object
یکی از مهمترین قابلیتهای PowerShell امکان فیلتر کردن دادهها است. دستور Where-Object برای همین منظور استفاده میشود.
نمایش پردازشهایی با مصرف CPU بیشتر از مقدار مشخص:
Get-Process | Where-Object {$_.CPU -gt 10}
این قابلیت قدرت واقعی PowerShell را نشان میدهد.
مطالعه فایلها با Get-Content
برای خواندن محتوای فایلهای متنی میتوان از دستور Get-Content استفاده کرد.
نمایش کل فایل:
Get-Content myfile.txt
نمایش پنج خط اول:
Get-Content myfile.txt -TotalCount 5
نوشتن در فایلها با Set-Content و Add-Content
برای ایجاد یا بازنویسی فایل:
Set-Content myfile.txt "Welcome to PowerShell"
برای افزودن متن جدید:
Add-Content myfile.txt "New Line"
این دستورات در تولید گزارشها و لاگها بسیار مفید هستند.
ذخیره خروجی در فایل با Out-File
گاهی لازم است خروجی یک دستور را در فایل ذخیره کنید. برای این کار از Out-File استفاده میشود.
مثال:
Get-Service | Out-File services.txt
بررسی لاگهای ویندوز
PowerShell امکان دسترسی مستقیم به لاگهای سیستم را فراهم میکند.
نمایش آخرین خطاهای سیستم:
Get-EventLog -LogName Application -EntryType Error -Newest 10
استفاده از نسخه جدیدتر:
Get-WinEvent -LogName Application -MaxEvents 10
دریافت اطلاعات سیستم
برای مشاهده اطلاعات کامل سیستم میتوان از Get-ComputerInfo استفاده کرد.
Get-ComputerInfo
نمایش اطلاعات مهم:
Get-ComputerInfo | Select-Object CsName, WindowsVersion, OsArchitecture
این دستور برای بررسی سریع مشخصات سرورها و کلاینتها بسیار مفید است.
بررسی محیط PowerShell با Get-Host
برای مشاهده اطلاعات مربوط به محیط فعلی PowerShell:
Get-Host
نمایش نسخه PowerShell:
(Get-Host).Version
نمایش نام محیط:
(Get-Host).Name
شناخت ساختار اشیاء با Get-Member
یکی از مفاهیم کلیدی PowerShell کار با اشیاء است. دستور Get-Member به شما نشان میدهد که هر شیء چه ویژگیها و متدهایی دارد.
مثال:
Get-Date | Get-Member
این دستور یکی از مهمترین ابزارهای یادگیری PowerShell محسوب میشود.
مدیریت سیستمهای راه دور
PowerShell قابلیت مدیریت سرورهای راه دور را نیز فراهم میکند.
فعالسازی PowerShell Remoting:
Enable-PSRemoting -Force
اتصال به سرور راه دور:
Enter-PSSession -ComputerName DC1
خروج از نشست:
Exit-PSSession
اجرای یک دستور روی سیستم راه دور:
Invoke-Command -ComputerName DC1 -ScriptBlock { Get-Process }
چند توصیه مهم برای یادگیری سریعتر PowerShell
بسیاری از متخصصان PowerShell معتقدند حفظ کردن دستورات کافی نیست و باید روی حل مسائل واقعی تمرکز کنید. جامعه کاربران PowerShell نیز معمولا یادگیری دستورات زیر را نقطه شروع مناسبی برای افراد تازهکار میداند: Get-Help، Get-Command، Get-Member، Where-Object و Select-Object.
برای پیشرفت سریعتر:
- هر روز چند دستور جدید را آزمایش کنید.
- از Get-Help برای مطالعه مثالها استفاده کنید.
- خروجی دستورات را با Get-Member بررسی کنید.
- پروژههای کوچک خودکارسازی ایجاد کنید.
- با Pipelineها و Objectها آشنا شوید.
جمعبندی
PowerShell یکی از مهمترین ابزارهایی است که هر مدیر سیستم، کارشناس شبکه یا حتی کاربر حرفهای ویندوز باید یاد بگیرد. اگرچه این ابزار صدها Cmdlet و قابلیت مختلف دارد، اما یادگیری دستورات ضروری PowerShell مانند Get-Help، Get-Command، Get-ChildItem، Get-Process، Get-Service، Get-Content و Get-ComputerInfo میتواند نقطه شروع بسیار خوبی باشد. با تسلط بر این دستورات و تمرین مداوم، بهتدریج قادر خواهید بود وظایف پیچیده مدیریتی را به صورت خودکار انجام دهید و بهرهوری خود را به شکل قابل توجهی افزایش دهید.