PowerShell  - PART2
 

در ادامه معرفی Windows PowerShell به برخی دیگر از موارد موجود در این محیط می پردازیم .

برای شروع کار با یک Value را و روش استفاده از آن در این محیط را نمایش می دهیم . در شکل یک توسط محیط PS  ما یک ورودی از کاربر

گرفته توسط دستور Read-Host سپس آن را به یک متغیر داده.توسط Assecurestring ما بصورت ستاره ورودی را دریافت می کنیم .

 

      Figure 1: PowerShell

در شکل 1 شما می توانید مشاهده کنید که چگونه در این محیط می توان از یک متغیر استفاده کرد و تغییرات بر روی آن انجام داد سپس آن را به یک فایل

ربط داد الیته این موارد را می توان توسط Script نویسی نیز انجام داد و برای برنامه نویسان این محیط بسیار جالب می تواند باشد .

WMI

امکان استفاده از WMI در این محیط نیز وجود دارد برای آشنایی می توانید همانند شکل 2 راهنما آن را مشاهده کنید .

 

      Figure 2: PowerShell - Get Help (WMI Obj)

برای دیدن کلیه کلاسهای  WMI-Objects  شما می توانید از دستور زیر استفاده کنید

  • Get-WmiObject -List

برای مثال به شکل 3 توجه کنید در اینجا توسط WMI Object یک سرویس را بر روی Windows XP به حالت Stop در آمده.

  

      Figure 3: PowerShell -  Get-WMI Obj  - StopService()

بعد از اجرای این کد شما می توانید بر روی شکل 4 مشاهده کنید که سرویس Alerter بصورت Stop می باشد .

  

      Figure 4: Windows Services

استفاده از WMI توسط دستور WMIC امکان پذیر می باشد اما بر روی محیط PS شما می توانید از دستورات WMI استفاده کنید به راحتی .

برای گرفتن اطلاعات سرویس های سیستم های دیگر می توان همانند فرمان زیر عمل کرد .

  • Get-wmiobject  win32_service  -computername  192.168.0.1

بر نمونه یک مثال دیگر از WMI زده شده به آن دقت کنید .در شکل 5 توسط WMI Object می توان مشخصات BIOS سیستم را بصورت لیست گرفت .

 

 

      Figure 5: WMI Object - win32_Bios

EventLog

اما موردی که بسیار می تواند به Administrator ها کمک بکند بر روی PS همین EventLog می باشد شما می توانید به راحتی از این دستور برای

نمایش دادن Log های سیستم استفاده کنید و خروجی آن را به راحتی به یک فایل Text و یا Csv بدهید بدون آنکه کد خاصی بنویسید .

 

      Figure 6: get-Eventlog

همانند شکل 6 می توانید مشاهده کنید که توسط دستور Get-Eventlog شما می توانید با وارد کردن نام Log خود آن را مشاهده کنید .

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

  • Get-Eventlog Application > c:\evt-App.txt

خروجی دستور بالا مانند شکل 7 می باشد .

 

      Figure 7: Evt-App.txt

ACL

در آخر یک مثال از ACL زده می شود که می تواند مهم باشد برای کاربران .

در زیر از دستور Get-acl استفاده شده برای نمایش Permission افراد به آدرسهای مختلف Registry دقت کنید .

  

      Figure 8: PowerShell - Get-Acl

در زیر می توانید برخی از دستورات موجود بر روی PS را مشاهده کنید

 

Working with Software Installations

  • Listing Windows Installer Applications

    • Get-WmiObject -Class Win32_Product -ComputerName .

    • Get-WmiObject -Class Win32_Product -ComputerName . | Format-List

  • Listing All Uninstallable Applications

    • New-PSDrive -Name Uninstall -PSProvider Registry -Root

    • Get-ChildItem -Path Uninstall: | ForEach-Object -Process { $_.GetValue("DisplayName")

  • Installing Applications

    • (Get-WMIObject -ComputerName PC01 -List | Where-Object -FilterScript {$_.Name -eq "Win32_Product"}).InvokeMethod("Install","\\AppSrv\dsp\NewPackage.msi")

  • Removing Applications

    • (Get-WmiObject -Class Win32_Product -Filter "Name='ILMerge'" -ComputerName . ).InvokeMethod("Uninstall",$null)

  • Upgrading Windows Installer Applications

    • (Get-WmiObject -Class Win32_Product -ComputerName . -Filter "Name='OldAppName'").InvokeMethod("Upgrade","\\AppSrv\dsp\OldAppUpgrade.msi")

Changing Computer State: Locking, Logging Off, Shutting Down, and Rebooting

Working with Printers            

Performing Networking Tasks 

  • Listing IP Addresses for a Computer

    • Get-WmiObject -Class Win32_NetworkAdapterConfiguration -Filter IPEnabled=TRUE -ComputerName . | Select-Object -Property IPAddress

  • Listing IP Configuration Data

    • Get-WmiObject -Class Win32_NetworkAdapterConfiguration -Filter IPEnabled=TRUE -ComputerName .

  • Pinging Computers

    • Get-WmiObject -Class Win32_PingStatus -Filter "Address='127.0.0.1'" -ComputerName .

    • Get-WmiObject -Class Win32_PingStatus -Filter "Address='127.0.0.1'" -ComputerName . | Select-Object -Property Address,ResponseTime,StatusCode

  • Assigning the DNS Domain for a Network Adapter

    • Get-WmiObject -Class Win32_NetworkAdapterConfiguration -Filter IPEnabled=true -ComputerName . | ForEach-Object -Process { $_.InvokeMethod("SetDNSDomain", "fabrikam.com")}

    • Get-WmiObject -Class Win32_NetworkAdapterConfiguration -ComputerName . | Where-Object -FilterScript {$_.IPEnabled} | ForEach-Object -Process {$_.InvokeMethod("SetDNSDomain", "fabrikam.com")}

  • Determining DHCP-Enabled Adapters

    • Get-WmiObject -Class Win32_NetworkAdapterConfiguration -Filter "DHCPEnabled=true" -ComputerName .

  • Retrieving DHCP Properties

    • Get-WmiObject -Class Win32_NetworkAdapterConfiguration -Filter "DHCPEnabled=true" -ComputerName . | Select-Object -Property DHCP*

  • Enabling DHCP on Each Adapter

    • Get-WmiObject -Class Win32_NetworkAdapterConfiguration -Filter IPEnabled=true -ComputerName . | ForEach-Object -Process {$_.InvokeMethod("EnableDHCP", $null)}

  • Creating a Network Share

    • (Get-WmiObject -List -ComputerName . | Where-Object -FilterScript {$_.Name -eq "Win32_Share"}).InvokeMethod("Create",("C:\temp","TempShare",0,25,"test share of the temp folder"))

    • net share tempshare=c:\temp /users:25 /remark:"test share of the temp folder"

  • Removing a Network Share

    • (Get-WmiObject -Class Win32_Share -ComputerName . -Filter "Name='TempShare'").InvokeMethod("Delete",$null)

  • Connecting a Windows Accessible Network Drive

    • (New-Object -ComObject WScript.Network).MapNetworkDrive("B:", "\\FPS01\users")

    • net use B: \\FPS01\users

Last Updated: January 1, 2007

Winteacher.com
Expert Zone > PowerShell - PART2

 © 2003-2006 Winteacher.com . All rights reserved