آموزش دستورات ضروری CMD و PowerShell در ویندوز، مهارتی است که مرز بین کاربر عادی و حرفه‌ای ویندوز را مشخص می‌کند و در سال‌های اخیر، به دلیل رشد ابزارهای DevOps، توسعه وب و خودکارسازی فرآیندها، اهمیت آن چند برابر شده است. برخلاف تصور رایج، CMD (Command Prompt) یا خط فرمان ویندوز، ابزاری منسوخ نیست؛ بلکه هنوز در بسیاری از سناریوهای فنی، سریع‌ترین و مطمئن‌ترین راه برای انجام کار است. در کنار آن، PowerShell به‌عنوان نسل جدید خط فرمان ویندوز، امکاناتی فراتر از CMD ارائه می‌دهد: شیءگرایی، Pipeline پیشرفته، Cmdletهای تخصصی و یکپارچگی کامل با اکوسیستم مایکروسافت و حتی سرویس‌های ابری. آستانه تسلط بر دستورات پایه CMD معمولاً چند روز است، اما بازده آن در بلندمدت، بهره‌وری روزمره را چند برابر می‌کند. یادگیری PowerShell، به دلیل عمق بیشتر، ممکن است چند هفته زمان ببرد اما ارزش آن در پروژه‌های حرفه‌ای، DevOps و خودکارسازی، غیرقابل انکار است. تجربه‌های واقعی از پروژه‌های توسعه نشان می‌دهد که توسعه‌دهندگان مسلط به CMD و PowerShell، به‌طور میانگین ۳۰ تا ۵۰ درصد سریع‌تر از هم‌تایان GUI-محور خود عمل می‌کنند؛ چراکه اکثر ابزارهای مدرن توسعه (Git، npm، Composer، Docker و AWS CLI) در درجه اول ابزارهای خط فرمان هستند. این مقاله، آموزش جامع و عملی دستورات ضروری CMD و PowerShell در ویندوز را ارائه می‌کند: از دستور ساده cd /d برای تغییر مسیر در درایوهای مختلف، تا Pipeline در PowerShell، اجرای همزمان دستورات، باز کردن ترمینال جدید در پوشه جاری، Aliasها، Profileها، اسکریپت‌نویسی و Execution Policy. همچنین، تفاوت‌های بنیادین CMD و PowerShell، اشتباهات رایج و چارچوبی عملی برای استفاده حرفه‌ای از هر دو ابزار بررسی می‌شود.

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

چرا تسلط بر CMD و PowerShell در ویندوز حیاتی است؟

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

دلایل حیاتی بودن CMD و PowerShell

  • اکوسیستم ابزارهای خط فرمان: Git، npm، Composer، Docker، AWS CLI، Azure CLI و اکثر ابزارهای DevOps، در درجه اول CLI-محور هستند.
  • خودکارسازی: هر دستور CMD یا PowerShell را می‌توان در یک اسکریپت گنجاند و به‌طور خودکار اجرا کرد.
  • سرعت: انجام یک کار با یک دستور، سریع‌تر از چند کلیک در GUI است.
  • دسترسی از راه دور: با SSH، امکان مدیریت سرورهای لینوکس از ویندوز فراهم است.
  • تکرارپذیری: دستورات قابل اشتراک و تکرار در محیط‌های مختلف.
  • یکپارچگی با CI/CD: اسکریپت‌های PowerShell، بخش جدایی‌ناپذیر Azure DevOps و GitHub Actions در ویندوز هستند.
  • رفع خطاهای پیچیده: بسیاری از مشکلات ویندوز با ابزارهای GUI به‌سختی قابل تشخیص‌اند اما با دستورات تخصصی، سریع‌تر حل می‌شوند.
«در ویندوز، GUI برای راحتی است و CLI برای قدرت؛ توسعه‌دهنده‌ای که هر دو را بشناسد، از هر کدام در جای مناسب استفاده می‌کند.»

برای درک عمیق‌تر مزایای CLI در بهره‌وری کلی، مقاله CLI چطور کارایی توسعه‌دهندگان را بالا می‌برد؟ را مطالعه کنید. همچنین اگر به تفاوت‌های فلسفی این دو رویکرد علاقه‌مندید، مقاله GUI در مقابل CLI: کدام برای شما بهتر است؟ چارچوب مفهومی این حوزه را باز می‌کند.

تفاوت‌های بنیادین CMD و PowerShell

CMD و PowerShell، هر دو ابزارهای خط فرمان ویندوز هستند اما در ماهیت، معماری و توانمندی‌ها تفاوت‌های بنیادین دارند. درک این تفاوت‌ها، پیش‌نیاز انتخاب درست و استفاده حرفه‌ای است.

مقایسه ساختاری CMD و PowerShell

ویژگیCMDPowerShell
سال معرفی۱۹۸۷ (با MS-DOS)۲۰۰۶
مبنای طراحیمتن‌محورشیءگرا
خروجی دستوراتمتنشیء (Object)
زبان اسکریپت‌نویسیBatch (محدود)PowerShell Scripting
Pipelineمتن بین دستوراتشیء بین Cmdletها
دسترسی به WMI/CIMمحدودکامل
دسترسی به .NETنداردکامل
یکپارچگی با Azure/AWSمحدودکامل
پشتیبانی چندسکوییخیربله (PowerShell Core)
تفسیرپذیریساده‌ترپیچیده‌تر

چرا CMD هنوز زنده است؟

  • سبکی و سرعت اجرا: CMD سریع‌تر از PowerShell اجرا می‌شود.
  • سازگاری تاریخی: اکثر اسکریپت‌های قدیمی ویندوز بر پایه CMD نوشته شده‌اند.
  • سادگی: برای کارهای ساده، CMD انتخاب بهتری است.
  • نبود نیاز به تنظیمات: CMD بدون پیکربندی اضافی کار می‌کند.
  • پشتیبانی گسترده: در تمام نسخه‌های ویندوز از ابتدا نصب است.

چرا PowerShell آینده است؟

  • شیءگرایی: خروجی دستورات، شیء است، نه متن.
  • Pipeline پیشرفته: امکان ترکیب Cmdletهای متعدد با Filter و Sort پیچیده.
  • دسترسی به .NET: امکان استفاده از تمام قابلیت‌های دات‌نت.
  • یکپارچگی ابری: ماژول‌های Azure، AWS، Google Cloud و Microsoft 365.
  • چندسکویی: PowerShell Core روی Linux و macOS نیز اجرا می‌شود.
  • اسکریپت‌نویسی قوی: زبان کامل با متغیر، شرط، حلقه و تابع.
  • مستندسازی داخلی: هر Cmdlet دارای Help داخلی است.

اگر به دنبال انتخاب محیط توسعه مناسب برای کار با این ابزارها هستید، مقاله IDE و انتخاب درست برای زبان برنامه‌نویسی چطور انجام می‌شود؟ را مطالعه کنید. همچنین مقاله بهترین IDEهای رایگان برای توسعه‌دهندگان نکات عملی مهمی ارائه می‌دهد.

