Friday, June 27, 2008

เริ่มต้นใช้งาน Windows PowerShell

เริ่มต้นใช้งาน Windows PowerShell
บทความนี้จะเป็นการลงมือติดตั้งและเริ่มต้นใช้งาน Windows PowerShell กันครับ สำหรับท่านที่ยังไม่ทราบว่า Windows PowerShell คืออะไร สามารถอ่านรายละเอียดได้จากบทความเรื่อง แนะนำ Windows PowerShell ครับ

ในบรรดา Shell command ต่างๆ เช่น Cmd.exe และ SH, KSH, CSH หรือ BASH ซึ่งเป็นเชลล์ของยูนิกซ์ นั้นจะทำการเอ็กซีคิวท์คำสั่งหรือว่ายูทีลิตีในโพรเซสใหม่ และแสดงผลที่ได้จากการทำงานเป็นแบบ text ในเวลาต่อมาจึงได้มีการพัฒนาภาษา AWK และ PERL ซึ่งจะมีการ Interactive กับผู้ใช้มากขึ้น

Shell แต่ละตัวนั้น จะมีการรวมเอาคำสั่งต่างๆ เข้าไว้ภายในด้วย และการทำงานของคำสั่งนั้น จะกระทำในโพรเซสของ Shell ตัวอย่างเช่น typeset ใน KSH และคำสั่ง dir ใน CMD.EXE แต่ Shell ส่วนมากแล้ว จะมีคำสั่งภายในเพียงจำนวนไม่มากนัก ในการใช้งานจึงจำเป็นต้องทำการสร้างยูทีลิตีต่างๆ ขึ้นมา เพื่อใช้งานเพิ่มเติมหรือเสริมในส่วนที่ไม่มีคำสั่งใน Shell

แต่สำหรับ Windows PowerShell นั้น จะมีความแตกต่างจาก Shell แบบเดิม โดยสามารถแบ่งออกเป็นข้อได้ดังนี้
1. Windows PowerShell นั้น จะทำงานในลักษณะ objects based บน .NET platform แทนการทำงานแบบ text
2. Windows PowerShell จะมีชุดคำสั่งภายใน (built-in) จำนวนมากให้ใช้งาน และการใช้งานนั้นก็มีการอินเทอร์เฟชที่ใช้งานง่าย
3. คอมมานด์เชลล์ทั้งหมดจะใช้ command parser แบบเดียวกัน ทำให้ง่ายในการเรียนรู้
4. ยังคงสามารถใช้งานเครื่องมือปกติของ Windows เช่น Net, SC และ Reg.exe ใน Windows PowerShell ได้

Windows PowerShell Cmdlets
Windows PowerShell จะใช้ชุดคำสั่งที่เรียกว่า cmdlet (ออกเสียงว่า “command-let”) ซึ่งเป็นคำสั่งแบบ single-feature เพื่อทำงานกับ object ต่างๆ โดย cmlet นั้น จะเป็นรูปแบบของ verb cและ noun คั่นด้วย – เช่น Get-Help, Get-Process, Start-Service เป็นต้น

การใช้งาน cmlet ใน Windows PowerShell นั้น จะสามารถใช้งานได้ง่ายเนื่องจากมันถูกออกแบบมาให้สามารถใช้งานร่วมกันกับ cmlet อื่นๆ ตัวอย่างเช่น “get” cmlet สามารถใช้รับข้อมูลได้เพียงอย่างเดียว ในขณะที่ set cmdlet นั้น จะสามารถใช้สร้างหรือเปลี่ยนข้อมูลได้เพียงอย่างเดียว “format” cmdlet สามารถใช้ในการจัดรูปแบบข้อมูลได้เพียงอย่างเดียว “out” cmdlet สามารถใช้เพื่อส่งออกข้อมูลไปยังปลายทางที่กำหนดได้เพียงอย่างเดียว

Cmdlet แต่ละตัวนั้น จะมีไฟล์ help ซึ่งให้ความช่วยเหลือในการใช้งาน โดยจะแสดงรายละเอียดของ cmdlet, command syntax, รายละเอียดของ parameters, และตัวอย่างการใช้งาน โดยการเปิดดูได้โดยรันคำสั่ง ดังนี้
get-help -detailed

A New Scripting Language
Windows PowerShell นั้นจะใช้ภาษาที่เป็นของตัวเอง แทนการนำภาษาที่มีอยู่แล้ว ด้วยเหตุผลต่างๆ ดังนี้
1. Windows PowerShell ต้องการภาษาสำหรับใช้ในการจัดการ .NET objects
2. ภาษาที่ใช้นั้นต้องมีสภาวะแวดล้อมที่ง่ายในการใช้งาน cmdlet
3. ภาษาที่ใช้นั้นต้องสามารถรองรับการใช้งานที่ซับซ้อนได้ โดยไม่ทำให้การทำงานมีความซับซ้อนมากขึ้น
4. ภาษาที่ใช้นั้นจะต้องสามรถใช้งานร่วมกับภาษาระดับสูงที่ใช้ในการโปรแกรม .NET ได้ เช่น C#

