قسمت دوم : فرم کلی دستورات و ماژول ها، شخصی سازی و کار با PowerShell ISE

0 143

سلامی دوباره به دوستان TheWays، امیدوارم حالتون خوب باشه. امروز در این مقاله من سعی کردم دستورات و مفاهیمی که در شروع کار با پاورشل مورد نیاز است را بررسی کنم. البته کار با این دستورات بسیار ساده ولی در عین حال کاربردی است، بطوریکه شما اکثر مواقع برای نوشتن Script یا حتی یک خط کامند به این دستورات نیاز خواهید داشت.

نکته :

“در حالی که شاید خیلی از شما با این موضوع آشنا باشید اما من دوباره تاکید می کنم برای سریع تر و کامل تر نوشتن دستورات خود حتما از Tab Completion استفاده کنید.”

 

ورژن پاورشل

اگر شما درحال حاضر از ویندوز ۱۰ یا Windows Server 2016 استفاده می کنید، ورژن پاورشل شما ۵٫۱ می باشد اما اگر می خواهید از ورژن پاورشل خود اطلاع پیدا کنید می توانید از دستور زیر استفاده کنید :

PSVersionTable$

همچنین اگر جدول زیر را مشاهده کنید می توانید از نحوه پشتیبانی ورژن های پاورشل بر روی نسخه های مختلف ویندوز اطلاع پیدا کنید :

 

Windows PS 3.0 PS 4.0 PS 5.0 PS 5.1
Windows 10 (see Note1)

Windows Server 2016

installed
Windows 8.1

Windows Server 2012 R2

installed WMF 5.0 WMF 5.1
Windows 8

Windows Server 2012

installed WMF 4.0 WMF 5.0 WMF 5.1
Windows 7 SP1

Windows Server 2008 R2 SP1

WMF 3.0 WMF 4.0 WMF 5.0 WMF 5.1

درصورت نیاز برای آپدیت پاورشل از لینک زیر استفاده کنید :

?How Update PowerShell

برای مثال اگر ما بخواهیم پاورشل ۵٫۱ را بر روی ویندوز ۸٫۱ نصب کنیم باید پکیج WMF 5.1 را از سایت مایکروسافت دانلود کرده و همچنین به Requirement های این پکیج نیز توجه داشته باشیم :

 

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

تمامیه cmdlet ها در پاورشل بصورت verb-noun هستند که در این بین تعداد verb ها محدود اما تعداد noun ها بسیار زیاد است. Verb ها در پاورشل می توانند بصورت کامل نشان دهنده عملکرد آن دستور باشند. برای مثال Get نشان دهنده این است که اطلاعات را درمورد کامند مورد نظر درسافت می کند. به مثال زیر توجه کنید که طبق توضیحات بالا فقط اطلاعات مربوط به Local User ها را دریافت می کند و نشان می دهد :

Get-LocalUser

یا دستوری به با Set شروع شود به این معناست که می تواند برای ایجاد تغییرات در دستور مورد نظر استفاده شود. برای مثال ما با دستور زیر می توانیم تمام پروفایل های فایروال ویندوز را غیر فعال کنیم :

Set-NetFirewallProfile -All -Enabled False -Verbose

یا بطور مثال می دانیم دستوری که با Remove شروع می شود، قرار است چیزی را حذف کند. ما در مثال زیر با استفاده از Remove ماژول SmbShare را حذف می کنیم :

Remove-Module -Name SmbShare

بعضی از مهمترین verb هایی که مورد استفاده قرار می گیرند :

..,New,  Add, Get, Set, Block, Disable, Enable, Remove, Rename, Import, Export

 

پارامتر ها در PowerShell :

اما این cmdlet ها در پاورشل یک قسمت بسیار مهم به اسم Parameter دارند که درواقع این پارامتر ها در cmdlet های مختلف به عنوان مشخصه هایی هستند که به ما برای رسیدن به هدف مورد نظر کمک می کنند، که اگر مثال های بالاتر را نیز نگاه کنید متوجه می شوید که من از کلماتی استفاده کرده ام که با ” – ” شروع می شوند و بعضی باید در جلوی بعضی از آن ها حتما مقدار بنویسیم و بعضی دیگر هم نیازی به مقدار ندارند. برای مثال به دستور زیر دقت کنید :