دستورات پایه و ضروری CMD

CMD یا Command Prompt، خط فرمان کلاسیک ویندوز است که با وجود قدمت، همچنان ابزاری کارآمد برای بسیاری از کارهای روزمره محسوب می‌شود. دستورات پایه CMD، الفبای کار با ویندوز هستند.

دستورات اطلاع‌رسانی

  • help — نمایش لیست دستورات موجود.
  • help command — نمایش راهنمای یک دستور خاص.
  • command /? — نمایش راهنمای دستور با سوییچ /?.
  • ver — نمایش نسخه ویندوز.
  • systeminfo — نمایش اطلاعات کامل سیستم.
  • whoami — نمایش کاربر جاری.
  • hostname — نمایش نام کامپیوتر.

دستورات پیمایش و مدیریت فایل

  • dir — نمایش محتویات پوشه جاری.
  • dir /a — نمایش همه فایل‌ها شامل مخفی.
  • dir /s — نمایش بازگشتی زیرپوشه‌ها.
  • dir /b — نمایش فقط نام فایل‌ها (Bare).
  • tree /f — نمایش ساختار درختی با فایل‌ها.
  • md foldername یا mkdir foldername — ایجاد پوشه.
  • rd foldername یا rmdir foldername — حذف پوشه خالی.
  • rd /s /q foldername — حذف بازگشتی بدون تأیید (با احتیاط).
  • copy source dest — کپی فایل.
  • xcopy /e /i source dest — کپی پوشه با زیرپوشه‌ها.
  • robocopy source dest /e — کپی پیشرفته با پشتیبانی از بازگشتی.
  • move source dest — انتقال فایل.
  • ren oldname newname — تغییر نام.
  • del filename — حذف فایل.
  • del /f /q filename — حذف اجباری بدون تأیید.
  • type filename.txt — نمایش محتوای فایل.
  • more filename.txt — نمایش صفحه‌به‌صفحه.
  • find "text" filename — جستجو در فایل.
  • findstr /s /i "text" *.txt — جستجوی بازگشتی در فایل‌های متنی.

دستورات پردازش و شبکه

  • tasklist — نمایش فرآیندهای فعال.
  • tasklist | findstr chrome — یافتن فرآیند خاص.
  • taskkill /im chrome.exe /f — خاتمه اجباری فرآیند.
  • taskkill /pid 1234 /f — خاتمه بر پایه PID.
  • ping host — بررسی اتصال.
  • ping -n 4 host — ارسال ۴ بسته.
  • tracert host — مسیریابی شبکه.
  • ipconfig — نمایش تنظیمات شبکه.
  • ipconfig /all — نمایش کامل اطلاعات شبکه.
  • ipconfig /flushdns — پاک‌سازی کش DNS.
  • netstat -an — نمایش اتصالات شبکه.
  • netstat -ano | findstr :80 — یافتن فرآیند روی پورت.
  • nslookup domain — استعلام DNS.
  • net use — مدیریت درایوهای شبکه.
  • net share — نمایش منابع اشتراکی.

دستورات سیستم

  • shutdown /s /t 60 — خاموشی پس از ۶۰ ثانیه.
  • shutdown /r /t 0 — راه‌اندازی مجدد فوری.
  • shutdown /a — لغو خاموشی.
  • sfc /scannow — بررسی و ترمیم فایل‌های سیستم.
  • chkdsk /f — بررسی و رفع خطاهای دیسک.
  • cleanmgr — اجرای ابزار پاک‌سازی دیسک.
  • diskpart — مدیریت پارتیشن‌ها.
  • powercfg /batteryreport — گزارش وضعیت باتری.
«CMD، ابزار ساده‌ای است اما همین سادگی، در دست توسعه‌دهنده مسلط، به قدرت تبدیل می‌شود.»

دستور cd و cd /d: قلب پیمایش در CMD

دستور cd (Change Directory) یکی از پرکاربردترین دستورات CMD است که برای تغییر پوشه جاری استفاده می‌شود. اما بسیاری از کاربران از سوییچ /d این دستور غافل هستند که همین سوییچ، امکان پیمایش بین درایوهای مختلف را فراهم می‌کند.

استفاده پایه از cd

  • cd — نمایش مسیر پوشه جاری.
  • cd foldername — ورود به زیرپوشه.
  • cd .. — بازگشت به پوشه والد.
  • cd .... — بازگشت دو سطح به بالا.
  • cd — بازگشت به ریشه درایو جاری.
  • cd %USERPROFILE% — رفتن به پوشه کاربر جاری.
  • cd %HOMEDRIVE%%HOMEPATH% — روش قدیمی‌تر برای رفتن به پوشه کاربر.

نقش حیاتی cd /d

یکی از بزرگ‌ترین محدودیت‌های CMD در مقایسه با Linux، عدم امکان پیمایش بین درایوها با دستور ساده cd است. برای مثال، اگر در درایو C: هستید و می‌خواهید به پوشه‌ای در درایو D: بروید، cd D:Projects کار نمی‌کند. برای حل این مسئله، باید از سوییچ /d استفاده کنید:

cd /d D:Projects

این دستور، هم درایو جاری را تغییر می‌دهد و هم مسیر را در همان درایو تنظیم می‌کند.

مثال‌های کاربردی cd /d

  • cd /d "D:ProjectsMyWebsite" — رفتن به پروژه در درایو D با مسیر حاوی فاصله.
  • cd /d %USERPROFILE%Downloads — رفتن به پوشه دانلودها.
  • cd /d "C:Program FilesGit" — رفتن به پوشه حاوی فاصله.
  • cd /d \servershare — رفتن به مسیر شبکه‌ای (UNC).
  • cd /d %CD% — راهی برای دیدن مسیر جاری با سوییچ /d.

نکات مهم درباره cd /d

  • در صورت وجود فاصله در مسیر، باید مسیر را داخل علامت نقل قول قرار دهید.
  • سوییچ /d در PowerShell کاربرد متفاوتی دارد؛ در PowerShell، دستور Set-Location به‌طور خودکار بین درایوها جابجا می‌شود.
  • در PowerShell، cd یک Alias برای Set-Location است و نیازی به /d ندارد.

پیمایش بین درایوها در PowerShell

در PowerShell، پیمایش بین درایوها ساده‌تر است:

  • Set-Location D:Projects — رفتن به درایو D.
  • cd D:Projects — Alias ساده‌تر.
  • Set-Location -Path "C:Program Files" — با نام کامل.
  • cd ~ — رفتن به پوشه کاربر.
  • cd - — بازگشت به پوشه قبلی (در PowerShell Core).
«cd /d، پل بین درایوهاست؛ بدون آن، پیمایش در CMD به یک قفس محدود می‌ماند.»

