ในฐานะผู้ดูแลระบบ Unix และ Windows ที่ทำสคริปต์ Unix จำนวนมากและแทบจะไม่มีสคริปต์ Windows ฉันบอกได้เลยว่ามันเป็นส่วนหนึ่งเนื่องจากความอึดอัดอย่างเหลือเชื่อของยูทิลิตี้การเขียนสคริปต์และ API ของ Windows และความยากลำบาก (อาจไม่ชัดเจน คำที่ดีขึ้น) ของการทำงานสิ่งต่าง ๆ จากระยะไกลบนเครื่อง Windows
ฉันหมายถึง WTF นี่คืออะไร?
Set objWMIService = GetObject("winmgmts:" _
& "{impersonationLevel=impersonate}!\\" & strComputer & "\root\cimv2")
ส่วนหนึ่งของปัญหาผมคิดว่าก็คือว่ามีเป็น API ที่ ภายใต้ระบบปฏิบัติการ Unix ผู้ดูแลระบบส่วนใหญ่ใช้สคริปต์ระบบอัตโนมัติของยูทิลิตีบรรทัดคำสั่งที่ใช้อยู่แล้ว ใน Windows คุณต้องใช้ API นี้ที่ไม่คุ้นเคยในทุกระดับ ตัวอย่างเช่น "การแอบอ้าง" หมายถึงอะไร นี่เป็นแนวคิดเล็กน้อยสำหรับผู้ดูแลระบบ Unix ซึ่งมีแนวโน้มที่จะใช้ sudo และ su และคุ้นเคยกับสคริปต์ setuid แล้ว แต่ผู้ดูแลระบบ Windows ไม่น่าจะคุ้นเคยกับสิ่งเหล่านี้ พวกเขาอาจรู้เกี่ยวกับ "runas" (หรือตัวเลือก GUI ที่เทียบเท่า) แต่พวกเขามีแนวโน้มที่จะเข้าสู่ระบบในฐานะผู้ดูแลระบบเมื่อพวกเขาต้องการทำสิ่งที่ผู้ดูแลระบบ -y
และเอกสารเกี่ยวกับการเขียนสคริปต์ใน Windows นั้นน่าสังเวช สำหรับสิ่งหนึ่งมันเป็น "ภาษาตีความ" มากกว่าสคริปต์อีกครั้งเพราะพวกเขาใช้ API (ไม่คุ้นเคย) และไม่ใช่คำสั่งที่พวกเขาคุ้นเคยอยู่แล้ว แต่ฉันไม่คิดว่าฉันเคยพบสิ่งใดที่มีประโยชน์ในเอกสารของ Microsoft ที่ไม่ได้นำไปสู่การหาคนที่ทำบางสิ่งบางอย่างใกล้เคียงกับสิ่งที่ฉันต้องการซึ่งชี้ให้ฉันในทิศทางที่ถูกต้อง ไม่มีที่ไหนดูเหมือนจะมีรายการของสิ่งที่คุณสามารถทำได้ มันเหมือนกับที่คุณต้องคุ้นเคยกับ Windows internals เพื่อที่จะทำสิ่งพื้นฐานที่สุด
ไม่ใช่ว่าสคริปต์ Unix มักจะดูเหมือนเป็นสัญญาณรบกวนสาย แต่ผู้ดูแลระบบ Unix สามารถเริ่มต้นด้วยสคริปต์ที่ไม่ทำอะไรเลยนอกจากรันคำสั่งง่ายๆที่เขารู้อยู่แล้ว ("ฉันต้องเรียกใช้คำสั่งทั้งสามนี้อย่างต่อเนื่องหากฉันใส่ไว้ในไฟล์ด้วยกันฉันสามารถทำได้ในคำสั่งเดียว!") จากนั้นเขาก็สามารถพัฒนาได้ในภายหลังเมื่อเขาคุ้นเคยกับสถานการณ์ ในทางกลับกันไม่มีวิธีใดที่ผู้ดูแลระบบสคริปต์จะ "ลงชื่อเข้าใช้เซิร์ฟเวอร์ในฐานะผู้ดูแลระบบคลิกที่เริ่ม→การตั้งค่า→แผงควบคุมดับเบิลคลิกที่ระบบคลิกที่แท็บชื่อคอมพิวเตอร์ ฯลฯ " ใช่สิ่งที่เขาพยายามที่จะได้รับอาจถูกนำเสนอผ่าน API ที่ไหนสักแห่ง แต่ไม่มีทางที่เขาจะพบว่าเพิ่มขึ้น
ดังนั้นเพื่อตอบคำถาม "เราจะให้ผู้ดูแลระบบ Windows ใช้งานสคริปต์มากขึ้นได้อย่างไร" คำตอบก็คือทำให้สคริปต์มนุษย์ต่างดาวน้อยลง ฉันจะรู้ได้อย่างไร
สุจริตคำตอบอยู่ในมือของ Microsoft ไม่มีเหตุผลที่พวกเขาไม่สามารถใช้ยูทิลิตีบรรทัดคำสั่งทำทุกอย่างที่ทำผ่าน GUI ได้ (มีจริง ๆ แล้วมีอยู่มากมายที่นั่นตอนนี้ แต่พวกเขาไม่ได้โฆษณาพวกเขามีเอกสารไม่ดีและพวกเขาก็ไม่สอดคล้องกัน) นอกจากนี้ยังมีเหตุผลที่ไม่มีคำใบ้ใน GUI เกี่ยวกับอะไร ปุ่มนั้นใช้งานได้จริง มีเคล็ดลับเครื่องมือที่แสดงวัตถุ API ที่กำลังแก้ไข หรือเอกสารในหน้าต่างวิธีใช้
ไม่มีปัญหาในการป้องกันผู้ใช้จาก internals แต่ Windows ดูเหมือนจะออกไปเพื่อซ่อน internals เหล่านั้นอย่างแข็งขันแม้จากผู้ที่ต้องการค้นหาพวกเขา
ls -1 *old* | awk '{print "mv "$1" "$1}' | sed s/old/new/2 | sh