20 دستور Windows PowerShell که باید بدانید

گردآوری و تالیف : عرفان کاکایی
تاریخ انتشار : 19 تیر 1397
دسته بندی ها : آموزشی

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

در این پست، دستورات کاربری ولی ساده‌ای برای Windows PowerShell، به همراه مثال معرفی خواهم کرد. می‌توانید از این دستورات برای انجام بسیاری از کارها استفاده کنید؛ از کمک گیری گرفته تا شروع پردازش‌ها.

نکته: Windows PowerShell با نوعی سازگاری با ابزار قدیمی ساخته شده است، و به همین دلیل بسیاری از دستورات Command Prompt را پشتیبانی می‌کند. به این صورت، می‌توانید از دستورات قدیمی در رابطی جدید و رنگارنگ استفاده کنید.

Get-Help [help]

اگر به تازگی با PowerShell آشنا شده‌اید، شاید به مشکلاتی بر بخورید؛ و در اینگونه وضعیت‌ها، Get-Help ناجی شما خواهد شد. این دستور اطلاعاتی درباره cmdlets، دستورات، توابع، اسکریپت‌ها و Workflowهای PowerShell به شما می‌دهد.

به علاوه، استفاده از آن ساده است؛ فقط باید دستور Get-Help به همراه دستوری که جزیئات آن را می‌خواهید را بنویسید. برای مثال، می‌توانید درباره درباره دستور Get-Process، با نوشتن دستور Get-Help Get-Process اطلاعاتی به دست بیاورید.

دستور Windows PowerShell

Get-Command [gcm]

PowerShell به شما اجازه کشف دستورات و ویژگی‌های آن‌ها، با استفاده از دستور Get-Command را می‌دهد. این دستور، لیست دستورات یک ویژگی خاص را برای هدفی خاص، بر اساس پارامتر جستجوی شما، نمایش می‌دهد.

تنها باید Get-Command را به همراه متن جستجوی خود در PowerShell تایپ کنید. برای مثال، Get-Command *-service* دستوراتی که کلمه -service را در خود دارند، نمایش می‌دهد. به یاد داشته باشید که از ستاره در هر دو طرف جستجوی خود استفاده کنید؛ زیرا نکته مهمی در جستجوی دستورات شناخته نشده است.

دستور Windows PowerShell

Invoke-Command [icm]

وقتی که می‌خواهید یک دستور یا اسکریپت PowerShell را اجرا کنید، (چه به صورت داخلی یا از راه دور، چه بر روی یک کامپیوتر یا چند کامپیوتر) Invoke-Command کمک‌یار شماست.

باید Invoke-Command را به همراه دستور یا اسکریپ و مسیر کامل آن تایپ کنید. برای مثال، یک دستور Get-EventLog را با استفاده از Incoke-Command -ScriptBlock {Get-EventLog system -Newest 50} یا بر روی یک کامپیوتر کنترل از راه دور با نام Server01، با استفاده از Invoke-Command -ScriptBlock {Get-EventLog system -Newest 50} -ComputerName Server01 اجرا کنید.

دستور Windows PowerShell

Invoke-Expression [iex]

Invoke-Expression یک دستور یا اصطلاح دیگر را اجرا می‌کند. اگر یک اصطلاح یا رشته را به عنوان ورودی‌اش وارد کنید، این دستور اول آن را ارزشیابی می‌کند، سپس اجرا می‌کند، اما بر خلاف دستور قبلی، فقط به صورت داخلی اجرا می‌شود.

برای استفاده از آن، باید Invoke-Expression را به همراه دستور یا اصطلاح خود وارد کنید. برای مثال، می‌توانید متغیری به نام $Command را به همراه رشته‌ای که دستور Get-Process را در خود دارد، تعریف کنید. وقتی که Invoke-Expression $Command را اجرا کنید، Get-Process به عنوان یک دستور به شکل داخلی بر روی کامپیوتر شما اجرا می‌شود.

دستور Windows PowerShell

Invoke-WebRequest [iwr]

با استفاده از Invoke-WebRequest، می‌توانید در حالیکه از Windows-PowerShell استفاده می‌کنید، اطلاعات را از وبسایت‌ها دانلود کنید، به آن‌ها وارد شوید و آن‌ها را زیر و رو کنید.

