PowerShell  - PART4
 

در این بخش به موارد جدید در Windows PowerShell می پردازیم .

در Powershell Part3 شرح داده شد که چگونه می توان از فایلهای  WMI Script نویسی PS1 استفاده کرد .

در این صفحه استفاده از Script های WMI برای Powershell در درون فایلهای XML را بررسی می کنیم .

 

در این روش Script شما جزو Powershell شده به عنوان یک ScriptProperty در درون Member های آن قرار می گیرید.

برای مثال در این بخش یک دو Script بنام های Canping , SetService را به Member های System.string اضافه می کنیم .

دو Script بالا دستی ساخته شده و در حالت Default برروی Powershell وجود ندارند .کد هر دو Script را در زیر شرح داده شده.

 

قبل از شروع شما می توانید بر روی PowerShell با دستور زیر یک متغیر بسازید :

$VariableName = "String..."

سپس با دستور زیر Member های که یک متغییر String می تواند از آنها استفاده کند را ببینید .

$VariableName  | Get-Member

همانند شکل 1:

    Figure 1: Windows PowerShell v 1.0 system.string (Members)

     Figure 1: Windows PowerShell v 1.0 system.string (Members)

در اینجا ما می توانیم به Member های Default یک String مواردی همچون Script های دستی خود را اضافه کنیم که هدف ما در

این صفحه نیز می باشد:

برای این کار شما می توانید در آدرسی که Powershell را نصب کرده اید در Folder v1.0 فایلی بنام  Types.ps1xml را پیدا کنید .

   Figure 2: Windows PowerShell v 1.0  Folder

   Figure 2: Windows PowerShell v 1.0  Folder

همانند شکل 2 شما مشاهده می کنید که فایلهای XML با نام های متفاوت که در اینجا ما با types.ps1xml کار داریم .

بعد از باز کردن فایل با Notepad می بایست که کدی همانند شکل زیر به آن اضافه شود .

 

<Type>
  <Name>System.String</Name>
  <Members>
    <ScriptProperty>
      <Name>CanPing</Name>
      <GetScriptBlock>
      $wmi = get-wmiobject -query "SELECT * FROM Win32_PingStatus WHERE Address = '$this'"
      if ($wmi.StatusCode -eq 0) {        $true      } else {        $false      }
      </GetScriptBlock>
    </ScriptProperty>
  </Members>
</Type>

Code 1: CanPing

Script خود را با یک Name به آن Add کنید این فایل بصورت XML می باشد و شما می بایست

کد WMI Script خود همانند Code 1 بنویسید و به فایل اضافه کنید.

کد script  ما دارای نام  CanPing می باشد و کارش این می باشد که متغیر String را گرفته و آن را Ping کند

اگر Ping شد True بر می گرداند و اگر Ping نشود False

پس در واقع متغیر String ما می تواند یک Host و یا IP Address و یا FQDN باشد .

 

همانند شکل 3 مشاهده می کنید که این کد به فایل اضافه شده .شروع با <type> می باشد و پایان آن با <type/> می باشد .

   Figure 3: Windows PowerShell v 1.0  Folder - types.ps1xml File (canping)

   Figure 3: Windows PowerShell v 1.0  Folder - types.ps1xml File (canping)

همین کار را برای Script دوم بنام SETService انجام می دهیم .همانند کد 2 شما این کد را به فایل types.ps1xml اضافه می کنید .

این Script را در Powershell part3 شرح داده ایم در اینجا نام سرویس را گرفته و آن را Run کرده و Mode آن را در حالت Automatic قرار می دهد .

 

<Type>
<Name>System.String</Name>
<Members>
<ScriptProperty>
<Name>SETService</Name>
<GetScriptBlock>
set-service $this -startuptype Automatic
start-service $this
$name = get-wmiobject -query "select * from win32_service where name = '$this'"
if (get-service $this| where-object {$_.Status -eq "Running"} ) { "SRV Status = Running: $this ==> $name " }
</GetScriptBlock>
</ScriptProperty>
</Members>
</Type>

Code 2: SETService

در شکل 4 می توانید مشاهده کنید که کد به فایل اضافه شده .

   Figure 4: Windows PowerShell v 1.0  Folder - types.ps1xml File (SETService)

   Figure 4: Windows PowerShell v 1.0  Folder - types.ps1xml File (SETService)

بعد از انجام این دو مورد شما می بایست که PowerShell را بسته و دوباره باز کنید تا فایل types.ps1xml توسط PS دوباره خوانده شود سپس

همانند شکل 5 می توانید یک متغیر String تعریف کرده و توسط Get-Member لیست Member های آن را مشاهده کنید متوجه

می شوید که دو مورد به آن اضافه شده شما می توانید شکل 5 را با شکل 1 مقایسه کنید .

 
Figure 5: Windows PowerShell v 1.0 system.string (Members) - (Click the image for a Larger view)
Figure 5: Windows PowerShell v 1.0 system.string (Members) - (Click the image for a Larger view)
 
 

حالا شما می توانید این دو Script را اجرا کنید و بصورت Default برای PS داشته باشید .

به شکل 6 توجه کنید:

قبل از اجرا همانطور که در part3 گفتیم باید دستور Set-executionpolicy remotesigned را اجرا کنیم تا اجازه اجرای Script به سیستم داده شود .

 

    Figure 6: Windows PowerShell v 1.0  - Execute  (Setservice and canping Scripts)

   Figure 6: Windows PowerShell v 1.0  - Execute  (Setservice and canping Scripts)

در شکل 6 ما یک متغیر ساخته بنام myservice این کار را به دو صورت می توان انجام داد:

  • $var = "mystring...."

  • [string]$var = "mystring..."

درون متغیر خود نام یک سرویس را قرار می دهیم ما دراینجا QoS RSVP را قرار داده ایم که نام سرویس آن RSVP می باشد

سپس توسط SETService Script که تعریف کرده ایم عملیات را بر روی متغیر انجام می دهیم .

 

در  تست دوم توسط Canping ما می توانیم نام Host های خود را به یک متغیر داده و توسط canping آنها را Ping کنیم و جواب False , True را دریافت کنیم .

در شکل 7 مشاهده می کنید که بعد از اجرا سیستم سرویس QoS RSVP را Start کرده و در حالت Auto قرار داده.

 

   Figure 7: Windows Services (Setservice is Successfully)

   Figure 7: Windows Services (Setservice is Successfully)

 

Last Updated: March 9, 2007

Winteacher.com
Expert Zone > PowerShell - PART4

 © 2003-2007 Winteacher.com . All rights reserved