ผู้ใช้ของคุณลงชื่อเข้าใช้ที่บ้าน เชื่อมต่อ VPN และรอไดรฟ์ที่เคยปรากฏขึ้นเองในออฟฟิศ อุโมงค์ขึ้นมา โดเมนตอบกลับ แต่ไม่มีอะไรถูกแมปเลย ไม่มีอะไรเสีย: สคริปต์ล็อกออนทำงานตอนล็อกออน และอุโมงค์ที่เปิดยี่สิบนาทีหลังเริ่มเซสชันไม่ใช่การล็อกออน การอ่านสองสิ่งนี้เป็นเหตุการณ์เดียวกันทำให้คนออกตามหาความผิดพลาดของ VPN ที่ไม่มีอยู่จริง

สี่การตัดสินใจเปลี่ยนความประหลาดใจให้เป็นเวิร์กโฟลว์ที่ทำงานถูกต้อง และอย่างแรกก็คือการรู้ว่าสคริปต์เกาะอยู่กับเหตุการณ์ใด

สคริปต์เกาะอยู่กับเหตุการณ์ในวงจรชีวิตที่คุณไม่สามารถเล่นซ้ำได้

นโยบายฝั่งคอมพิวเตอร์ถูกใช้ตอนเครื่องบูต และนโยบายฝั่งผู้ใช้ตอนมีคนลงชื่อเข้าใช้ ขณะที่การรีเฟรชเบื้องหลังไล่ผ่านการตั้งค่าเดิมโดยไม่รีสตาร์ตอะไรเลย การรีเฟรชนั้นประมวลผลส่วนขยายสคริปต์ แต่ไม่ได้รันสคริปต์แต่ละตัวใหม่ ซึ่งจะทำงานเฉพาะตอนเริ่มระบบ ปิดระบบ ล็อกออน หรือล็อกออฟเท่านั้น ดังนั้น gpupdate /force อาจรายงานความสำเร็จในขณะที่การแมปยังหายอยู่ และการรีเฟรชที่สะอาดก็ไม่ใช่หลักฐานว่าสคริปต์ทำอะไรลงไป

เอกสารอ้างอิงของ Microsoft เรื่องการประมวลผลนโยบาย ลากเส้นนั้นพอดีระหว่างการประมวลผลส่วนขยายกับการทำงานของสิ่งที่อยู่ข้างใน และเป็นหน้าที่ควรอ้างถึงเมื่อมีคนยืนยันว่าการรีเฟรชควรเล่นสคริปต์ซ้ำ

ไม่ใช่ทุกสคริปต์ที่จะล้มเหลวเมื่อออฟไลน์ สคริปต์ที่อ่านเฉพาะเนื้อหาท้องถิ่นหรือแคชอาจสำเร็จบางส่วน ขณะที่สคริปต์ที่แตะพื้นที่แชร์จะล้มเหลวอย่างเงียบ ๆ และไม่ทิ้งร่องรอยชัดเจน ตรวจสอบเส้นทางจริงของสคริปต์และสิ่งที่มันเข้าถึงก่อนโทษเครือข่าย การตรวจแบบเดียวกันนี้ควรใช้กับทุกข้ออ้างว่าสคริปต์ไม่ทำงานตอนล็อกออน เพราะงานที่ตั้งเวลาไว้หรือการกระทำของไคลเอนต์อาจทำงานนั้นในที่ที่ไม่มีใครมอง

ผูกงานไว้กับการเชื่อมต่อ ไม่ใช่การล็อกออน

มีสามงานที่ซ่อนอยู่หลังคำว่าสคริปต์ล็อกออน: การแมปไดรฟ์หลังผู้ใช้เชื่อมต่อ การใช้การกำหนดค่าเครื่องก่อนมีใครลงชื่อเข้าใช้ และการดึงนโยบายที่อัปเดตแล้ว ทั้งสามมีกำหนดเวลาต่างกัน และมีเพียงงานที่สองเท่านั้นที่ต้องการการเชื่อมต่อก่อนล็อกออนจริง ๆ เขียนข้อกำหนดเป็นประโยคที่มีกำหนดเวลา เช่น การแมปนี้ต้องมีอยู่ภายในหนึ่งนาทีหลังอุโมงค์ขึ้น