برای درک عمیق‌تر تفاوت دستورات CMD و PowerShell، بخش‌های بعدی این مقاله را مطالعه کنید. همچنین اگر روی مدیریت سرورهای ویندوز کار می‌کنید، مقاله دستورات ضروری CLI برای مدیریت سرور کدامند؟ نکات مهمی ارائه می‌دهد.

مدیریت فایل و پوشه در CMD

مدیریت فایل و پوشه، یکی از پرکاربردترین حوزه‌ها در استفاده روزمره از CMD است. تسلط بر این دستورات، کارهای تکراری را به عملیات سریع تبدیل می‌کند.

دستورات پیشرفته مدیریت فایل

  • attrib +h file.txt — مخفی کردن فایل.
  • attrib -h file.txt — لغو حالت مخفی.
  • icacls file.txt /grant user:F — مدیریت مجوزهای فایل.
  • takeown /f file.txt — تصاحب مالکیت فایل.
  • compact /c file.txt — فشرده‌سازی فایل.
  • cipher /e folder — رمزنگاری پوشه.
  • mklink /d link target — ایجاد Symbolic Link.
  • mklink /h hardlink target — ایجاد Hard Link.

جستجوی پیشرفته در CMD

  • dir /s /b *.log — یافتن همه فایل‌های log.
  • where python — یافتن مسیر یک فایل اجرایی.
  • where /r C: python.exe — جستجوی بازگشتی.
  • findstr /s /i /m "error" *.log — یافتن فایل‌های حاوی کلمه خطا.
  • forfiles /p C:Logs /m *.log /d -30 /c "cmd /c del @path" — حذف فایل‌های قدیمی‌تر از ۳۰ روز.

پردازش دسته‌ای فایل‌ها

CMD امکان پردازش دسته‌ای فایل‌ها را از طریق حلقه for فراهم می‌کند:

  • for %f in (*.txt) do echo %f — نمایش همه فایل‌های txt.
  • for /r %f in (*.jpg) do copy "%f" C:Backup — کپی همه تصاویر.
  • for /d %d in (*) do echo %d — نمایش همه زیرپوشه‌ها.
  • for /l %i in (1,1,10) do echo %i — شمارش از ۱ تا ۱۰.
  • for /f "tokens=*" %a in (file.txt) do echo %a — خواندن خطوط فایل.

متغیرهای محیطی

  • set — نمایش همه متغیرهای محیطی.
  • set PATH — نمایش مقدار PATH.
  • set MYVAR=value — تعریف متغیر موقت.
  • setx MYVAR "value" /M — تعریف متغیر سیستمی (نیازمند دسترسی ادمین).
  • echo %PATH% — نمایش مقدار یک متغیر.

در تجربه‌های واقعی، دیده‌ام که دستور forfiles، یکی از کم‌شناخته‌شده‌ترین اما مؤثرترین دستورات CMD برای خودکارسازی پاک‌سازی فایل‌های قدیمی است.

دستورات شبکه در CMD

عیب‌یابی شبکه، یکی از پرتکرارترین کارهای توسعه‌دهندگان و مدیران سیستم است. دستورات شبکه CMD، ابزارهای پایه برای این کار محسوب می‌شوند.

دستورات عیب‌یابی

  • ipconfig /all — نمایش کامل تنظیمات شبکه.
  • ipconfig /release — آزادسازی IP.
  • ipconfig /renew — دریافت IP جدید.
  • ipconfig /flushdns — پاک‌سازی کش DNS.
  • ipconfig /displaydns — نمایش کش DNS.
  • ping -t host — پینگ مداوم.
  • ping -a ip — تبدیل IP به نام میزبان.
  • tracert -d host — مسیریابی بدون Resolve DNS.
  • pathping host — ترکیب ping و tracert با آمار.
  • nslookup domain 8.8.8.8 — استعلام DNS از سرور خاص.
  • nslookup -type=mx domain — استعلام رکورد MX.

دستورات پایش اتصالات

  • netstat -an — نمایش همه اتصالات و پورت‌های Listening.
  • netstat -ano — نمایش با PID فرآیند.
  • netstat -ano | findstr LISTENING — فیلتر پورت‌های فعال.
  • netstat -ano | findstr :8080 — یافتن فرآیند روی پورت ۸۰۸۰.
  • netstat -b — نمایش فایل اجرایی متصل (نیازمند ادمین).

دستورات تست اتصال

  • telnet host port — تست دسترسی به پورت (نیازمند فعال‌سازی Telnet).
  • curl url — درخواست HTTP.
  • curl -I url — دریافت فقط هدرها.
  • curl -o file.zip url — دانلود فایل.
  • curl -X POST -d "data" url — ارسال درخواست POST.

دستورات مدیریت شبکه

  • netsh interface show interface — نمایش رابط‌های شبکه.
  • netsh wlan show profiles — نمایش پروفایل‌های WiFi.
  • netsh firewall show config — نمایش تنظیمات فایروال.
  • net use Z: \servershare — اتصال درایو شبکه.
  • net share — نمایش منابع اشتراکی.
  • net user — نمایش کاربران سیستم.

دستورات سیستم و پردازش در CMD

مدیریت پردازش‌ها و منابع سیستم، بخش دیگری از کارهای روزمره با CMD است که تسلط بر آن، در عیب‌یابی و بهینه‌سازی اهمیت بالایی دارد.

مدیریت پردازش‌ها

  • tasklist — لیست همه فرآیندهای فعال.
  • tasklist /svc — نمایش سرویس‌های مرتبط با هر فرآیند.
  • tasklist /v — نمایش اطلاعات تفصیلی.
  • tasklist /fi "memusage gt 500000" — فیلتر بر پایه مصرف حافظه.
  • taskkill /im process.exe — خاتمه نرم فرآیند.
  • taskkill /f /im process.exe — خاتمه اجباری.
  • wmic process where "name='process.exe'" call terminate — روش جایگزین.

مدیریت سرویس‌ها

  • sc query — لیست سرویس‌های فعال.
  • sc query servicename — اطلاعات یک سرویس.
  • sc start servicename — شروع سرویس.
  • sc stop servicename — توقف سرویس.
  • sc config servicename start= auto — تنظیم شروع خودکار.
  • net start servicename — شروع سرویس با net.
  • net stop servicename — توقف سرویس با net.

اطلاعات سیستم

  • systeminfo — اطلاعات کامل سیستم.
  • wmic cpu get name — اطلاعات CPU.
  • wmic memorychip get capacity — ظرفیت RAM.
  • wmic diskdrive get size — ظرفیت دیسک.
  • wmic logicaldisk get name,freespace,size — فضای دیسک‌ها.
  • wmic os get caption,version — اطلاعات سیستم‌عامل.

انتقال به PowerShell: نسل جدید ترمینال ویندوز

PowerShell، به‌عنوان نسل جدید خط فرمان ویندوز، امکاناتی فراتر از CMD ارائه می‌دهد که آن را به ابزاری حیاتی برای توسعه‌دهندگان حرفه‌ای تبدیل کرده است.