Windows Commands and Utilities
Windows PowerShell สามารถใช้งานร่วมกันกับ Windows command-line programs นั้นคือสามารถใช้โปรแกรมแบบ GUI เช่น Notepad, Calculator จากภายใน Windows PowerShellได้ นอกจากนี้ยังสามารถทำการบันทึกหน้าจอ text ที่เกิดจากการรันโปรแกรม และใช้งาน text เหล่านั้นได้แบบเดียวกันกัลป์การใช้งานใน cmd.exe

Processing Objects
ใน Windows PowerShell นั้น จะเป็นการทำงานกับ .NET objects ตัวอย่างเช่น เมื่อทำการรันคำสั่งเพื่อเรียกดูเซอร์วิสต่างๆ ใน Windows PowerShell ผลที่ได้นั้นจะเป็น object ที่ให้บริการเหล่าตัวนั้น และเมื่อคุณดูข้อมูลต่างๆ ของเซอร์วิสนั้น จะเป็นการดูพร็อพเพอร์ตี้ของ service object และเมื่อทำการสตาร์ทเซอร์วิสนั้น ก็จะเป็นการเปลี่ยนสถานะดูพร็อพเพอร์ตี้ของเซอร์วิสเป็น “started” โดยใช้ method ของ service object

Object ทุกตั้วที่เป็นประเภทเดียวกันจะมี properties และ methods เหมือนกัน แต่ instance ของ object แต่ละตัว สามารถมีค่าของพร็อพเพอร์ตี้ที่แตกต่างกันได้ ตัวอย่างเช่น service object แต่ละตัวมี ชื่อและสถานะ อย่างไรก็ตามมี ชื่อและสถานะของแต่ละเซอร์วิสอาจแตกต่างกันไป เป็นต้น

คำสั่งสำหรับใช้ดู object นั้น สามารถใช้ | เพื่อส่งผล cmdlet ชื่อ “get” ไปให้กับ get-member ตัวอย่างเช่น get-service | get-member

ซึ่ง get-member จะแสดงข้อมูลของ service object เช่น typename ของ object และ รายการพร็อพเพอร์ตีและเมธอดของมัน

Object Pipelines
จุดเด่นจุดหนึ่งของการใช้งานแบบ object คือ การทำ pipeline คำสั่ง นั้น สามารถทำได้ง่าย โดยในการใช้งานเชลล์ทั่วไปนั้น การส่งผ่านเอ้าท์พุทที่ได้จากคำสั่งหนึ่งไปเป็นอินพุทของอีกคำสั่งหนึ่ง การสื่อสารระหว่างสองคำสั่งนั้นส่วนมากแล้วจะต้องมีการปรับเปลี่ยนรูปแบบของเอ้าท์พุทจากแบบหนึ่งไปเป็นอีกแบบหนึ่งเพื่อให้เหมาะสมกับการทำงานเสียก่อน
สำหรับใน Windows PowerShell นั้น จะมีการจัดเตรียมโมเดลแบบ interactive ซึ่งมีพื้นฐานมาจาก object ทำให้ การส่งผ่านเอ้าท์พุทที่ได้จากคำสั่งหนึ่งไปเป็นอินพุทของอีกคำสั่งหนึ่ง ไม่จำเป็นะต้องมีการปรับเปลี่ยนรูปแบบของเอ้าท์พุทจากแบบหนึ่งไปเป็นอีกแบบหนึ่งก่อน โดยผู้ใช้สามารถอ้างอิง properties และ methods ของobject โดยใช้ชื่อได้โดยตรง ตามตัวอย่างด้านล่าง

ตัวอย่าง:
ต้องการหาหมายเลข IP Address โดยใช้คำสั่ง IpConFig ส่งผ่านไปยังคำสั่ง Findstr ซึ่งไม่จำเป็นต้องคำนวณตำแหน่งของข้อมูลแต่อย่างใด
PS>ipconfig | findstr “IP Address”
IP Address………….:192.168.46.38

Interaction and Scripting
• An Interactive Environment
Windows PowerShell นั้นก็เหมือนกันกับ shell อื่นๆ นั้นคือรองรับการใช้งานในสภาวะแวดล้อมแบบ Interactive ได้อย่างสมบูรณ์แบบ เมื่อคุณทำการรันคำสั่ง สามารถส่งออกผลที่ได้ไปยังไฟล์หรือเครื่องพิมพ์ได้ หรือจะส่งไปเป็นอินพุทของคำสั่งอื่นก็ได้โดยใช้ไปป์ (|)