สำหรับงานที่ต้องเกิดขึ้นหลังการเชื่อมต่อ ให้ใช้ทาสก์ที่ทริกเกอร์โดยการเชื่อมต่อหรือการเชื่อมต่อแอ็กชันที่ไคลเอนต์รองรับ ตรวจสอบว่าไคลเอนต์ส่งเหตุการณ์ใดจริง ๆ เพราะเหตุการณ์ที่ไคลเอนต์ VPN ดั้งเดิมของ Windows ยกขึ้นมาจะไม่ถูกยกขึ้นโดยไคลเอนต์ของบุคคลที่สาม สำหรับการกำหนดค่าเครื่องที่ต้องมาก่อนการลงชื่อเข้าใช้ คำตอบที่รองรับคืออุโมงค์อุปกรณ์หรือการออกแบบก่อนลงชื่อเข้าใช้อื่น ๆ ไม่ใช่ทาสก์ที่ทำงานเมื่อเดสก์ท็อปปรากฏ ทำงานนั้นในตัวตนและเซสชันที่ต้องการมัน เพราะการแมปที่สร้างเป็น SYSTEM จะไปตกในเซสชันที่ผู้ใช้ไม่เคยเห็น

ทดสอบความพร้อมก่อนลงมือ และล้มเหลวให้เสียงดัง

เหตุการณ์เชื่อมต่ออาจมาถึงก่อนที่ DNS หรือเซิร์ฟเวอร์ไฟล์จะใช้งานได้ ดังนั้นทาสก์ควรทดสอบสิ่งที่ต้องการแทนที่จะสมมติ แก้ชื่อเฉพาะ เจาะจงการเชื่อมต่อนั้น และลองซ้ำด้วยขีดจำกัดและความหน่วง: Resolve-DnsName files.corp.example ในลูปสั้น ๆ แยก ยังไม่ ออกจาก ไม่มีวัน ลองครั้งสุดท้ายแล้วรายงานความล้มเหลวที่ชัดเจน โดยมีชื่อและข้อผิดพลาดอยู่ข้างใน

ลูปไม่สิ้นสุดที่ไม่มีบันทึกแยกไม่ออกจากทาสก์ที่ไม่เคยเริ่ม และมันซ่อนความแตกต่างระหว่างข้อมูลรับรองที่เก่ากับกฎไฟร์วอลล์

ตรวจสอบสี่อย่าง แล้วทำให้ทำซ้ำได้

ระหว่างการนำร่อง บันทึกสี่การสังเกตแทนหนึ่งอย่าง: เหตุการณ์เชื่อมต่อเกิดขึ้น ทาสก์เริ่มทำงาน ทรัพยากรตอบกลับ และการเปลี่ยนแปลงที่ขอเกิดขึ้นจริง หากบันทึกหยุดที่ ทาสก์เริ่มทำงาน ความล้มเหลวจริงจะยังมองไม่เห็นไม่ว่าคุณจะรอนานเท่าใด จากนั้นรัน gpresult /scope user /v เพื่อดูว่าเซสชันคิดว่านโยบายของตนเป็นอะไร และเทียบกับการตั้งค่าที่คาดไว้ รายงานที่ระบุว่า GPO ถูกนำไปใช้แล้วก็ยังไม่บอกอะไรเกี่ยวกับการแมป

ทำให้งานปลอดภัยต่อการทำซ้ำก่อนขยายขอบเขต เพราะไคลเอนต์จะเชื่อมต่อใหม่และทาสก์จะทำงานอีกครั้ง ตรวจสอบว่ามีการแมปหรือการกำหนดค่าอยู่แล้วหรือไม่ก่อนสร้าง และบันทึกสิ่งที่พบ งานที่ซ้ำหลังการเชื่อมต่อใหม่ชั่วคราวทุกครั้งคือทางที่ทาสก์ที่มีประโยชน์กลายเป็นเหตุการณ์

เมื่อทริกเกอร์อัตโนมัติไม่เหมาะสม การกระทำของผู้ใช้ที่ได้รับอนุมัติซึ่งรันสคริปต์ที่ลงนามเดียวกันก็เป็นการออกแบบที่ชอบธรรม มันทำให้เวลาชัดเจนแทนการแสร้งว่าเหตุการณ์ล็อกออนได้เกิดขึ้น

บทความที่เกี่ยวข้อง