دستورات پایه PowerShell

  • Get-Help — راهنمای جامع هر Cmdlet.
  • Get-Command — لیست همه Cmdletها.
  • Get-Command -Module Microsoft.PowerShell.Management — لیست Cmdletهای یک ماژول.
  • Get-Member — نمایش اجزای یک شیء.
  • Get-Verb — لیست فعل‌های استاندارد.
  • Update-Help — به‌روزرسانی راهنماهای داخلی.

دستورات مدیریت فایل در PowerShell

  • Get-ChildItem یا ls — لیست محتویات پوشه.
  • Get-Item — اطلاعات یک آیتم.
  • New-Item -ItemType File -Name test.txt — ایجاد فایل.
  • New-Item -ItemType Directory -Name MyFolder — ایجاد پوشه.
  • Copy-Item source dest — کپی آیتم.
  • Move-Item source dest — انتقال آیتم.
  • Remove-Item path — حذف آیتم.
  • Remove-Item -Recurse -Force path — حذف بازگشتی اجباری.
  • Rename-Item old new — تغییر نام.
  • Get-Content file.txt — نمایش محتوای فایل.
  • Set-Content file.txt "text" — نوشتن در فایل.
  • Add-Content file.txt "text" — افزودن به فایل.

دستورات مدیریت سیستم

  • Get-Process — لیست فرآیندهای فعال.
  • Stop-Process -Name chrome — خاتمه فرآیند.
  • Get-Service — لیست سرویس‌ها.
  • Start-Service -Name Spooler — شروع سرویس.
  • Get-ComputerInfo — اطلاعات کامل سیستم.
  • Get-EventLog -LogName Application — لاگ‌های سیستم.

دستورات شبکه در PowerShell

  • Test-Connection host — معادل ping.
  • Test-NetConnection host -Port 80 — بررسی پورت.
  • Get-NetIPConfiguration — تنظیمات IP.
  • Get-NetTCPConnection — اتصالات TCP.
  • Invoke-WebRequest -Uri url — درخواست HTTP.
  • Invoke-RestMethod -Uri api — درخواست API با پارس JSON.

نکته مهم در PowerShell، نام‌گذاری فعل-اسم Cmdletهاست که خوانایی را افزایش می‌دهد. برای درک عمیق‌تر این رویکرد، مقاله چگونه کدنویسی وردپرس را اصولی شروع کنیم؟ نکات مفیدی درباره نام‌گذاری و ساختار ارائه می‌دهد.

Cmdlet چیست و چگونه کار می‌کند؟

Cmdlet (تلفظ: Command-let) واحد بنیادین در PowerShell است که کارکردی مشابه دستور در CMD یا تابع در زبان‌های برنامه‌نویسی دارد. اما تفاوت بنیادین Cmdlet با دستورات معمولی در ماهیت شیءگرای آن است.

ویژگی‌های Cmdlet

  • نام‌گذاری فعل-اسم: هر Cmdlet از الگوی Verb-Noun پیروی می‌کند.
  • خروجی شیء: خروجی، شیء است نه متن ساده.
  • پارامترگذاری استاندارد: پارامترها با خط تیره شروع می‌شوند.
  • Pipeline-Friendly: خروجی هر Cmdlet قابل ارسال به Cmdlet دیگر است.
  • Help داخلی: هر Cmdlet دارای Help داخلی است.

فعل‌های استاندارد PowerShell

فعلکاربردمثال
Getدریافت اطلاعاتGet-Process
Setتنظیم مقدارSet-Content
Newایجاد جدیدNew-Item
RemoveحذفRemove-Item
StartشروعStart-Service
StopتوقفStop-Process
TestبررسیTest-Connection
InvokeاجراInvoke-WebRequest
SelectانتخابSelect-Object
WhereفیلترWhere-Object

مثال ترکیبی

Get-Process | Where-Object { $_.CPU -gt 100 } | Select-Object Name, CPU

این دستور، فرآیندهای با مصرف CPU بالای ۱۰۰ را فیلتر و نام و مقدار CPU آنها را نمایش می‌دهد.

«Cmdlet، آجر بنیادین PowerShell است؛ با ترکیب این آجرها، می‌توان ساختمان‌های پیچیده خودکارسازی ساخت.»

Pipeline در PowerShell: قلب قدرت آن

Pipeline در PowerShell، یکی از متمایزترین ویژگی‌های این ابزار است که آن را از CMD و حتی بسیاری از زبان‌های Shell دیگر جدا می‌کند.

تفاوت Pipeline در CMD و PowerShell

ویژگیCMDPowerShell
نوع دادهمتن سادهشیء ساختاریافته
دسترسی به خواصمحدودکامل
فیلتر پیشرفتهنداردWhere-Object
تبدیل دادهمحدودForEach-Object
Select و SortمحدودSelect-Object, Sort-Object
گروه‌بندینداردGroup-Object
اندازه‌گیرینداردMeasure-Object

Cmdletهای کلیدی Pipeline

  • Where-Object — فیلتر بر پایه شرط.
  • Select-Object — انتخاب خواص یا تعداد.
  • Sort-Object — مرتب‌سازی.
  • Group-Object — گروه‌بندی بر پایه خاصیت.
  • Measure-Object — محاسبه مجموع، میانگین، حداقل، حداکثر.
  • ForEach-Object — پردازش هر آیتم.
  • Tee-Object — ارسال به فایل و ادامه Pipeline.

مثال‌های عملی Pipeline

  • Get-ChildItem -Recurse | Where-Object { $_.Length -gt 1MB } — یافتن فایل‌های بزرگ‌تر از ۱ مگابایت.
  • Get-Process | Sort-Object CPU -Descending | Select-Object -First 10 — ۱۰ فرآیند با بیشترین مصرف CPU.
  • Get-ChildItem *.log | Measure-Object -Property Length -Sum — مجموع حجم فایل‌های log.
  • Get-Service | Where-Object Status -eq "Running" | Group-Object StartType — گروه‌بندی سرویس‌های فعال.
  • Get-Content access.log | Select-String "error" | Measure-Object — شمارش خطاهای لاگ.
  • Get-ChildItem | ForEach-Object { $_.Name.ToUpper() } — تبدیل نام‌ها به حروف بزرگ.

$_ و $PSItem

در Pipeline PowerShell، $_ به آیتم جاری Pipeline اشاره می‌کند. این متغیر، در Filterها و ForEach بسیار پرکاربرد است:

  • Where-Object { $_.Name -like "*.txt" } — فایل‌های txt.
  • ForEach-Object { $_.Delete() } — حذف هر آیتم.
  • $PSItem — نام جایگزین که در نسخه‌های جدید توصیه می‌شود.

اجرای همزمان دستورات در CMD و PowerShell

اجرای همزمان دستورات، یکی از پرتکرارترین نیازها در خودکارسازی است. CMD و PowerShell، هر یک رویکردهای متفاوتی برای این کار ارائه می‌دهند.