• Support for Scripting
สำหรับการใช้งานคำสั่งต่างๆ ที่ซ้ำๆ กันนั้น โดยเฉพาะคำสั่งที่มีความซับซ้อนด้วยแล้ว การบันทึกเป็นไฟล์สคริปต์สำหรับเก็บไว้ใช้ในครั้งต่อๆ ไปนั้น จะทำให้การทำงานมีความสะดวกแและความเร็วกว่าการต้องพิมพ์คำสั่งครั้งละคำสั่ง โดย Windows PowerShell นั้น นอกจากจะมีการทำงานแบบ interactive แล้ว ยังรองรับการใช้งานแบบสคริปต์ได้อีกด้วยโดยสริปท์ไฟล์ของ Windows PowerShell นั้น จะมีนามสกุลเป็น .ps1 สำหรับการรันไฟล์สคริปต์นั้น ทำได้ตามวิธีการดังนี้

C:\PShell\script1.ps1
หรือ
C:\PShell\script1

หมายเหตุ:
ในการใช้งานนั้น จะต้องระบุพาธของไฟล์สคริปต์ ถึงแม้ว่าจะทำการรันจากไดเร็กตอรีที่ไฟล์สคริปต์อยู่ ซึ่งสามารถทำการใช้ (.) แทนได้ในกรณีที่ไม่ต้องการพิมพ์ยาวๆ ตัวอย่างเช่น .\script1

การใช้งานในลักษณะนั้นจะมีประโยชน์อย่างมากทั้งการใช้งานของผู้ใช้ทั่วๆ ไป และการใช้งานในองค์กรใหญ่ๆ แต่เนื่องจาก Windows PowerShell นั้นมีความสามารถค่อนในการทำงานสูง ดังนั้น ทางไมโครซอฟต์จึงได้พัฒนากลไกรักษาความปลอดภัยเรียกว่า “Execution Policy” ซึ่งจะใช้กำหนดนโยบายควบคุมว่า เมื่อไหร่ที่จะอนุญาตมีการรันสคริปต์ หรือจะต้องมีการตรวจสอบ digital signature ก่อนจึงจะอนุญาตให้ทำการรันได้ และเพื่อหลีกเลี่ยงความเสี่ยงด้านความปลอดภัย Windows PowerShell จะไม่อนุญาตให้ทำการรันสคริปต์โดยการดับเบิลคลิก หากต้องการดูรายละเอียดเพิ่มเติมสามารถรันคำสั่งด้านล่าง หรือในหัวข้อ “Introduction to Code Signing” ที่ http://msdn.microsoft.com/

PS>get-help about_signing

เริ่มต้นใช้งาน Windows PowerShell
ก่อนอื่นต้องทำการติดตั้งโปรแกรม Windows Powershell ก่อน โดยมีความต้องการระบบดังนี้
1. Windows XP SP2 หรือ Windows Server 2003 SP1 หรือ Windows เวอร์ชันอื่นๆ ที่ใหม่กว่า
2. Microsoft .NET Framework 2.0

ขั้นตอนการติดตั้ง Windows Powershell
ในกรณีที่ยังไม่ได้ติดตั้ง Microsoft .NET Framework 2.0 ในเครื่อง ให้ทำการดาวน์โหลด Microsoft .NET Framework 2.0 จากเว็บไซต์ โฮมเพจ .NET Framework แล้วทำการติดตั้งให้เรียบร้อย จากนั้น ทำการติดตั้ง Windows Powershell ตามขั้นตอนดังนี้
1. ทำการดาวน์โหลดโปรแกรม Windows Powershell จากศูนย์ดาวน์โหลดของไมโครซอฟต์ที่เว็บไซต์ Windows PowerShell 1.0 for Windows Server 2003 และ Windows XP หรือที่เว็บไซต์ How to Download Windows PowerShell 1.0 โดยก่อนการดาวน์โหลดต้องทำการวาลิเดตวินโดวส์ก่อน
2. เมื่อดาวน์โหลดเสร็จแล้วให้บราวซ์ไปยังโฟลเดอร์ที่เก็บไฟล์ที่ดาวน์โหลดมา (เช่น C:\Downloads) จากนั้นให้ดับเบิลคลิกไฟล์ WindowsXP-KB926139-x86-ENU.exe เพื่อทำการติดตั้ง เมื่อติดตั้งเสร็จแล้วให้ทำการรีสตาร์ทเครื่องหนึ่งครั้ง

แหล่งข้อมูลอ้างอิง
เว็บไซต์ Microsft Windows PowerShell
Windows PowerShell 1.0 for Windows Server 2003 และ Windows XP
บล็อกของ Windows PowerShell

Keywords: PowerShell

© 2008 Thai Windows Administrator, All Rights Reserved.

0 Comment: