قسمت هفتم : نکات Variables، Array و Hash Table در Powershell

0 54

دوستان امیدوارم حالتون خوب باشه. در این مقاله من سعی کردم نکات مهم درباره متغیر، آرایه و Hash Table ها شرح کنم. به این دلیل که ما با تمام این مواردی که ذکر شد، تقریبا اکثر مواقع کار خواهیم کرد. پس در ادامه مقاله ما رو دنبال کنید.

 

تمام نکات مهم درباره Variable ها

استفاده از Single Quotation یا Double Quotation؟

در پاورشل ما برای تعریف یک String می توانیم از Single و Double Quotation استفاده کنیم. اما تفاوت این دو در چیست؟ به تصویر زیر دقت کنید :

اگر با دقت به عکس بالا دقت کنید، به سادگی متوجه تفاوت این دو می شوید.

در Single Quotation ما نمی توانیم محتوای متغیر را نمایش دهیم ولی در Double Quotation متغیر را تعریف می کنیم و پاورشل نیز محتوای آن را نمایش می دهد.

 

استفاده از Backtick :

زمانی که ما نمی خواهیم محتوای متغیر در Double Quotation نمایش داده شود، می توانیم مانند مثال زیر از Backtick قبل از اسم متغیر استفاده کنیم :

نکته : کاراکتر Backtick در اکثر کیبورد ها پایین Esc قرار دارد و با Single Quotation فرق می کند.

 

Subexpression چیست؟

برای زمانی است که ما می خواهیم یک Property از متغیر را نشان دهیم. به مثال زیر توجه کنید :

در اینجا وقتی شما دستور خود را در پرانتز قرار می دهید، اول از همه این دستوری که در داخل پرانتز قرار دارد اجرا می شود چون اولویت بیشتری دارد. اما بعد از آن، اطلاعات پردازش شده درون $ قبل از پرانتز قرار می گیرد و سپس کل خط اجرا می شود که می توانید نتیجه را در عکس بالا مشاهده کنید. یعنی نتایج پردازش دستور Users.Count$ درون $ که قبل از پرانتز است قرار می گیرد.

 

مشخص کردن نوع Variable :

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

برخی از مهم ترین و پرکاربرد ترین Type های متغیرها در پاورشل :

[string] , [int] , [double] , [datetime] , [bool] ,..

برای مشخص کردن Type یک متغیر می توانیم بصورت زیر این کار را انجام دهیم :

تبدیل متغیر ها :

اگر بخواهیم برای مثال متغیر Double را به int تبدیل کنیم و نمایش دهیم می توانیم از روش زیر استفاده کنیم :

کار با Property و Method های متغیر ها :

برای اینکه ما بتوانیم Property و یا Method متغیر ها را پیدا و با آن ها کار کنیم، همانطور که در مقالات قبل هم به آن اشاره شد از دو روش می توانیم کمک بگیریم :

روش اول : با استفاده از Get-Member

همانطور که در مقالات قبل درباره کارکرد Get-Member توضیح داده شد ما می توانی در این مورد هم از آن برای مشاهده Property و Method های یک متغیر یا یک کامند استفاده کنیم :

روش دوم : استفاده از Tab Completion

با این روش هم می توانید Property و یا Method مورد نظر خود را پیدا کنید.

 

استفاده از متود Trim در String ها :

خیلی مواقع برای ما پیش می آید که ما یک لیست آماده از کامپیوتر ها یا موارد دیگر داریم و می خواهیم با استفاده از آن فایل یک دستور در پاورشل را اجرا کنیم. اما نکته ای که وجود دارد این است که پاورشل نسب به Space های اضافه بعد از تمام شدن خط نیز حساس است و آن را به عنوان کاراکتر در نظر می گیرد. برای مثال فکر کنید می خواهید از یک فایل که اسم ۴۰ کامپیوتر در آن است استفاده کنید تا از Process های آن ها باخبر شوید. اگر یک Space اضافه بعد از نام آن کامپیوتر ها وجود داشته باشد پاورشل به شما ارور می دهد.