در این مثال ما با استفاده از پارامتر Name توانستیم وضعیت سرویس EventLog را خروجی بگیریم.

در مورد دیگر بعضی از پارامتر ها نیازی به مقدار ندارند که به آن ها پارمترِ Switch گفته می شود. برای درک بهتر می توانید به مثال های بالاتر که من از Verbose- استفاده کردم مراجعه کنید و یا مثال زیر را که به ما کمک می کند بصورت لوکال یوزری بسازیم که نیاز به Password نداشته باشد و هیچ وقت این اکانت Expire نشود :

New-LocalUser -Name Majid -NoPassword -AccountNeverExpires

 

ماژول چیست؟

درواقع تعریف بسیار ساده ای دارد، به طور کلی مایکروسافت برای دسته بندی بهتر و کامل تر دستورات پاورشل، از Module استفاده می کند. به این معنا که ما برای سرویس های مختلف، ماژول مربوط به آن را داریم تا راحت تر بتوانیم آن را اضافه یا کم کنیم. برای درک بهتر، می توان گفت ما برای مثال ماژول های : ActiveDirectory, DnsServer, Hyper-V, NetAdapter را برای مدیریت هر کدام از این سرویس ها استفاده می کنیم. البته دسته بندی ماژول ها فقط به سرویس ها محدود نمی شود و برای مثال ماژول NetAdapter سرویس نیست و فقط یک ماژول برای مدیریت کارت شبکه ها بکار می رود.

نکته دیگری که راجع به ماژول ها وجود دارد این است که، اسم آن ها بعد verb در cmdlet ها می آید. برای مثال ماژول DnsServer دستوراتش بصورت زیر است که اگر دقت کنید همه Noun ها با DnsServer شروع می شوند :

Get-Command -Module DnsServer

در پاورشل ما با استفاده از دستور Get-Module می توانیم ماژول هایی که در این Session داریم را مشاهده کنیم :

ماژول های بالا که بصورت دیفالت هنگام اجرا پاورشل import میشوند.

 

دستور زیر برای مشاهده لیست ماژول های موجود در سیستم و همچنین قسمت هایی که دور آن را خط کشیده شده است محل های نگهداری ماژول ها در سیستم است :

Get-Module -ListAvailable

 

چطور می توان ماژول را اضافه کرد؟

۱- استفاده از دستور Import-Module :

 

۲- ایجاد تغییر در پروفایلِ پاورشل، که در مقالات آینده توضیح داده می شود.

۳- در پاورشلِ ۳ به بعد با استفاده از AutoLoad Module با نوشتن یک دستور از آن ماژول، بصورت خودکار Import می شود.

برای مثال در این Session پاورشل، در حال حاضر ماژول NetAdapter وجود ندارد همانطور که میبیند :

ولی بعد از اینکه دستور زیر را فقط می نویسم و حتی آن را اجرا هم نمی کنم، این ماژول را بصورت خودکار به Session اضافه می کند :

و حالا همانطور که مشاهده می کنید ماژول NetAdapter اضافه شده است :

 

۴- با استفاده از Get-Help نیز اگر ماژول اضافه نشده باشد، آن را اضافه می کند. البته درمورد دستور Get-Help توضیحات کامل در مقالات بعدی داده می شود ولی درحال حاضر برای درک بهتر به مثال زیر توجه کنید که من ماژول SmbShare را در Session خود اضافه نکرده ام ولی با اجرا دستور زیر این ماژول بصورت خودکار به این Session اضافه می شود :

 

نکته :

ماژول هایی که با استفاده از Import-Module یا AutoLoad و یا Get-Help اضافه می شوند با بسته شدن پاورشل دوباره حذف شده و ما باید آن ها را اضافه کنیم که برای جلوگیری از این کار باید از طریق Profile این ماژول ها را اضافه کنیم. در مقالات بعد درمورد Profile بطور کامل صحبت میشود.

