PowerShell یک زبان اسکریپتنویسی و محیط خط فرمان (Command Line Interface || CLI) پیشرفته است که توسط مایکروسافت توسعه داده شده و برای اتوماسیون و مدیریت وظایف سیستمی در سیستمهای مبتنی بر ویندوز طراحی شده است. این ابزار، که برای اولین بار در سال 2006 منتشر شد، در حال حاضر بخشی جداییناپذیر از مجموعه ابزارهای مدیریتی ویندوز است.
در این مطلب از وبسایت راکت قصد داریم شما را با ۲۰ دستور کاربردی و مفید در محیط پاورشل آشنا کنیم. اما قبل از آن بیایید کمی بیشتر با ویژگیهای کلیدی پاورشل آشنا شویم.
ویژگیهای کلیدی PowerShell
- زبان اسکریپتنویسی قدرتمند: PowerShell بر پایه NET Framework. مایکروسافت بنا نهاده شده است، که به آن اجازه میدهد دستورات قدرتمند و پیچیدهای را با استفاده از اسکریپتها اجرا کند.
- دسترسی به WMI و COM: پاورشل به کاربران امکان دسترسی و مدیریت وسیع Windows Management Instrumentation (WMI) و Component Object Model (COM) را میدهد، که برای اتوماسیون وظایف مدیریتی در ویندوز مفید است.
- پایپلاینینگ اشیاء: به جای ارسال متن خام بین دستورات، PowerShell اطلاعات را به صورت اشیاء NET. منتقل میکند. این امر اجازه میدهد تا اطلاعات به طور کارآمدتری در طول یک سری دستورات پردازش شوند.
- اسکریپتها و ماژولها: کاربران میتوانند اسکریپتها و ماژولهایی را برای اتوماسیون وظایف مختلف ایجاد کنند، که این امکان را به آنها میدهد تا کد را به اشتراک بگذارند و باز استفاده کنند.
- دسترسی به شبکه و اینترنت: PowerShell امکان انجام درخواستهای وب، کار با APIها و اتوماسیون وظایف شبکه را فراهم میکند.
- قابلیتهای مدیریتی گسترده: از مدیریت کاربران و گروهها در Active Directory گرفته تا نظارت و مدیریت وضعیت سرویسها و پردازشهای سیستم، PowerShell ابزاری قدرتمند برای مدیران سیستم است.
Get-Help [help]
اگر به تازگی با PowerShell آشنا شدهاید، شاید به مشکلاتی بر بخورید؛ و در اینگونه وضعیتها، Get-Help ناجی شما خواهد شد. این دستور اطلاعاتی درباره cmdlets، دستورات، توابع، اسکریپتها و Workflowهای PowerShell به شما میدهد.
به علاوه، استفاده از آن ساده است؛ فقط باید دستور Get-Help به همراه دستوری که جزیئات آن را میخواهید را بنویسید. برای مثال، میتوانید درباره درباره دستور Get-Process، با نوشتن دستور Get-Help Get-Process اطلاعاتی به دست بیاورید.
Get-Command [gcm]
PowerShell به شما اجازه کشف دستورات و ویژگیهای آنها، با استفاده از دستور Get-Command را میدهد. این دستور، لیست دستورات یک ویژگی خاص را برای هدفی خاص، بر اساس پارامتر جستجوی شما، نمایش میدهد.
تنها باید Get-Command را به همراه متن جستجوی خود در PowerShell تایپ کنید. برای مثال، Get-Command *-service* دستوراتی که کلمه -service را در خود دارند، نمایش میدهد. به یاد داشته باشید که از ستاره در هر دو طرف جستجوی خود استفاده کنید؛ زیرا نکته مهمی در جستجوی دستورات شناخته نشده است.
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 اجرا کنید.
Invoke-Expression [iex]
Invoke-Expression یک دستور یا اصطلاح دیگر را اجرا میکند. اگر یک اصطلاح یا رشته را به عنوان ورودیاش وارد کنید، این دستور اول آن را ارزشیابی میکند، سپس اجرا میکند، اما بر خلاف دستور قبلی، فقط به صورت داخلی اجرا میشود.
برای استفاده از آن، باید Invoke-Expression را به همراه دستور یا اصطلاح خود وارد کنید. برای مثال، میتوانید متغیری به نام $Command را به همراه رشتهای که دستور Get-Process را در خود دارد، تعریف کنید. وقتی که Invoke-Expression $Command را اجرا کنید، Get-Process به عنوان یک دستور به شکل داخلی بر روی کامپیوتر شما اجرا میشود.
Invoke-WebRequest [iwr]
با استفاده از Invoke-WebRequest، میتوانید در حالیکه از Windows-PowerShell استفاده میکنید، اطلاعات را از وبسایتها دانلود کنید، به آنها وارد شوید و آنها را زیر و رو کنید.
باید از آن به شکل Invke-WebRequest و دستور مورد نظر بعد از آن، استفاده کنید. برای مثال، میتوانید لینکهای موجود بر روی یک صفحه وب را با استفاده از این دستور به شکل (Invoke-WebRequest -Uri https://docs.microsoft.com) .Links.Href به دست بیاورید.
Set-ExecutionPolicy
گرچه ساخت و اجرای اسکریپتها در PowerShell ممکن است، محدودیتهایی با اهداف امنیتی وجود دارند. اما میتوانید سطح امنیت را با استفاده از Set-ExecutionPolicy تغییر دهید.
میتوانید Set-ExecutionPolicy را به همراه یکی از چهار سطح امنیتی (Restricted، Remote Signed، All Signed یا Unrestricted) وارد کنید. برای مثال: Set-ExecutePolicy -ExecutionPolicy Restricted.
Get-Item [gi]
اگر به دنبال اطلاعات درباره ی آیتم، مثلا فایلی بر روی هارد دیسک میگردید، Get-Item بهترین راه برای انجام این کار در Windows PowerShell است. بهتر است بدانید که این دستور محتویات آن آیتم، مانند فایلها و زیرشاخههای آن را نمایش نمیدهد، مگر این که توسط شما تعیین شود.
باید دستور Get-Item را به همراه مسیر یا رشتهای را به همراه پارامترهایش بنویسید. برای مثال، میتوانید تمام آیتمها (فایلها و فولدرها) در شاخه فعلی که با M شروع میشوند را با استفاده از دستور Get-Item M* به دست بیاورید. همچنین به همراه محتویات این شاخه، محتویات Registry Keyها را نیز میتوانید ببینید.
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 ذخیره کنید.
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 را تعیین کنید.
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 را باز کنید.
Stop-Process [kill]
با تشکر از دستور Stop-Process، میتوانید یک فرایند مشخص، یا چنیدن فرایند را با استفاده از PID آنها، (آیدی پردازش) متوقف کنید. نکته بهتر آن این است که حتی میتوانید پردازشهایی که توسط کاربر فعلی شروع نشدهاند را نیز متوقف کنید.
برای توقف یک پردازش، دستور را به شکل Stop-Process -Name “notepad” تایپ کنید.
Get-Service [gsv]
وقتی که نیاز به اطلاعاتی درباره یک سرویس خاص دارید، میتوانید از دستور Get-Service استفاده کنید. این دستور سرویسهای نصب شده بر روی کامپیوتر شما را نشان میدهد، و گزینهای برای فیلتر کردن آنها نیز دارد.
اگر میخواهید از این دستور استفاده کنید، باید دستور Get-Service را به همراه پارامترهایش وارد کنید. برای مثال، دستور Get-Services | Where-Object {$_.Status -eq “Running”} را برای دیدن سرویسهای در حال اجرا، وارد کنید.
Start-Service [sasv]
اگر میخواهید سرویسی را بر روی سیستم خود شروع کنید، دستور Start-Service به شما کمک میکند تا این کار را در Windows PowerShell انجام دهید. این دستور به قدری قدرتمند است که میتواند حتی وقتی که یک سرویس بر روش سیستم شما غیر فعال شده است نیز، آن را شروع کند.
باید وقتی که از دستور Start-Service استفاده میکنید، نام سرویس مورد نظر را نیز مشخص کنید. برای مثال، دستور Start-Service -Name “WSearch”، سرویس Windows Search را بر روی کامپیوتر شما اجرا میکند.
Stop-Service [spsv]
اگر میخواهید سرویسهای موجود بر روی کامپیوتر خود را متوقف کنید، دستور 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 ذخیره شده است، نمایش میدهد.
جمعبندی
PowerShell با ارائه ترکیبی منحصر به فرد از قابلیتهای اسکریپتنویسی، اتوماسیون و مدیریت سیستم، به یک ابزار حیاتی برای مدیران سیستم و توسعهدهندگانی تبدیل شده است که به دنبال افزایش بهرهوری و کارآمدی در محیطهای ویندوزی هستند.
موارد بالا، تمام دستورات ضروری در PowerShell بود که باید یاد میگرفتید. امیدوارم خواندن آنها برای شما کاربردی بوده باشد.
دیدگاه و پرسش
در حال دریافت نظرات از سرور، لطفا منتظر بمانید
در حال دریافت نظرات از سرور، لطفا منتظر بمانید