PowerShell เป็นเชลล์บรรทัดคำสั่งและภาษาสคริปต์ที่มีประสิทธิภาพซึ่งส่วนใหญ่ใช้สำหรับควบคุมระบบคอมพิวเตอร์และทำงานธุรการโดยอัตโนมัติ การใช้คำสั่งเป็นหนึ่งในพื้นฐานที่สำคัญที่สุดของ PowerShell โดยเฉพาะอย่างยิ่ง “ โดยใช้ คำสั่ง ” มีบทบาทสำคัญในการจัดการทรัพยากรและทำให้มั่นใจได้ถึงการเรียกใช้โค้ดที่มีประสิทธิภาพ
บทความนี้จะสำรวจแง่มุมต่างๆ ของคำสั่ง 'การใช้' ใน PowerShell รวมถึงไวยากรณ์ วัตถุประสงค์ และการใช้งานจริง
วัตถุประสงค์ของคำสั่ง 'ใช้'
คำสั่ง 'กำลังใช้' ให้คุณระบุได้ว่าจะใช้เนมสเปซใดในเซสชัน ด้วยการเพิ่มเนมสเปซ คุณสามารถนำเข้าคลาสจากโมดูลสคริปต์และแอสเซมบลี และทำให้การใช้คลาสและสมาชิก .NET ง่ายขึ้น
ต้องมีคำสั่ง 'ใช้'
- คำสั่ง 'กำลังใช้' ต้องปรากฏก่อนสคริปต์หรือคำสั่งโมดูลอื่นๆ ไม่สามารถนำหน้าด้วยคำสั่งที่ไม่ได้ใส่ความคิดเห็น รวมถึงพารามิเตอร์
- ตัวแปรใดๆ จะต้องไม่มีอยู่ในคำสั่ง 'กำลังใช้'
- คำสั่ง 'using' ไม่ควรสับสนกับ 'using:' ตัวแก้ไขขอบเขตสำหรับตัวแปร พวกเขาทั้งสองแตกต่างกันในจุดประสงค์และความหมาย
ไวยากรณ์ของคำสั่ง 'ใช้'
ไวยากรณ์สำหรับคำสั่ง 'ใช้' คือ:
ใช้เนมสเปซ < .NET-เนมสเปซ >
มาดูภาพรวมตัวอย่างต่อไปนี้:
ใช้เนมสเปซ System.IO
$ ไบต์ = [ ไฟล์ ] ::ReadAllBytes ( 'D:\c ชาร์ป\Linuxhint1.txt' )
[ ข้อมูลไฟล์ ] ::ใหม่ ( 'D:\c ชาร์ป\Linuxhint1.txt' )
ในโค้ดด้านบน เราได้กำหนดเนมสเปซเป็น “System.IO” ก่อน บรรทัดที่สองของโปรแกรม [File]::ReadAllBytes('D:c sharpLinuxhint1.txt') อ่านทุกไบต์จากไฟล์ที่ให้มาและวางไว้ในตัวแปร $Bytes ในบรรทัดที่สาม [FileInfo]::new('D:c sharpLinuxhint1.txt') สร้างอินสแตนซ์ใหม่ของคลาส FileInfo และส่งคืนวัตถุ FileInfo
คำชี้แจง 'การใช้' สำหรับโมดูล
เรายังสามารถใช้คำสั่ง 'กำลังใช้' เพื่อโหลดคลาสของโมดูล
ไวยากรณ์
ใช้โมดูล < ชื่อโมดูล >
ในไวยากรณ์นี้ สามารถใช้ “
คุณสามารถใช้พาธแบบเต็มหรือแบบสัมพัทธ์เมื่อ “ชื่อโมดูล>” เป็นพาธ เมื่อมีคำสั่ง 'กำลังใช้' ในสคริปต์ เส้นทางสัมพัทธ์จะได้รับการแก้ไขในสคริปต์นั้น
PowerShell ค้นหาโมดูลที่ให้มาใน PSModulePath เมื่อ “<ชื่อโมดูล>” เป็นชื่อหรือข้อมูลจำเพาะของโมดูล คีย์ต่อไปนี้ประกอบเป็นแฮชเทเบิลที่เป็นข้อมูลจำเพาะของโมดูล:
ชื่อโมดูล - ที่จำเป็น. ตั้งชื่อโมดูลที่ต้องการ
GUID ทางเลือก – ระบุ GUID ของโมดูล
นอกจากนี้ คุณต้องระบุคีย์ใดคีย์หนึ่งจากสามรายการด้านล่าง
รุ่นของโมดูล – มีการระบุเวอร์ชันขั้นต่ำที่อนุญาตของโมดูลผ่านทางคุณสมบัติ “ModuleVersion”
รุ่นสูงสุด – กำหนดเวอร์ชันสูงสุดที่อนุญาตของโมดูล
รุ่นที่ต้องการ – กำหนดเวอร์ชันที่จำเป็นและแม่นยำของโมดูลโดยใช้ “RequiredVersion” คีย์เวอร์ชันอื่นใช้กับคีย์นี้ไม่ได้
โมดูลรูท (ModuleToProcess) ของโมดูลไบนารีหรือโมดูลสคริปต์ถูกนำเข้าโดยการประกาศโมดูล 'โดยใช้' คลาสที่ระบุในโมดูลที่ซ้อนกันหรือสคริปต์ที่มีแหล่งที่มาแบบดอทในโมดูลจะไม่ถูกนำเข้าอย่างน่าเชื่อถือ คลาสใดๆ ที่คุณต้องการให้ผู้ใช้นอกโมดูลสามารถระบุได้ในโมดูลรูท
นี่คือตัวอย่าง:
โดยใช้โมดูล PSReadline
“การใช้” คำแถลงประกอบ
คำสั่ง 'กำลังใช้' ยังสามารถใช้เพื่อโหลดประเภทล่วงหน้าจากแอสเซมบลี .NET
ไวยากรณ์
โดยใช้การประกอบ < .NET-แอสเซมบลีพาธ >
ในไวยากรณ์นี้ เมื่อแอสเซมบลีถูกโหลด ชนิด .NET จากแอสเซมบลีนั้นจะถูกโหลดไว้ล่วงหน้าในสคริปต์ก่อนที่จะแยกวิเคราะห์ ด้วยเหตุนี้ จึงเป็นไปได้ที่จะพัฒนาคลาส PowerShell ใหม่ที่ใช้ประเภทแอสเซมบลีที่โหลดไว้ล่วงหน้า
ดูตัวอย่างการใช้คำสั่ง 'using' กับ 'assembly':
โดยใช้แอสเซมบลี System.Windows.Forms
ในคำสั่งนี้ เราได้โหลดแอสเซมบลี “ System.Windows.Forms” ใน PowerShell โดยใช้คำสั่ง 'กำลังใช้'
คำสั่ง 'ใช้' สำหรับ Hashtable Keys
“ ตารางแฮช ” เป็นโครงสร้างข้อมูลที่ปรับเปลี่ยนได้ที่ใช้ใน PowerShell เพื่อวัตถุประสงค์ที่หลากหลาย รวมถึงการจัดเก็บข้อมูลการกำหนดค่า การให้อาร์กิวเมนต์ไปยัง cmdlet และการจัดเก็บข้อมูลในสคริปต์
แฮชการเข้ารหัสสำหรับสตริง “ ลินุกซ์คำแนะนำ! ” ได้มาจากสคริปต์ต่อไปนี้:
ใช้เนมสเปซ System.Textใช้เนมสเปซ System.IO [ สตริง ] $string = 'ลินุกซ์ฮินท์!'
[ สตริง ] อัลกอริทึม $ = 'SHA1'
[ ไบต์ [ ] ] $stringbytes = [ Unicodeการเข้ารหัส ] ::Unicode.GetBytes ( $string )
[ ลำธาร ] $memorystream = [ สตรีมหน่วยความจำ ] ::ใหม่ ( $stringbytes )
$แฮชจากสตรีม = Get-FileHash - สตรีมอินพุต $memorystream `
-อัลกอริทึม อัลกอริทึม $
$แฮชจากสตรีม .Hash.ToString ( )
โค้ด PowerShell ข้างต้นเริ่มต้นด้วยการนำเข้าเนมสเปซที่จำเป็นสำหรับการทำงานของไฟล์และการเข้ารหัส สตริงอินพุตและอัลกอริทึมการแฮช (ในกรณีนี้คือ “ SHA1 ”) ถูกกำหนดไว้แล้ว สตริงอินพุตจะถูกเข้ารหัสโดยใช้ “ ยูนิโค้ด ” เพื่อสร้างอาร์เรย์ของไบต์
จากนั้นเนื้อหาของอาร์เรย์ไบต์จะถูกใช้เพื่อสร้าง ' สตรีมหน่วยความจำ '. ค่าแฮชจากสตรีมหน่วยความจำคำนวณโดยใช้อัลกอริทึม 'SHA1' ที่ให้มาโดย ' รับ FileHash cmdlet สคริปต์จบลงด้วยการพิมพ์ค่าแฮชที่ได้รับเป็นสตริงไปยังเอาต์พุต
เอาต์พุต
บทสรุป
“ โดยใช้ คำสั่ง ” ใน PowerShell เป็นเครื่องมือที่มีประสิทธิภาพสำหรับการระบุเนมสเปซ โมดูล หรือแอสเซมบลี ไวยากรณ์และวัตถุประสงค์ให้แนวทางที่เป็นมาตรฐานและปลอดภัยสำหรับการจัดการทรัพยากร อำนวยความสะดวกในการกำจัดอย่างเหมาะสม และลดการทำซ้ำรหัส