اجرای همزمان در CMD

در CMD، سه اپراتور اصلی برای ترکیب دستورات وجود دارد:

  • & — اجرای ترتیبی بدون توجه به موفقیت.
  • && — اجرای دستور دوم در صورت موفقیت اولی.
  • || — اجرای دستور دوم در صورت شکست اولی.
  • start — اجرای دستور در پنجره جدید (همزمان).

مثال‌های اجرای همزمان در CMD

  • command1 & command2 — اجرای هر دو به ترتیب.
  • command1 && command2 — اجرای دوم در صورت موفقیت اولی.
  • command1 || command2 — اجرای دوم در صورت شکست اولی.
  • start cmd /k command — باز کردن پنجره جدید و اجرا.
  • start notepad.exe — اجرای برنامه بدون انتظار.
  • start /b command — اجرای بدون پنجره جدید.
  • start /wait command — انتظار برای پایان.

اجرای همزمان در PowerShell

  • command1; command2 — اجرای ترتیبی (مستقل از نتیجه).
  • command1 && command2 — اجرای دوم در صورت موفقیت (PowerShell 7+).
  • command1 || command2 — اجرای دوم در صورت شکست (PowerShell 7+).
  • Start-Process -FilePath cmd -ArgumentList "/k command" — پنجره جدید.
  • Start-Job -ScriptBlock { command } — اجرای پس‌زمینه.
  • Start-ThreadJob -ScriptBlock { command } — نسخه سریع‌تر Start-Job.
  • ForEach-Object -Parallel { command } — اجرای موازی (PowerShell 7+).
  • Start-Process -Wait -FilePath cmd — انتظار برای پایان.

الگوی اجرای موازی در PowerShell 7+

PowerShell 7، قابلیت اجرای موازی را با ForEach-Object -Parallel ارائه می‌دهد:

1..10 | ForEach-Object -Parallel { Write-Host "Task $_" } -ThrottleLimit 5

این دستور، ۱۰ کار را با محدودیت ۵ کار همزمان اجرا می‌کند.

اجرای پس‌زمینه و مدیریت Jobها

  • Start-Job -ScriptBlock { Get-Process } — شروع Job.
  • Get-Job — لیست Jobها.
  • Receive-Job -Id 1 — دریافت نتیجه Job.
  • Stop-Job -Id 1 — توقف Job.
  • Remove-Job -Id 1 — حذف Job.
  • Wait-Job -Id 1 — انتظار برای پایان.
«در PowerShell، اجرای موازی نه یک ویژگی جانبی، بلکه بخشی از طراحی است؛ ابزاری برای تبدیل کارهای ترتیبی به کارهای موازی.»

باز کردن ترمینال جدید در پوشه جاری

باز کردن ترمینال جدید در پوشه جاری، یکی از کارهای پرتکرار در توسعه است. ویندوز چند روش برای این کار ارائه می‌دهد.

روش‌های باز کردن ترمینال در پوشه جاری

روش اول: نوار آدرس File Explorer

در File Explorer، با تایپ cmd یا powershell در نوار آدرس و زدن Enter، ترمینال در پوشه جاری باز می‌شود.

روش دوم: Shift + کلیک راست

با نگه داشتن Shift و کلیک راست در پوشه، گزینه‌های «Open PowerShell window here» یا «Open command window here» ظاهر می‌شود.

روش سوم: منوی راست‌کلیک مدرن (Windows 11)

در Windows 11، با راست‌کلیک در پوشه، گزینه «Open in Terminal» به‌طور پیش‌فرض ارائه می‌شود.

روش چهارم: استفاده از دستور start

  • start cmd — باز کردن CMD جدید در پوشه جاری.
  • start powershell — باز کردن PowerShell جدید در پوشه جاری.
  • start wt — باز کردن Windows Terminal در پوشه جاری.
  • start cmd /k "cd /d C:Projects" — باز کردن CMD و تغییر مسیر.
  • start powershell -NoExit -Command "Set-Location C:Projects" — PowerShell با مسیر مشخص.

روش پنجم: Windows Terminal از پوشه جاری

  • wt -d . — باز کردن Windows Terminal در پوشه جاری.
  • wt -d C:Projects pwsh — باز کردن با PowerShell Core.
  • wt new-tab -d . — تب جدید در همان پنجره.
  • wt split-pane -d . — تقسیم پنجره به دو پنل.

ارجاع به پوشه جاری در اسکریپت‌ها

  • %CD% در CMD — متغیر پوشه جاری.
  • $PWD در PowerShell — شیء پوشه جاری.
  • (Get-Location).Path — مسیر پوشه جاری.
  • $pwd.Path — راه کوتاه‌تر در PowerShell.

Alis و Functionهای مفید برای باز کردن ترمینال

در PowerShell می‌توانید Alias تعریف کنید:

function cde { start cmd /k "cd /d $PWD" }

با این تابع، هر بار که cde را تایپ کنید، یک CMD جدید در پوشه جاری باز می‌شود.

Windows Terminal و ابزارهای مدرن

Windows Terminal، اپلیکیشن مدرن ترمینال مایکروسافت است که تجربه استفاده از CMD، PowerShell، WSL و Azure Cloud Shell را در یک محیط یکپارچه فراهم می‌کند.

ویژگی‌های Windows Terminal

  • تب‌بندی و تقسیم پنجره: چند Session در یک پنجره.
  • GPU Acceleration: رندر سریع‌تر متنی.
  • پشتیبانی از Emoji و Unicode: نمایش صحیح زبان‌های مختلف.
  • پروفایل‌های متنوع: CMD، PowerShell، WSL، Git Bash.
  • سفارشی‌سازی کامل: رنگ، فونت، شفافیت.
  • پشتیبانی از Panes: تقسیم پنجره به چند بخش.

میان‌برهای کلیدی Windows Terminal

میان‌برعملکرد
Ctrl+Shift+Tتب جدید
Ctrl+Shift+Wبستن تب
Alt+Shift+Dتقسیم پنل
Alt+Arrowجابجایی بین پنل‌ها
Ctrl+Shift+PCommand Palette
Ctrl+Tabجابجایی بین تب‌ها

ابزارهای مکمل مدرن

  • Oh My Posh: سفارشی‌سازی Prompt PowerShell.
  • Starship: Prompt مدرن چندسکویی.
  • fzf: جستجوی تعاملی.
  • ripgrep: جستجوی سریع در فایل‌ها.
  • fd: جایگزین سریع‌تر find.
  • bat: نمایش فایل با Syntax Highlight.
  • Windows Subsystem for Linux (WSL): اجرای Linux در ویندوز.

در تجربه‌های واقعی، دیده‌ام که ترکیب Windows Terminal، Oh My Posh و WSL، محیط توسعه ویندوز را به یک محیط حرفه‌ای و کارآمد تبدیل می‌کند که با Linux و macOS قابل رقابت است.

