การใช้คำสั่งใน PowerShell

Kar Chi Kha Sang Ni Powershell



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 เป็นเครื่องมือที่มีประสิทธิภาพสำหรับการระบุเนมสเปซ โมดูล หรือแอสเซมบลี ไวยากรณ์และวัตถุประสงค์ให้แนวทางที่เป็นมาตรฐานและปลอดภัยสำหรับการจัดการทรัพยากร อำนวยความสะดวกในการกำจัดอย่างเหมาะสม และลดการทำซ้ำรหัส