PowerShell เป็นหนึ่งในเครื่องมือ Windows ที่ดีที่สุดที่มีอยู่ แต่อาจดีกว่านี้อีก ต่อไปนี้เป็นคำแนะนำห้าข้อของฉันเพื่อประสบการณ์การใช้งาน PowerShell ที่ดียิ่งขึ้น
PowerShell เป็นภาษาสคริปต์ของ Microsoft ซึ่งขณะนี้เป็นการทำซ้ำครั้งที่สาม เป็นเครื่องมือที่ทรงพลังอย่างมากสำหรับใช้สำหรับงานอัตโนมัติ การดูแลระบบ การทำงานจากระยะไกลบนระบบ หรือการทำงานบนหลายระบบพร้อมกัน คุณสามารถใช้แบบโต้ตอบหรือในสคริปต์ได้ คุณยังสามารถสัมผัสหลายระบบในสคริปต์ได้โดยใช้กลไกการวนซ้ำที่มีประโยชน์ แล้วเราจะต้องการอะไรอีกจาก PowerShell ที่ยังไม่ได้ทำ? มากมาย.
ตกลง ก่อนอื่น PowerShell เป็นภาษาโมดูลาร์ ดังนั้นนั่นจึงเป็นประเด็นสำคัญประการหนึ่งที่สนับสนุน ทำไม เนื่องจากความเป็นโมดูลทำให้สามารถขยายได้ "โดยสมัครใจ" โดยความสมัครใจ ฉันหมายถึงว่าสามารถขยายได้โดยการเพิ่มโมดูล แทนที่จะบรรจุทุกอย่างไว้แล้วโดยไม่มีความเป็นไปได้ในการขยาย
PowerShell 3.0 เป็นส่วนขยายที่ยิ่งใหญ่เหนือ PowerShell 2.0 PowerShell 3.0 มาพร้อมกับ cmdlets นับพันสำหรับเกือบทุกวัตถุประสงค์ — เกือบ และนั่นคือจุดเริ่มต้นของโพสต์นี้ — โดยที่ PowerShell 3.0 หายไป
นี่คือรายการสิ่งที่ฉันคิดว่า PowerShell 3.0 ยังต้องการ:
*ห้ามใช้ยูทิลิตี้การเชื่อมต่อ — เครื่องมือสำหรับการเชื่อมต่อสไตล์ *nix ที่ขาดหายไปอย่างกล้าหาญ เช่น SSH, SCP, SFTP และอื่นๆ มีโมดูลของบุคคลที่สามบางส่วนสำหรับสิ่งนี้ แต่ก็ไม่ค่อยดีนักแม้ว่าฉันจะประสบความสำเร็จบ้างก็ตาม SSHเซสชัน
การสนับสนุนการสำรอง/กู้คืน — คงจะดีไม่น้อยถ้ามีเครื่องมือสำรองและกู้คืนข้อมูลเชิงลึกใน PowerShell และยูทิลิตี้บรรทัดคำสั่งเวอร์ชันปรับปรุง เช่น AT และ NTBACKUP
รองรับเอาท์พุตที่ดีกว่า — PowerShell มี -OutFile และ -ส่งออกCSV การเปลี่ยนเส้นทางเอาต์พุต แต่คุณไม่สามารถรับสิ่งที่คุณต้องการจากสิ่งเหล่านี้ได้เสมอไป เนื่องจากเอาต์พุตบางส่วนไม่สามารถเปลี่ยนเส้นทางได้ สำหรับเอาต์พุตบางรายการ คุณสามารถทำสิ่งต่อไปนี้:
ปล.> script.ps1 > ไฟล์.txt แล้วใช้ไฟล์ข้อความ อย่างไรก็ตาม มีบางครั้งที่การเปลี่ยนเส้นทาง "ไม่อยู่ในสคริปต์" ประเภทนั้นใช้ไม่ได้กับเอาต์พุตเช่นกัน คุณควรเห็นวิธีบ้าๆ บางอย่างที่ฉันต้องดึงเอาต์พุตจากสคริปต์ ฉันอยากเห็นการเปลี่ยนเส้นทางเอาต์พุตที่ดีขึ้น กล่าวอีกนัยหนึ่งอะไรก็ตามที่ฉันสามารถส่งออกไปยังหน้าจอ (STDOUT) ฉันอยากเห็นการสนับสนุนจริงๆ -OutFile หรือ -ส่งออกCSV หรือตัวเลือกการเปลี่ยนเส้นทางอื่นๆนำเข้าเมื่อใช้งานครั้งแรก — แทนที่จะนำเข้าโมดูลที่มีตราสินค้า Microsoft เช่น โมดูล Active Directory คุณควรจะสามารถดาวน์โหลดและติดตั้งโมดูลเหล่านี้ได้ในการใช้งานครั้งแรก เช่นเดียวกับที่คุณทำกับคุณสมบัติอื่นๆ บางอย่างของ Microsoft นี่จะเป็นคุณสมบัติที่มีประโยชน์มาก ตัวอย่างเช่น ฉันสามารถเรียกใช้ a รับ-ADUser บนระบบ และ PowerShell จะนำเข้าโมดูลและเรียกใช้ cmdlet โดยไม่มีการโต้ตอบจากฉัน
แยกและจัดรูปแบบข้อมูลได้ง่ายขึ้น — คุณสามารถดึงข้อมูลดีๆ มากมายได้โดยใช้ PowerShell แต่การได้รับข้อมูลที่คุณต้องการให้อยู่ในรูปแบบที่ต้องการ (อ่านได้) นั้นเป็นเรื่องยากมาก ตัวอย่างเช่น, ปล.>รับกระบวนการ แสดงรายการกระบวนการจากระบบของคุณในรูปแบบตารางดังแสดงในรูปที่ 1
![กระบวนการ_ps](/f/0868b4e6f3ca3d3a9a9658b9975f5d22.png)
ตอนนี้ลองแสดงรายการ Process ID และ ProcessName ด้วย ปล.> รับกระบวนการ | รหัส FT, ชื่อกระบวนการ
ดูผลลัพธ์ในรูปที่ 2
รูปที่ 2: กระบวนการกรองตาม ID และชื่อกระบวนการ (ภาพ: ภาพหน้าจอโดย Ken Hess/ZDNet)คุณเห็นปัญหาหรือไม่? ตอนนี้คุณอาจคิดว่านี่ไม่ใช่ปัญหา เนื่องจากคุณสามารถใช้รูปแบบตำแหน่งดั้งเดิมแปลก ๆ หรือนำมันไปยังไฟล์ข้อความก็ได้ ผิด. เมื่อคุณกำหนดทิศทางเอาต์พุตไปยังไฟล์ข้อความ คุณจะได้รับไฟล์ข้อความโดยที่คอลัมน์ถูกผลักออกไปทางขวา เช่นเดียวกับที่อยู่บนหน้าจอ
ลืมเกี่ยวกับ รูปแบบกว้าง; มันไม่ทำงาน รูปแบบรายการ น่าเกลียดกว่าด้วยซ้ำ รูปแบบตาราง. และถ้าคุณพูดว่า "ลอง รูปแบบ-กำหนดเอง"; มันแย่กว่าอันอื่นแม้ว่าฉันคิดว่าคุณสามารถสร้างมุมมองที่กำหนดเอง (ไฟล์ XML) และใช้สำหรับรูปแบบที่ดีกว่าได้ แต่จริงๆ แล้ว นั่นเป็นปัญหามากสำหรับรายการ ID และชื่อกระบวนการง่ายๆ
หากนี่เป็นสภาพแวดล้อม *nix ฉันจะทำสิ่งนี้เพื่อให้ได้รูปแบบที่ฉันต้องการ:
$ PS -ef | เพ่งพิศ -F" " '{พิมพ์ $2,$8}'
ให้ผลผลิต,
พีไอดี ซีเอ็มดี
1 /sbin/init
2 [kthreadd]
3 [การโยกย้าย/0]
4 [ksoftirqd/0]
5 [สุนัขเฝ้าบ้าน/0]
6 [การโยกย้าย/1]
7 [ksoftirqd/1]
และอันที่จริง สิ่งที่ฉันจะทำบนระบบ Windows ของฉันตั้งแต่ฉันมี ซิกวิน เครื่องมือที่ติดตั้งและอยู่ในเส้นทางของฉันในระบบอัตโนมัติคือ:
ปล.> รับกระบวนการ |gawk -F" " '{พิมพ์ $7,$8}'
ให้ผลผลิต,
รหัสกระบวนการชื่อ
--
3780 AmIcoSinglun64
1788 AppleMobileDeviceService
4900 ApplePhotoStreams
5396 APSดีมอน
1764 อาร์มวีซี
3844 atieclxx
948 atiesrxx
1444 AvastSvc
5188 AvastUI
ฉันไม่ควรต้องใช้มาตรการดังกล่าวเพื่อให้ได้สิ่งที่ต้องการในแง่ของการจัดรูปแบบ หากคุณรู้วิธีที่ดีกว่าฉันก็อยากจะเห็นมัน จนถึงตอนนี้ฉันยังไม่พบมัน แม้ว่าฉันจะมองหาวิธีแก้ไขแล้วก็ตาม
โอเค นั่นเป็นหมายเลขห้าที่ยาวมาก แต่บางครั้งก็ช่วยอธิบายประเด็นในการขับรถกลับบ้านได้อย่างเต็มที่
[อัปเดต: ผู้อ่านคนหนึ่งของฉันได้ให้การแก้ไขปัญหานี้ด้วยสวิตช์ -ปรับขนาดอัตโนมัติ หากวิธีนี้ใช้ได้กับการจัดรูปแบบทั้งหมด ฉันเดาว่าเราสามารถทำเครื่องหมายหมายเลขห้าออกจากรายการได้ ขอบคุณ.]
นี่คือการปรับปรุง PowerShell ห้าประการของฉันที่ฉันอยากเห็น คุณมีการปรับปรุงใด ๆ ที่คุณต้องการรวมไว้ในการอัปเดต PowerShell หรือไม่? คุยกลับแล้วแจ้งด้วย..