در ادامه همین مقالات یاد خواهیم گرفت که به چه صورت می توانیم ماژول های اختصاصی خودمان را بسازیم و از آن ها استفاده کنیم یا حتی برای استفاده دیگران آن را پابلیش کنیم.

 

پاک کردن Module :

دوستان شاید این مورد به ندرت برای شما پیش آید، که بخواهید یک ماژول را حذف کنید. اما اگر در هر شرایطی نیاز به انجام این کار داشتید می توانید بصورت زیر با استفاده از نام صحیح ماژول آن را حذف کنید :

Remove-Module -Name DnsServer

 

شخصی سازی PowerShell

یکی از مهمترین کارهایی که در ابتدای کار با پاورشل باید انجام دهید، شخصی سازی این محیط است که بسیار ساده هم انجام می شود مانند تصویر زیر می توانید از گزینه Properties محیط کنسول پاورشل را شخصی سازی کنید :

در قسمت Layout هم می توانید اندازه صفحه و مقدار Buffer صفحه را مشخص کنید که این تصویر مربوط به تنظیمات مربوط به کنسول پاورش من هست که می توانید از همین تنظیمات استفاده کنید یا بر اساس نیاز خود آن را تغییر دهید :

البته همانطور که مشاهده می کنید تنظیمات دیگری هم برای شخصی سازی محیط پاورشل وجود دارد که شما می توانید با توجه به نیاز های خود آن ها را تغییر دهید ولی در حال حاضر همین تغییرات مناسب شروع کار با پاورشل است.

 

 

آشنایی با PowerShell ISE

این بخش برای افرادی است که با قابلیت های PowerShell ISE آشنا نیستند. همانطور که در عکس زیر مشاهده می کنید :

 

۱- این قسمت به اسم Script Pane شناخته می شود و برای نوشتن اسکریپت فوق العاده است چون دستورات نوشته شده در این قسمت تا زمانی که ما نیاز نداشته باشیم اجرا نمی شوند.

۲- قابلیت IntelliSense در پاورشل که کامندهای مربوطه را نشان می دهد.

۳- قسمتی است که تمامیه cmdlet ها را نشان می دهد و قابلیت جستجو نیز دارد.

۴- کل اسکریپت نوشته شده را اجرا می کند.

۵- فقط همان بخشی که Highlight شده است را اجرا کرده و نتیجه را نشان می دهد.

 

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

 

استفاده از قابلیت Show-Command در ISE :

طبق عکس زیر می توانید از این قابلیت برای کامل کردن پارامتر ها بصورت GUI استفاده کنید : ( بیشتر در مورد Show-Command در مقاله بعد صحبت خواهد شد )

 

جمع بندی : 

در آخر اگر بخواهیم یک جمع بندی داشته باشیم، باید گفت در این مقاله ما با نحوه مشاهده ورژن پاورشل و نحوه آپدیت کردن آن آشنا شدیم تا اگر شما نیاز به آپدیت پاورشل خود داشتید بتوانید این کار را انجام دهید. در بخش بعد نیز فرم کلی دستورات یا همان cmdlet ها و همچنین پارامتر های آن به همراه مثال هایی توضیح داده شد و بعد از آن توضیحات مربوط به ماژول که چطور می توانیم ماژول های موجود در سیستم را در Session پاورشل اضافه و یا حذف نماییم. در آخر نیز درمورد شخصی سازی پاورشل و PowerShell ISE گفته شد تا شما با این موضوعات نیز آشناییت پیدا کنید چون ما در مقالات آینده که درمورد Scripting است، حتما با PowerShell ISE کار خواهیم داشت.

 

خب دوستان این تازه شروع کار با پاورشل و یادگیری این مبحث شیرین بود 🙂 در مقالات آینده بحث های جدی تری را مورد بررسی قرار می دهیم، امیدوارم این مقاله برای شما کاربردی بوده باشد.

منتظر مقالات بعدی باشید…

 

منابع :

– کتاب های Learn Windows PowerShell in a Month و PowerShell in depth

– Administration and Automation with Windows PowerShell از UDEMY

 

ارسال یک پاسخ

آدرس ایمیل شما منتشر نخواهد شد.