قسمت چهارم : Execution Policy و پروفایل در PowerShell؟

0 69

 

قسمت چهارم : Execution Policy و پروفایل در PowerShell؟

سلام به تمام عزیزان، امیدوارم حالتون خوب باشه. دوستان من در این مقاله سعی کردم در مورد Profile و Execution Policy در پاورشل صحبت کنم. این دو قسمت هم یکی از قسمت های مهم از پاورشل هستند، مخصوصا Profile که در ادامه مقاله متوجه اهمیت آن می شوید.

 

توضیحات Execution Policy

دوستان من درحال حاضر با تنظیمات دیفالت پاورشل می خواهم یک فایل اسکریپت را که با پسوند ps1. هست را اجرا کنم و نتیجه آن را ببینم. فایل اسکریپت من یک خط کامند است که اطلاعات درمورد کارت شبکه سیستم را نشان می دهد :

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

پاورشل برای اجرای Script ها که با پسوند “ ps1. “ ذخیره می شوند، پنج سیاست مختلف دارد که می توانیم از آن ها استفاده کنیم، بصورت دیفالت بر روی حالت Restricted قرار دارد. این پنج سیاست نیز در قسمت پایین شرح داده شده است :

 

Restricted :

در این حالت فقط می توانیم کامند ها را اجرا کنیم و حق اجرای فایل های اسکریپت را به هیچ عنوان نداریم. در حالت دیفالت، ویندوز ۱۰ از این حالت پیروی می کند.

AllSigned :

باید با استفاده از اسکریپت Digital Sign شده باشد تا ما بتوانیم آن فایل اسکریپت را اجرا کنیم. نکته مهمی که وجود دارد این است که، اگر فایل اسکریپت Sign شده باشد ولی نه با استفاده از Certificate که ما در Trusted Root داریم، به ما یک Warning می دهد و ما درصورت قبول کردن آن Warning می توانیم فایل اسکریپت را اجرا کنیم. این می تواند مشکل بزرگی در بعضی موقعیت ها باشد.

RemoteSigned :

فایل های اسکریپتی که توسط خود ما در کامپیوتر نوشته شده است اجرا می شوند ولی اسکریپت های دیگر که از اینترنت یا بیرون کامپیوتر خودمان می آیند باید Sign شده باشند.

Unrestricted :

هیچ محدودیتی برای اجرای اسکریپت ها وجود ندارد و فقط قبل از اجرای آن به ما Warning می دهد.

ByPass :

این پالیسی هم هیچ محدودیتی ندارد ولی دیگر حتی Warning هم نمیدهد.

برای دیدن Execution Policy باید از دستور زیر استفاده کنید :

Get-ExecutionPolicy

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

باید با دسترسی Administrator این دستور را اجرا کنید.

Set-ExecutionPolicy -ExecutionPolicy Restricted

استفاده از Ublock-File :

زمانی که Policy  شما طوری باشد، که برای اجرای اسکریپت هایی که از اینترنت آمده اند محدودیت ایجاد کند شما می توانید از دستور Unblock-File استفاده کنید و سپس آن را اجرا کنید. مانند :

از گزینه زیر هم می توانید انجام دهید :

Scope در Execution Policy :

ما در اجرای این سیسات ها نیز پنج Scope داریم. درواقع این Scope نشان دهنده این است که، پالیسی ما در چه سطحی در حال اجرا است. به توضیات زیر دقت کنید :

هرکدام از Scope های زیر به ترتیب از بالا به پایین دارای اولویت بیشتر است و بالاترین اولویتی که در آن Policy سِت شده باشد اعمال می شود.

MachinePolicy : از طریق GPO به کامپیوتر اعمال می شود.

UserPolicy : دامین از طریق GPO به یوزر اعمال می شود.

Process : سیاست مخصوص این Session از پاورشل

CurrentUser : برای یوزری که لاگین کرده است.

LocalMachine : برای کامپیوتر اعمال می شود.

برای تغییر Policy هر Scope  هم می توانید مانند زیر عمل کنید :