باید از آن به شکل Invke-WebRequest و دستور مورد نظر بعد از آن، استفاده کنید. برای مثال، می‌توانید لینک‌های موجود بر روی یک صفحه وب را با استفاده از این دستور به شکل (Invoke-WebRequest -Uri https://docs.microsoft.com) .Links.Href به دست بیاورید.

دستور Windows PowerShell

Set-ExecutionPolicy

گرچه ساخت و اجرای اسکریپت‌ها در PowerShell ممکن است، محدودیت‌هایی با اهداف امنیتی وجود دارند. اما می‌توانید سطح امنیت را با استفاده از Set-ExecutionPolicy تغییر دهید.

می‌توانید Set-ExecutionPolicy را به همراه یکی از چهار سطح امنیتی (Restricted، Remote Signed، All Signed یا Unrestricted) وارد کنید. برای مثال: Set-ExecutePolicy -ExecutionPolicy Restricted.

دستور Windows PowerShell

Get-Item [gi]

اگر به دنبال اطلاعات درباره ی آیتم، مثلا فایلی بر روی هارد دیسک می‌گردید، Get-Item بهترین راه برای انجام این کار در Windows PowerShell است. بهتر است بدانید که این دستور محتویات آن آیتم، مانند فایل‌ها و زیرشاخه‌های آن را نمایش نمی‌دهد، مگر این که توسط شما تعیین شود.

باید دستور Get-Item را به همراه مسیر یا رشته‌ای را به همراه پارامترهایش بنویسید. برای مثال، می‌توانید تمام آیتم‌ها (فایل‌ها و فولدرها) در شاخه فعلی که با M شروع می‌شوند را با استفاده از دستور Get-Item M* به دست بیاورید. همچنین به همراه محتویات این شاخه، محتویات Registry Keyها را نیز می‌توانید ببینید.

دستور Windows PowerShell

Copy-Item [copy]

اگر می‌خواهید فایل‌ها و شاخه‌ها را کپی کنید، از دستور Copy-Item استفاده کنید. این دستور به مانند cp در Command Prompt عمل می‌کند، اما بسیار بهتر از آن است.

می‌توانید از دستور Copy-Item برای کپی و نام‌گذاری مجدد آیتم‌ها نیز استفاده کنید؛ برای انجام این کار، یک نام جدید به عنوان مقصد بدهید. برای مثال، می‌توانید فایل Services.htm را با استفاده از دستور Copy-Item “C:\Servies.htm” -Destination “C:\MyData\MyServices.txt” به MyServices.txt تغییر دهید.

Remove-Item[del]

اگر می‌خواهید آیتم‌هایی مانند فایل‌ها، فولدرها، توابع و Registry Keyها را حذف کنید، Remove-Item دستور مورد نیاز شما است.

با استفاده از پارامترهای آن، می‌توانید آیتم‌ها را از مکانی خاص حذف کنید. برای مثال، می‌توانید فایل MyServices.txt را با استفاده از دستور Remove-Item “C:\MyData\MyServices.txt پاکسازی نمایید.

Get-Content [cat]

وقتی که می‌خواهیم محتویات یک فایل متنی را در یک مکان مشخص ببینیم، آن را در یک ویرایشگر متن مانند Notepad++ باز می‌کنیم. در Windows PowerShell، می‌توانید از Get-Content برای دریافت محتویات فایل، بدون باز کردن آن استفاده کنید.

برای مثال، می‌توانید ۲۰ خط از فایل Services.htm را به استفاده از دستور Get-Content “C:Services.htm” -TotalCount 50 به دست بیاورید.

Set-Content [sc]

می‌توانید فایلی متنی مورد نظر را با استفاده از دستور Set-Content، درست به منند دستور echo در Bash Shell ذخیره کنید. در ادغام با دستور Get-Content، قادر به دریافت محتویات یک فایل و ذخیره آن در یک فایل دیگر خواهید بود.

برای مثال، می‌توانید دستور Set-Content را برای نوشتن یا جایگزینی محتویات یک فایل بنویسید. به علاوه، می‌توانید به مثال دستور قبلی آن را ترکیب کنید و با استفاده از دستور Get-Content “C:\Services.html” -TotalCount 50 | Set-Content “Sample.txt”، خروجی‌اش را در یک فایل جدید به نام Sample.txt ذخیره کنید.

دستور Windows PowerShell

Get-Variable [gv]

اگر به دنبال استفاده از متغیرها در Windows PowerShell هستید، دستور Get-Variable به شما کمک می‌کند.

می‌توانید با نوشتن Get-Variable به همراه گزینه‌ها و پارامتر‌های این دستور، از آن استفاده کنید. برای مثال، می‌توانید مقدار متغیری به نام desc را با استفاده از کد Get-Variable -Name “desc” به دست بیاورید.

Set-Variable [set]

با استفاده از دستور Set-Variable، می‌توانید مقدار یک متغیر را عوض کرده، یا مجددا تنظیم کنید. به عنوان مثال، می‌توانید با استفاده از دستور Set-Variable -Name “desc” -Value “A Description”، مقدار متغیر desc را تعیین کنید.

دستور Windows PowerShell

Get-Process [gps]

معمولا برای دیدن پردازش‌های در حال اجرا بر روی کامپیوتر، از Task Manager استفاده می‌کنیم. در Windows PowerShell، می‌توانید از Get-Process برای انجام این کار استفاده کنید.

می‌توانید این دستور را به همراه متن جستجوی خود وارد کنید. برای مثال، اگر به دنبال اطلاعاتی درباره پردازش‌هایی که در نام خود explore را دارند می‌گردید، می‌توانید دستور Get-Process *explore*‌ را تایپ کنید. ( به ستاره‌ها دقت کنید*

Start-Process [saps]

Windows PowerShell شروع یک یا چند پردازش را آسان‌تر می‌کند. از آنجایی که این دستور یکی از دستوراتی است که برای خودکارسازی پردازش‌ها باید بلد بود، به نظر من بسیار کاربردی است.

برای استفاده از این دستور، می‌توانید Start-Process را به همراه پارامترهایش بنویسید. برای مثال، می‌توانید با نوشتن دستور Strat-Process -FilePath “notepad” -Verb runAs، برنامه Notepad را باز کنید.

دستور Windows PowerShell

Stop-Process [kill]

با تشکر از دستور Stop-Process، می‌توانید یک فرایند مشخص، یا چنیدن فرایند را با استفاده از PID آن‌ها، (آیدی پردازش) متوقف کنید. نکته بهتر آن این است که حتی می‌توانید پردازش‌هایی که توسط کاربر فعلی شروع نشده‌اند را نیز متوقف کنید.

برای توقف یک پردازش، دستور را به شکل Stop-Process -Name “notepad” تایپ کنید.

Get-Service [gsv]

وقتی که نیاز به اطلاعاتی درباره یک سرویس خاص دارید، می‌توانید از دستور Get-Service استفاده کنید. این دستور سرویس‌های نصب شده بر روی کامپیوتر شما را نشان می‌دهد، و گزینه‌ای برای فیلتر کردن آن‌ها نیز دارد.

اگر می‌خواهید از این دستور استفاده کنید، باید دستور Get-Service را به همراه پارامترهایش وارد کنید. برای مثال، دستور Get-Services | Where-Object {$_.Status -eq “Running”} را برای دیدن سرویس‌های در حال اجرا، وارد کنید.

دستور Windows PowerShell

Start-Service [sasv]

اگر می‌خواهید سرویسی را بر روی سیستم خود شروع کنید، دستور Start-Service به شما کمک می‌کند تا این کار را در Windows PowerShell انجام دهید. این دستور به قدری قدرتمند است که می‌تواند حتی وقتی که یک سرویس بر روش سیستم شما غیر فعال شده است نیز، آن را شروع کند.

باید وقتی که از دستور Start-Service استفاده می‌کنید، نام سرویس مورد نظر را نیز مشخص کنید. برای مثال، دستور Start-Service -Name “WSearch”، سرویس Windows Search را بر روی کامپیوتر شما اجرا می‌کند.

Stop-Service [spsv]

دستور Windows PowerShell

اگر می‌خواهید سرویس‌های موجود بر روی کامپیوتر خود را متوقف کنید، دستور Stop-Service به شما کمک خواهد کرد. برای مثال دستور Stop-Service -Name “WSearch”، همان سرویس Windows Search را متوقف می‌کند.

ConvertTo-HTML

PowerShell می‌تواند اطلاعات شگفت‌انگیزی درباره سیستم شما فراهم کند. گرچه، اکثرا در یک قالب غیر قابل درک فراهم می‌شود، اما می‌توانید از دستور ConverTo-HTML برای ساخت و قالب‌بندی یک گزارش، برای تجزیه و تحلیل یا ارسال آن استفاده کنید.

نحوه استفاده آن، به صورت Get-Service | ConvertTo-HTML -property Name, Status > C:\Services.htm‌ است، که این دستور لیست تمام پردازش‌ها را به شکل یک گزارش وب که در فایل Services.htm ذخیره شده است، نمایش می‌دهد.

دستور Windows PowerShell

موارد بالا، تمام دستورات ضروری در PowerShell بود که باید یاد می‌گرفتید. امیدوارم خواندن آن‌ها برای شما کاربردی بوده باشد.

منبع

این مطلب را با دیگران به اشتراک بگذارید :

مقالات پیشنهادی

زبان ها و فریم ورک های که باید در سال 2016 یاد بگیریم

کتابخانه ها و فریم ورک ها در حال تغییر هستند. تلاش برای یادگیری هر گزینه جدید که وارد بازار میشود یک ریسک است.ولی در ادامه من گزینه هایی را به شما معر...

هرچیزی که شما نیاز دارید راجع به سئو در سال 2018 بدانید

سال 2017 یک سال پر تنش برای علم سئو بود. گوگل به صورت چشمگیرانه‌ای قواعد را تغییر داد به صورتی که اگر وبسایت های پارسال قواعد خودشان را تغییر نمی‌داند...

12 دستور ترمینال که توسعه‌دهندگان وب باید بدانند

ترمینال یکی از مهمترین ابزارها در قسمت جعبه ابزار یک توسعه‌دهنده است. تخصص پیدا کردن در این زمینه ویژگی‌ها و تاثیرات مثبت بسیاری را به همراه خواهد داش...

10 قطعه کد jquery که هر طراحی باید بدانند | قسمت اول

امروزه jquery به یکی از عضوهای جدایی ناپذیر طراحی وب تبدیل شده که همه طراحا یا با اون آشنا هستن یا خیلی خوب اونو میشناسن و میدونن که چه نقش مهمی درطرا...