حالا شما می توانید از متود Trim استفاده کنید تا Space های اضافه را که جلوی اسم کامپیوتر ها وجود دارد حذف کند تا دیگر پاورشل به شما ارور ندهد. مثل دستور زیر :

(Get-Content C:\CompName.txt).Trim | Test-Connection

 

کار با Arrays

چند روش برای معرفی یک متغیر به عنوان آرایه :

۱ : $CompList = ‘abc’,’def’,’ghi’

۲ : [string[]]$CompList

۳ : [array]$CompList

۴ : $CompList = @()

موارد کاربردی درمورد Array :

مشاهده بر اساس Index در آرایه ها و همچنین بصورت Range :

این اعداد شمارشی Index از شماره صفر شروع می شوند و باید به این نکته دقت داشت.

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

خروجی زیر، دومی از اخر را نشان میدهد.

تغییر مقادیر در آرایه :

 

توضیحات Hash Table

البته شما با Hash Table در مقالات قبل آشنا شده اید ولی یک سری نکات دیگر هم در این مقاله به آن اضافه می شود.

چه زمانی ما از Hash Table استفاده می کنیم؟

۱ – تغییر مقدار یک Property که دستور آن موجود نیست. به مثال زیر توجه کنید :

مثلا تغییر یک Attribute در اکانت یکی از یوزر های اکتیو دایرکتوری که ما نمی توانیم از طریق دستورات آماده پاورشل آن را سِت کنیم پس باید به روش زیر آن را Edit کنیم :

برای حذف می توانیم از Remove و برای Edit  کردن نیز از Replace استفاده کنیم.

 

۲ – برای تبدیل واحد ها به یکدیگر :

برای مثال تبدیل KB به MB که در مثال های قبل انجام داده ایم ولی دوباره یکی دیگر هم مثال میزنیم :

در قسمت ششم بصورت کامل Syntax عملیات بالا توضیح داده ام، اگر آن را مطالعه نکرده اید هم این کار را بکنید چون بسیار مهم است.

 

۳ – تعریف مقدار دیفالت برای یک دستور :

برای مثال شما از یک سری از دستورات بسیار زیاد استفاده می کنید و همیشه آن را به یک صورت اجرا می کنید، پس این کار بسیار کاربردی می تواند باشد. به Syntax زیر دقت کنید :

$PSDefaultParameterValues = @{“cmdlet:parameter”=”Deafult Value”}

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

حالا می خواهم آن را بصورت دیفالت تنظیم کنم که بصورت زیر انجام می شود :

 

نحوه ساختن One-Dimensional Hash Tables :

این Hash Table ها می توانند خیلی کاربردی باشند، برای مثال می توانند برای اجاد تغییرات بر روی Attribute های کاربران بسیار کاربردی باشند و یا هر کامند دیگری که شما بخواهید آن را ByPropertyName بر اساس مقادیر دیگر اجرا کنید.

ساخت این نوع از Hash Table ها بصورت زیر است به مثال زیر دقت کنید :

وقتی ما دستور Set-ADUser @Parameters را اجرا می کنیم چه می شود؟

وقتی این دستور اجرا می شود، ما به پاورشل می گوییم مقادیری که در @Parameters قرار گرفته است را به عنوان مقادیر پارامتر های خود حساب کند، پس در نتیجه یوزر hasan دچار تغییراتی بر روی Department و MobilePhone خود می شود.

 

دوستان امیدوارم این مقاله هم مورد استفاده شما قرار بگیرد و برای شما کاربردی باشد. بازهم ممنون از دوستانی مقاله های من رو دنبال می کنند :)))

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

 

منابع :

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

– Administration and Automation with Windows PowerShell از UDEMY

– داکیومنت های مربوطه در docs.microsoft.com

ارسال یک پاسخ

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