วันศุกร์ที่ 20 พฤศจิกายน พ.ศ. 2558
Write clean Powershell code [Part 2]
4. หลีกเลี่ยงการใช้ backticks ( ` )
บ่อยครั้งที่เราต้องเขียนคำสั่งที่ต้องใช้ parameter เยอะ ๆ ทำให้บรรทัดล้นแล้วจะใช้ backticks แก้ปัญหาในการขึ้นบรรทัดใหม่ เรามาดูกันว่าเราจะทำอย่างไร ถ้าไม่ใช้ backticks
5.หลีกเลี่ยงการใช้ pipelines ( | )
สำหรับข้อมูลที่มีขนาดใหญ่ การใช้ pipelines นั้น อาจจะได้ผลลัพธ์ตามความต้องการ แต่เมื่อเกิดปัญหาแล้วความยากในการ Debug ก็มีเพิ่มมากขึ้นด้วย อีกทั้งยังมีผลในเรื่อง Performance ที่ใช้เวลาในการรันสคริปนานกว่าเดิม และนี่เป็นตัวอย่างง่าย ๆ ของการหลีกเลี่ยงการใช้ pipelines
*อยากให้เราลองจินตนาการดูว่า ถ้าสคริปมีหลายบรรทัด และเกือบทุกบรรทัดมีการใช้ pipelines จะทำให้ความยากในการอ่านสคริป หรือ Debug นั้นยุ่งยากและซับซ้อนมากแค่ไหน
6. หลีกเลี่ยงการประกาศตัวแปรหลาย ๆ ตัวที่มี Value เดียวกันในแต่ละบรรทัด
*เขียนบทความนี้แล้วก็อย่าลืมกลับไปแก้สคริปเก่า ๆ เพื่อฝึกฝนกันด้วยนะครับ แล้วเจอกันบทความหน้า
วันอังคารที่ 17 พฤศจิกายน พ.ศ. 2558
Write clean Powershell code [Part 1]
1. อย่าใช้ alias
เราทราบกันอยู่แล้วว่าคำสั่งแต่ละคำสั่งใน Powershell นั้นจะมี alias อยู่ ซึ่งข้อดีของ alias นั้นก็คือความสะดวกและความรวดเร็วในการรันคำสั่งแต่ละบรรทัด แต่นั่นเป็นสิ่งที่ไม่ควรทำอย่างยิ่ง ถ้าหากเราต้องการที่จะเขียนเพื่อให้คนทั่วไปสามารถอ่านได้ เพราะฉะนั้นเราควรที่จะเสียเวลาสักนิดเพื่อให้สคริปหรือโค้ดที่เราเขียนขึ้นนั้นดูสะอาด ดูดี มีชาติตระกูล
เรามาดูตัวอย่างกันดีกว่าครับ แล้วลองสังเกตดูว่าโค้ดแบบไหนที่น่าอ่านกว่ากัน
2. ระบุ parameter ให้ชัดเจน
3. เว้นวรรคและย่อหน้า
เราจะสังเกตได้ว่าแค่การเพิ่มเว้นวรรคและย่อหน้าให้กับโค้ดที่เราเขียน ทำให้โค้ดของเราดูน่าอ่าน และสบายตาขึ้น
...แล้วเจอกันใหม่บทความหน้ากับ Write clean Powershell code [Part 2] ครับ
วันอาทิตย์ที่ 8 พฤศจิกายน พ.ศ. 2558
Zip ไฟล์กับ Powershell
อีกหนึ่งทางเลือกสำหรับการบีบอัดไฟล์โดยที่ไม่จำเป็นต้องใช้ WinRar, WinZip หรือ 7-Zip ก็คือการใช้ Powershell ซึ่งสามารถบีบอัดไฟล์ได้เหมือนกัน แต่ก่อนที่เราจะมา Zip ไฟล์นั้นจะต้องมีไฟล์หรือโฟลเดอร์ที่ต้องการจะ Zip ก่อน เรามาสร้างไฟล์กันเลยครับ
จากภาพด้านบน เราทำการสร้างโฟลเดอร์ชื่อ ZipFile ที่ Desktop และสร้างไฟล์ชื่อ 1, 2, ..., 10 เพื่อเตรียมความพร้อมก่อนจะ Zip ไฟล์ครับ และนี่คือหน้าตาไฟล์ที่เราได้เตรียมไว้
ต่อมาจะทำการ Zip ไฟล์บนโฟลเดอร์ ZipFile วางไว้ที่ Desktop
และนี่คือผลลัพธ์ที่ได้ครับ
ทีนี้ เรามาลองแตกไฟล์กลับไปที่โฟลเดอร์เดิมกันครับ
สังเกตว่าเราได้ทำการลบไฟล์ทั้งหมดบนโฟลเดอร์ ZipFile และแตกไฟล์กลับไปที่โฟลเดอร์เดิมครับ
วันเสาร์ที่ 7 พฤศจิกายน พ.ศ. 2558
MessageBox กับ Powershell
ก่อนที่จะเริ่มใช้คำสั่งเพื่อแสดง MessageBox นั้น เราต้องโหลดคลาสของ .NET Framework มาก่อน นั่นก็คือใช้คำสั่งตามรูป
จากภาพ เราจะสังเกตเห็นว่าคำสั่งทั้ง 3 คำสั่งที่ได้รันไปทั้งหมดนั้นเป็นคำสั่งสำหรับโหลด Assembly ที่ชื่อ System.Windows.Forms โดยคำสั่งที่ 1 จะแสดงผลลัพธ์ออกมาด้วยว่าเราโหลด Assembly มาจากที่ใด แต่คำสั่งที่ 2, 3 ให้ผลบนหน้า Interface ที่เหมือนกัน แต่ต่างกันนิดหน่อยที่ความเร็ว โดยคำสั่งที่ 2 จะใช้เวลาในการรันคำสั่งนานกว่า เพราะมี Pipeline กั้นอยู่ ซึ่งโดยส่วนตัวแล้ว ถ้าเราต้องการนำไปใช้ต่อ ควรเลือกใช้คำสั่งที่ 3 เพื่อโหลด Assembly ครับ
ภาพด้านบน แสดงให้เห็นถึงตัวอย่างการใช้งาน MessageBox สำหรับ Parameters ที่ใช้ในวงเล็บนั้นมีอยู่ 4 ชนิดด้วยกันนั่นก็คือ Body, Title, Button และ Icon ตามลำดับ ซึ่งแน่นอนว่า Button = 0 จะแสดงผลให้เห็นแค่ OK Button และ Icon = 0 จะแสดงผลให้ไม่แสดง Icon และจะเกิดอะไรขึ้นหากเราคลิกที่ OK button มาดูกันครับ
หลังจากคลิก OK button แล้วจะเห็นว่าผลลัพธ์ที่ได้คือ OK ตามภาพด้านบน ในส่วนนี้เราสามารถใช้ [void] หรือ | Out-Null เพื่อไม่ให้แสดงผลลัพธ์ได้เหมือนที่ได้อธิบายไว้ด้านบนสุดของบทความนี้ครับ
เรามาดูกันต่อเลยครับว่า Button และ Icon ทั้งหมดสำหรับแต่ละคำสั่งมีอะไรกันบ้าง
จากตัวอย่างทั้งหมดจะเห็นว่ามีชนิดของ Button อยู่ทั้งหมด 6 แบบ และชนิดของ Icon ทั้งหมด 5 แบบ สรุปได้ดังนี้
Button
1.OK - 0
2.OK and Cancel - 1
3.Abort, Retry and Ignore - 2
4.Yes, No and Cancel - 3
5.Yes and No - 4
6.Retry and Cancel - 5
Icon
1.None - 0
2.Error - 16
3.Question - 32
4.Warning - 48
5.Information - 64
จะเห็นว่าแค่เราโหลด Assembly หนึ่งตัวและรันคำสั่งอีกหนึ่งคำสั่ง ก็จะได้ MessageBox ที่สามารถเอาไปทำอะไรได้หลายอย่างมากมาย และสุดท้าย...หวังว่าคงจะเป็นประโยชน์ไม่มากก็น้อยนะครับ
วันพุธที่ 4 พฤศจิกายน พ.ศ. 2558
คลาสที่น่าสนใจใน Get-WmiObject [Part 3]
บทความนี้จะพูดถึงคลาส Win32_LogicalDisk ซึ่งเป็นคลาสที่จะให้ข้อมูลเกี่ยวกับ Drive ทั้งหมดที่อยู่บนคอมพิวเตอร์ที่รันคำสั่งนี้ ตามภาพเลยครับ
มาดูกันต่อว่าแต่ละ Drive นั้นมีพื้นที่ทั้งหมดและพื้นที่ว่างอย่างละเท่าไร
สุดท้ายแต่ไม่ท้ายสุด สรุปข้อมูลที่น่าสนใจในคลาสนี้ครับ
สุดท้ายแล้ว ขอฝากข้อมูลสำคัญที่เกี่ยวข้องกับคลาส Win32_LogicalDisk เอาไว้ตรวจสอบว่า Drive ใดเป็น Drive ที่มี File System อยู่
วันจันทร์ที่ 26 ตุลาคม พ.ศ. 2558
คลาสที่น่าสนใจใน Get-WmiObject [Part 2]
ต่อกันที่คลาส Win32_PhysicalMemory ซึ่งเป็นคลาสที่จะบอกข้อมูลทุกอย่างของ Memory หรือหน่วยความจำนั่นเอง
ภาพบนเป็นหน้าตาปกติหลังใช้คำสั่งพื้นฐาน ซึ่งจะมีข้อมูลมากมายเกี่ยวกับหน่วยความจำ ในบทความนี้ผมจะคัดข้อมูลที่ผมคิดว่าสำคัญสำหรับหน่วยความจำในภาพถัดไปครับ
จะเห็นว่าใน Laptop ที่ผมใช้อยู่นี้มีหน่วยความจำอยู่ทั้งหมด 2 ตัวด้วยกัน โดยแต่ละตัวอยู่ที่ Bank 0 และ Bank 1 และมีหน่วยความจำ 4 GB และ 8 GB ตามลำดับ อีกทั้งยังสามารถบอก Manufacturer, PartNumber และ SerialNumber ได้อีกด้วย
วันเสาร์ที่ 24 ตุลาคม พ.ศ. 2558
คลาสที่น่าสนใจใน Get-WmiObject [Part 1]
มาเริ่มต้นกันที่คลาสแรกที่จะนำเสนอในบทความนี้ นั่นก็คือคลาส Win32_OperatingSystem ชื่อก็บอกอยู่แล้วว่าในนี้จะมีข้อมูลอะไร เราไปดูกันแบบลึก ๆ กันเลยครับ
ภาพบนเป็นข้อมูลของคลาสนี้แบบคร่าว ๆ ไม่ใช่ทั้งหมด จะเห็นได้ว่าไม่มีอะไรที่น่าสนใจเลย นอกจาก Version 10.0.10240 นันก็คือเวอร์ชันของ Windows ที่กำลังใช้งานอยู่นั่นเอง (ภาพนี้ขอซ่อน S/N ไว้ 2 ชุดนะครับ)
ถัดมาเป็นคำสั่งแสดงข้อมูลทุกอย่างที่อยู่ในคลาสนี้ ซึ่งในนี้มีข้อมูลพื้นฐานที่น่าสนใจโดยจะสรุปให้ในภาพถัดไปครับ
ข้อมูลที่น่าสนใจหลัก ๆ ก็คงหนีไม่พ้น Caption กับ OS Architecture และขอแถมเรื่อง Memory ด้วยละกันครับ
คลาสนี้ดูเหมือนข้อมูลที่ได้มาจะไม่ค่อยมีความสำคัญเท่าไรนัก แต่ผมเป็นคนนึงที่สามารถใช้ประโยชน์จากข้อมูลเล็ก ๆ เหล่านี้ได้...แล้วเจอกันบทความหน้าครับ
สมัครสมาชิก:
บทความ (Atom)





