Alias و میان‌برهای شخصی

Alias، یکی از ساده‌ترین و مؤثرترین راهکارهای افزایش بهره‌وری در CMD و PowerShell است.

Alias در CMD

  • doskey ls=dir — تعریف Alias در Session جاری.
  • doskey ll=dir /a — Alias پیشرفته.
  • doskey clear=cls — Alias ساده.
  • doskey gs=git status $* — Alias با پارامتر.
  • doskey /macros — نمایش Aliasهای تعریف‌شده.
  • doskey /history — تاریخچه دستورات.

نکته مهم: Aliasهای doskey در Session جاری باقی می‌مانند و پس از بستن پنجره از بین می‌روند. برای ماندگاری، باید آنها را در Registry یا فایل Autorun ذخیره کرد.

Alias در PowerShell

  • New-Alias -Name ll -Value Get-ChildItem — تعریف Alias جدید.
  • Set-Alias -Name gs -Value Get-Service — تعریف/تغییر Alias.
  • Get-Alias — لیست Aliasها.
  • Remove-Alias -Name ll — حذف Alias.
  • Export-Alias -Path aliases.txt — خروجی Aliasها.
  • Import-Alias -Path aliases.txt — بارگذاری Aliasها.

Aliasهای پیش‌فرض PowerShell

AliasCmdlet
lsGet-ChildItem
cdSet-Location
cpCopy-Item
mvMove-Item
rmRemove-Item
catGet-Content
echoWrite-Output
psGet-Process
gcGet-Content
scSet-Content

Function در PowerShell

برای دستورات پیچیده‌تر، Function مناسب‌تر از Alias است:

function ll { Get-ChildItem -Force }

function gs { git status }

function gpush { git add .; git commit -m $args[0]; git push }

Functionها امکان تعریف پارامتر، منطق شرطی و بازگشت مقدار را فراهم می‌کنند.

Profile در PowerShell: پیکربندی پایدار

Profile، یکی از قدرتمندترین ویژگی‌های PowerShell است که امکان پیکربندی پایدار محیط را فراهم می‌کند.

Profile چیست؟

Profile یک اسکریپت PowerShell است که هر بار باز شدن PowerShell، به‌طور خودکار اجرا می‌شود. این اسکریپت، می‌تواند شامل Aliasها، Functionها، تنظیمات Prompt، تغییر مسیر پیش‌فرض و هر تنظیم دیگری باشد.

انواع Profile

  • AllUsersAllHosts: برای همه کاربران و همه Hostها.
  • AllUsersCurrentHost: همه کاربران، Host جاری.
  • CurrentUserAllHosts: کاربر جاری، همه Hostها.
  • CurrentUserCurrentHost: کاربر جاری، Host جاری (رایج‌ترین).

مسیرهای Profile

برای مشاهده مسیرهای Profile در PowerShell:

$PROFILE | Get-Member

برای نمایش مسیرها:

  • $PROFILE — مسیر Profile کاربر جاری.
  • $PROFILE.AllUsersAllHosts — مسیر عمومی.
  • $PROFILE.CurrentUserAllHosts — برای همه Hostها.

ایجاد و ویرایش Profile

  • Test-Path $PROFILE — بررسی وجود Profile.
  • New-Item -Path $PROFILE -ItemType File -Force — ایجاد Profile.
  • notepad $PROFILE — ویرایش با Notepad.
  • code $PROFILE — ویرایش با VS Code.
  • . $PROFILE — بارگذاری مجدد Profile بدون راه‌اندازی.

نمونه Profile کاربردی

یک نمونه Profile مفید برای توسعه‌دهنده:

Set-Alias ll Get-ChildItem -Force
function gs { git status }
function gpush { git add .; git commit -m $args[0]; git push }
function proj { Set-Location C:Projects }
Set-Location C:Users

با این Profile، هر بار باز شدن PowerShell، Aliasها فعال و پوشه پیش‌فرض تنظیم می‌شود.

«Profile، ابزار تبدیل PowerShell به محیط شخصی است؛ ابزاری که بهره‌وری روزمره را چند برابر می‌کند.»

اسکریپت‌نویسی در PowerShell

اسکریپت‌نویسی، یکی از قدرتمندترین قابلیت‌های PowerShell است که آن را از یک ابزار خط فرمان به یک زبان برنامه‌نویسی کامل تبدیل می‌کند.

متغیرها و انواع داده

  • $name = "Ali" — متغیر رشتی.
  • $age = 30 — متغیر عددی.
  • $list = @(1, 2, 3) — آرایه.
  • $hash = @{Name="Ali"; Age=30} — Hashtable.
  • [int]$count = 5 — تعریف نوع صریح.
  • $name.Length — دسترسی به خاصیت.

ساختارهای کنترلی

  • if ($x -gt 10) { "big" } else { "small" } — شرط.
  • switch ($x) { 1 { "one" } 2 { "two" } } — Switch.
  • foreach ($i in 1..10) { $i } — حلقه foreach.
  • for ($i=0; $i -lt 10; $i++) { $i } — حلقه for.
  • while ($true) { break } — حلقه while.

توابع در PowerShell

function Get-Square {
param([int]$Number)
return $Number * $Number
}
Get-Square -Number 5

مدیریت خطا

  • try { ... } catch { ... } finally { ... } — مدیریت خطا.
  • $ErrorActionPreference = "Stop" — توقف در خطا.
  • $Error — آرایه خطاهای جاری.
  • Write-Error "message" — گزارش خطا.
  • Write-Host "message" — نمایش پیام.
  • Write-Output "message" — خروجی در Pipeline.

اسکریپت نمونه: پاک‌سازی فایل‌های موقت

$tempPaths = @("$env:TEMP", "C:WindowsTemp")
foreach ($path in $tempPaths) {
if (Test-Path $path) {
Get-ChildItem $path -Recurse | Where-Object {
$_.LastWriteTime -lt (Get-Date).AddDays(-30)
} | Remove-Item -Force -ErrorAction SilentlyContinue
}
}
Write-Host "Cleanup complete"

این اسکریپت، فایل‌های قدیمی‌تر از ۳۰ روز در پوشه‌های موقت را حذف می‌کند.

Execution Policy و امنیت اسکریپت‌ها

Execution Policy، مکانیزم امنیتی PowerShell است که تعیین می‌کند چه اسکریپت‌هایی می‌توانند اجرا شوند. این مکانیزم، از اجرای تصادفی اسکریپت‌های مخرب جلوگیری می‌کند.

انواع Execution Policy

سیاستتوضیح
Restrictedهیچ اسکریپتی اجرا نمی‌شود (پیش‌فرض در ویندوز کلاینت).
AllSignedفقط اسکریپت‌های امضاشده.
RemoteSignedاسکریپت‌های محلی بدون امضا، اسکریپت‌های دانلودی با امضا.
Unrestrictedهمه اسکریپت‌ها (با هشدار برای دانلودی‌ها).
Bypassاجرای همه اسکریپت‌ها بدون محدودیت.
Undefinedحذف سیاست تعریف‌شده.

مدیریت Execution Policy

  • Get-ExecutionPolicy — نمایش سیاست فعلی.
  • Get-ExecutionPolicy -List — سیاست‌های همه سطوح.
  • Set-ExecutionPolicy RemoteSigned — تنظیم سیاست (نیازمند ادمین).
  • Set-ExecutionPolicy -Scope CurrentUser RemoteSigned — فقط برای کاربر جاری.
  • Set-ExecutionPolicy Bypass -Scope Process — فقط برای Session جاری.

اجرای موقت با Bypass

برای اجرای یک اسکریپت خاص بدون تغییر سیاست سیستم:

powershell -ExecutionPolicy Bypass -File script.ps1

امضای اسکریپت‌ها

  • Set-AuthenticodeSignature — افزودن امضای دیجیتال.
  • Get-AuthenticodeSignature — بررسی امضا.
  • استفاده از گواهی معتبر برای امضا.
«Execution Policy، نه یک مکانیزم امنیتی کامل، بلکه یک خط دفاعی اولیه است؛ هدف آن، جلوگیری از اجرای تصادفی است، نه مقابله با مهاجم مصمم.»

برای درک عمیق‌تر امنیت در محیط‌های توسعه، مقاله نکات امنیتی استفاده از ChatGPT چیست؟ را مطالعه کنید. همچنین اگر با ابزارهای SDK کار می‌کنید، مقاله SDKهای محبوب در پروژه‌ها چگونه استفاده می‌شوند؟ نکات مهمی ارائه می‌دهد.

کاربردهای عملی در پروژه‌های توسعه

تسلط بر CMD و PowerShell، در پروژه‌های واقعی توسعه، اثر مستقیم بر بهره‌وری و کیفیت کار دارد. در ادامه، چند کاربرد عملی بررسی می‌شود.

کاربرد اول: کار با Git

  • git clone url — کلون کردن مخزن.
  • git status — بررسی وضعیت.
  • git add . — افزودن تغییرات.
  • git commit -m "message" — ثبت تغییرات.
  • git push origin main — ارسال تغییرات.
  • git log --oneline --graph — تاریخچه فشرده.
  • git branch -a — لیست شاخه‌ها.

برای درک عمیق‌تر Git، مقاله آموزش Git از صفر را مطالعه کنید. همچنین مقاله دستورات پرکاربرد Git که هر توسعه‌دهنده باید بداند نکات عملی مهمی ارائه می‌دهد.

کاربرد دوم: مدیریت پروژه‌های Node.js

  • npm install — نصب وابستگی‌ها.
  • npm run dev — اجرای محیط توسعه.
  • npm run build — ساخت نسخه تولید.
  • npm audit — بررسی آسیب‌پذیری‌ها.
  • npx create-react-app myapp — ساخت پروژه جدید.

کاربرد سوم: Docker در ویندوز

  • docker build -t myapp . — ساخت Image.
  • docker run -p 8080:80 myapp — اجرای کانتینر.
  • docker ps — لیست کانتینرها.
  • docker-compose up -d — اجرای محیط چندکانتینری.
  • docker logs mycontainer — لاگ کانتینر.

کاربرد چهارم: کار با APIها

  • curl -X GET https://api.example.com/users — درخواست GET.
  • curl -X POST -H "Content-Type: application/json" -d "{"name":"Ali"}" https://api.example.com/users — درخواست POST.
  • curl -H "Authorization: Bearer token" url — با احراز هویت.
  • Invoke-RestMethod -Uri url -Method Post -Body $body — PowerShell با پارس JSON.

کاربرد پنجم: خودکارسازی محیط توسعه

یک اسکریپت PowerShell نمونه برای راه‌اندازی محیط پروژه:

Set-Location C:ProjectsMyApp
git pull origin main
npm install
npm run build
Start-Process -FilePath "npm" -ArgumentList "run", "dev" -NoNewWindow

این اسکریپت، کل فرآیند راه‌اندازی را خودکار می‌کند.

اگر به دنبال استفاده از هوش مصنوعی در این جریان‌ها هستید، مقاله هوش مصنوعی چگونه به برنامه‌نویسی کمک می‌کند؟ را مطالعه کنید. همچنین مقاله بهترین ابزارهای هوش مصنوعی برای کدنویسی کدامند؟ نکات عملی مهمی ارائه می‌دهد.

اشتباهات رایج در استفاده از CMD و PowerShell

اشتباهاثر عملیاتی
نادیده گرفتن سوییچ /d در cdعدم امکان پیمایش بین درایوها
اجرای دستورات مخرب از منبع نامطمئنآسیب جدی به سیستم
اجرای rd /s /q در مسیر اشتباهحذف غیرقابل بازیابی داده‌ها
نادیده گرفتن Execution Policyعدم امکان اجرای اسکریپت‌ها
نبود بکاپ پیش از تغییرات حساسعدم امکان بازیابی
استفاده از rm -Recurse بدون احتیاطحذف ناخواسته فایل‌ها
تایپ رمز در خط فرمانذخیره در تاریخچه
نادیده گرفتن Admin Rightsخطای دسترسی
بی‌توجهی به مسیر جاریاجرای دستور در پوشه اشتباه
نبود بکاپ از Profile قبل از تغییراز دست دادن تنظیمات
استفاده از Aliasهای ناسازگار با Linuxگیجی در محیط‌های مختلط
نادیده گرفتن ارجاع به فایل با فاصله در مسیرخطای اجرای دستور
فراموش کردن علامت نقل قول در مسیرهای حاوی فاصلهعدم اجرای صحیح دستور
اجرای اسکریپت با ExecutionPolicy Bypass بدون بررسیخطر امنیتی
عدم استفاده از Set-StrictMode در اسکریپت‌هاخطاهای پنهان در اسکریپت

در تجربه‌های واقعی، بیشترین فاجعه‌ها از اشتباه سوم و پنجم ناشی می‌شود. اجرای rd /s /q یا Remove-Item -Recurse -Force در مسیر اشتباه، می‌تواند به حذف غیرقابل بازیابی داده‌ها منجر شود.

پرسش‌های پرتکرار درباره CMD و PowerShell

تفاوت CMD و PowerShell چیست؟

CMD بر پایه متن عمل می‌کند و دستورات آن خروجی متنی تولید می‌کنند. PowerShell بر پایه شیء عمل می‌کند و خروجی دستورات آن، شیء ساختاریافته است. PowerShell از Cmdletها استفاده می‌کند، از .NET پشتیبانی می‌کند، Pipeline پیشرفته دارد و چندسکویی است.

کدام بهتر است: CMD یا PowerShell؟