Set-ExecutionPolicy -ExecutionPolicy Unrestricted -Scope Process

در Group Policy نیز اگر بخواهید دو Scope اول را سِت کنید باید به مسیر زیر بروید :

هم در User و هم در Computer قرار دارد.

User/Computer -> Administrative Templates -> Windows Component -> Windows PowerShell

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

 

پروفایلِ PowerShell چیست؟

هر یک از کنسول های پاورشل می توانند پروفایل مخصوص خودشان را داشته باشند. ما زمانی که کنسول پاورشل را باز می کنیم اولین چیزی که لود می شود همین پروفایل پاورشل است، تا زمانی آن لود شود ما می توانیم از پاورشل استفاده کنیم. برای همین ما می توانیم دستورات کاربردی یا شخصی سازی های مربوط به پاورشل را در پروفایل انجام دهیم و این باعث می شود که دیگر ان دستورات بصورت همیشگی در هر Session از پاورشل وجود داشته باشند.

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

 

انواع پروفایل ها در PowerShell :

مایکروسافت برای مدیریت و شخصی سازی بهتر، چهار پروفایل برای پاورشل در حالت های زیر در نظر گرفته است :

Host در قسمت پایین به معنای نرم افزاری است که ما از آن برای اجرای کامند های پاورشل استفاده می کنیم.

AllUsersAllHosts : پروفایلی برای همۀ یوزر ها و همۀ Host ها.

AllUsersCurrentHost : پروفایلی برای همۀ یوزر ها و Host که با آن در حال حاضر پاورشل را اجرا می کنیم.

CurrentUserAllHosts : یوزری که در حاضر با آن کار می کنیم و همۀ Host ها.

CurrentUserCurrentHost : یوزری که در حاضر با آن کار می کنیم و Host که با آن در حال حاضر پاورشل را اجرا می کنیم.

 

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

در اینجا مسیر AllUsersAllHosts را مشاهده می کنید. بقیه پروفایل ها را هم می توانید به همین شکل با نوشتن اسم آن ها بعد از PROFILE$ ببینید.

نکته : مکان این پروفایل ها تغییر نمی کنند.

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

New-Item -ItemType File -Path $PROFILE.AllUsersAllHosts -Force

حالا اگر در این فایل برای مثال دستور زیر را بنویسیم :

Import-Module -Name SmbShare,ActiveDirectory

هر بار که ما پاورشل را باز می کنیم با هر یوزر و یا هر Host، این دو ماژول در پاورشل Import می شوند.

برای اینکه بهتر درک کنید من دستور بالا را در پروفایل خود قرار می دهم تا ببینید چه اتفاقی خواهد افتاد.

اول باید به قسمتی که پروفایل وجود داره برویم و ان را تغییر دهیم. پس به مسیر زیر می رویم که برای AllUsersAllHosts هست :

C:\Windows\System32\WindowsPowerShell\v1.0\profile.ps1

و تغییرات زیر را Save می کنیم :

حالا اگر یک Session از پاورشل را باز کنیم باید ماژول های بالا بصورت خودکار همراه با پروفایل لود شده باشند :

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

 

نکته مهم :

نکته ای که باید به آن اشاره کنم این هستش که، چون فایل مربوط به پروفایل پاورشل نیز یک اسکریپت است با پسوند “ps1.”، شما حتما باید Execution Policy خود را بر روی حالتی بگذارید که فایل های اسکریپت بتوانند اجرا شوند و اگر پالیسی شما این اجازه را ندهد درنتیجه پروفایل مورد نظر شما لود نخواهد شد. که در همین مقاله راجع به این موضوع یعنی Execution policy صحبت کردیم.

برای اینکه نخواهید در بعضی موارد خاص پاورشل به همراه پروفایل لود شود می توانید از دستور زیر استفاده کنید :

powershell.exe -noprofile

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

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

 

منابع :

– PowerShell Basics Course از ITProTV

– Administration and Automation with Windows PowerShell از UDEMY

ارسال یک پاسخ

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