بستگی به نیاز دارد. برای کارهای ساده و سریع، CMD کافی است. برای خودکارسازی پیشرفته، مدیریت سرور و کار با .NET، PowerShell انتخاب بهتری است. توسعه‌دهنده حرفه‌ای هر دو را می‌شناسد.

چطور با cd /d بین درایوها جابجا شوم؟

با استفاده از cd /d D:Path. سوییچ /d امکان تغییر درایو و مسیر را در یک دستور فراهم می‌کند. در PowerShell، Set-Location یا cd به‌طور خودکار این کار را انجام می‌دهد.

چگونه دستورات را همزمان اجرا کنم؟

در CMD: با & برای ترتیبی، start برای موازی. در PowerShell: با Start-Job، Start-ThreadJob یا ForEach-Object -Parallel در PowerShell 7+.

چطور ترمینال جدید در پوشه جاری باز کنم؟

روش‌های مختلف: تایپ cmd در نوار آدرس File Explorer، Shift+کلیک راست، گزینه Open in Terminal در Windows 11، دستور start cmd یا wt -d . برای Windows Terminal.

چطور Execution Policy را تغییر دهم؟

با Set-ExecutionPolicy RemoteSigned -Scope CurrentUser که فقط برای کاربر جاری اعمال می‌شود. برای اعمال موقت در یک Session: Set-ExecutionPolicy Bypass -Scope Process.

Alias چطور تعریف کنم؟

در CMD: doskey ll=dir /a (موقت) یا از Registry برای ماندگاری. در PowerShell: Set-Alias یا New-Alias. برای ماندگاری، در Profile ذخیره کنید.

Profile PowerShell چیست؟

Profile یک اسکریپت است که هر بار باز شدن PowerShell به‌طور خودکار اجرا می‌شود. مسیر آن با $PROFILE قابل دسترسی است و می‌توان Aliasها، Functionها و تنظیمات شخصی را در آن ذخیره کرد.

چطور اسکریپت PowerShell بنویسم؟

با ایجاد یک فایل با پسوند .ps1 و نوشتن دستورات در آن. اطمینان از Execution Policy مناسب و تست اسکریپت در محیط امن، بخشی از فرآیند است.

چرا دستورات CMD در PowerShell کار نمی‌کنند؟

برخی دستورات CMD در PowerShell معادل متفاوتی دارند. مثلاً dir در PowerShell، یک Alias برای Get-ChildItem است که خروجی متفاوتی ارائه می‌دهد. برای دستورات خاص CMD، می‌توانید با cmd /c command آنها را اجرا کنید.

چطور Windows Terminal را نصب کنم؟

از Microsoft Store یا GitHub Releases. همچنین در Windows 11 به‌طور پیش‌فرض نصب است. برای نسخه‌های قدیمی‌تر ویندوز، نصب دستی نیاز است.

چطور Aliasهای CMD را ماندگار کنم؟

با ایجاد یک فایل Autorun در Registry. مسیر: HKEY_CURRENT_USERSoftwareMicrosoftCommand Processor و مقدار AutoRun با مسیر فایل حاوی دستورات doskey.

آیا PowerShell Core جایگزین PowerShell ویندوز شده است؟

PowerShell Core (نسخه 6+) با نام pwsh شناخته می‌شود و چندسکویی است. PowerShell ویندوز (نسخه 5.1) همچنان به‌عنوان بخشی از ویندوز عرضه می‌شود. برای کارهای مدرن، PowerShell 7 توصیه می‌شود.

چطور در CMD به پوشه والد دو سطح برگردم؟

با cd .... که دو سطح به بالا می‌رود. یا با cd که به ریشه درایو جاری بازمی‌گردد.

چطور خروجی یک دستور را در فایل ذخیره کنم؟

در CMD: command > file.txt برای بازنویسی، command >> file.txt برای افزودن. در PowerShell: command | Out-File file.txt یا command > file.txt.

آیا CMD و PowerShell بر سئو اثر دارند؟

اثر مستقیم ندارند. اما تسلط بر آنها، امکان استفاده از ابزارهای تخصصی سئو و مدیریت سایت (مانند WP-CLI) را فراهم می‌کند که به‌طور غیرمستقیم بر بهبود سایت اثر می‌گذارد.

پایان‌بندی راهبردی

آموزش دستورات ضروری CMD و PowerShell در ویندوز، یکی از سرمایه‌گذاری‌های بنیادین برای هر توسعه‌دهنده یا متخصص فناوری است. CMD، با سادگی و سرعت خود، ابزاری کارآمد برای کارهای روزمره محسوب می‌شود و PowerShell، با شیءگرایی، Pipeline پیشرفته و یکپارچگی کامل با اکوسیستم مدرن، به ابزار حرفه‌ای خودکارسازی تبدیل شده است. تسلط بر هر دو، به توسعه‌دهنده امکان می‌دهد تا از هر ابزار در جای مناسب استفاده کند و بهره‌وری خود را چند برابر کند.

از منظر راهبردی، سه اصل در بهره‌گیری حرفه‌ای از CMD و PowerShell تعیین‌کننده است. نخست، تسلط بر دستورات پایه پیش از حرکت به سمت دستورات پیشرفته؛ چراکه ساختار پایه، پیش‌نیاز هر کار پیچیده‌تر است. دوم، پیکربندی محیط شخصی با استفاده از Aliasها، Functionها و Profileها؛ این رویکرد، بهره‌وری روزمره را چند برابر می‌کند. سوم، استقرار یک رویکرد امنیتی که شامل مدیریت Execution Policy، پرهیز از اجرای دستورات ناشناخته و محافظت از داده‌های حساس در تاریخچه دستورات باشد. رعایت این سه اصل، CMD و PowerShell را از ابزارهای پراکنده به قابلیت‌های سازمانی تبدیل می‌کند که در خودکارسازی، مدیریت سیستم و بهره‌وری روزمره اثر چشمگیری دارند.

سازمانی که این اصول را جدی بگیرد، در سرعت توسعه، کیفیت کار و پایداری زیرساخت موفق‌تر عمل می‌کند. CMD و PowerShell، اگرچه در ظاهر ابزارهایی ساده به‌نظر می‌رسند، در واقع ستون‌های زیرساختی توسعه و مدیریت در ویندوز محسوب می‌شوند و تسلط بر آنها، بخشی از بلوغ فنی هر تیم فناوری است.

اگر در پروژه‌های خود تجربه‌ای از استفاده از CMD یا PowerShell داشته‌اید، برایتان جالب است بدانید کدام حوزه بیشترین اثر را در بهره‌وری شما داشت: مدیریت فایل، عیب‌یابی شبکه، خودکارسازی با اسکریپت یا پیکربندی Profile. تجربه‌تان را در دیدگاه‌ها بنویسید؛ به‌ویژه اگر Alias یا Function خلاقانه‌ای برای ساده‌سازی کارهای روزمره به کار برده‌اید که می‌تواند برای توسعه‌دهندگان دیگر الهام‌بخش باشد. ⌨️