- PowerShell ช่วยให้สามารถทำงานอัตโนมัติได้อย่างมีประสิทธิภาพมาก แม้แต่กับบัญชีผู้ใช้ที่ไม่มีสิทธิ์ผู้ดูแลระบบก็ตาม โดยมีเงื่อนไขว่าสคริปต์จะต้องได้รับการออกแบบโดยคำนึงถึงบริบทด้านความปลอดภัยที่มีอยู่
- โปรแกรมกำหนดเวลาการทำงานของ Windows (Windows Task Scheduler) เป็นกุญแจสำคัญในการเรียกใช้สคริปต์ PowerShell โดยอัตโนมัติ โดยสามารถควบคุมกำหนดการ เงื่อนไข และจำนวนครั้งในการเรียกใช้งานได้
- การกำหนดค่าที่เหมาะสมของนโยบายการดำเนินการ สิทธิ์ขั้นต่ำ และการลงนามสคริปต์ จะช่วยลดความเสี่ยงและทำให้การทำงานอัตโนมัติปลอดภัยและบำรุงรักษาได้ง่าย
- ด้วยการผสานรวม PowerShell งานที่กำหนดเวลาไว้ และเครื่องมือควบคุมระยะไกล คุณสามารถจัดการได้ทุกอย่าง ตั้งแต่งานในเครื่องพื้นฐานไปจนถึงการจัดการ Microsoft 365 และ IIS ขั้นสูง
หากคุณสงสัยว่า ทำงานอัตโนมัติใน PowerShell โดยไม่ต้องเป็นผู้ดูแลระบบคุณไม่ได้อยู่คนเดียว นี่เป็นสถานการณ์ที่พบได้บ่อยมาก: คุณจำเป็นต้องเรียกใช้สคริปต์ กำหนดเวลาการล้างข้อมูล สร้างรายงาน หรือจัดการ Microsoft 365 แต่คุณไม่มีสิทธิ์ระดับสูงบนเครื่องนั้น หรือเพียงแค่ไม่ต้องการใช้สิทธิ์เหล่านั้นด้วยเหตุผลด้านความปลอดภัย
ข่าวดีก็คือ หากคุณคุ้นเคยกับเครื่องมือต่างๆ ที่ Windows มีให้ (PowerShell, Task Scheduler และตัวเลือกบรรทัดคำสั่งบางอย่าง) คุณก็สามารถตั้งค่าระบบได้ ระบบอัตโนมัติที่มีประสิทธิภาพค่อนข้างสูงโดยไม่ต้องแตะบัญชีผู้ดูแลระบบอย่างไรก็ตาม จำเป็นอย่างยิ่งที่จะต้องเข้าใจบริบทที่สคริปต์ถูกเรียกใช้ ข้อจำกัดที่คุณมีหากไม่มีสิทธิ์ระดับสูง และวิธีการกำหนดค่าทุกอย่างเพื่อป้องกันความล้มเหลวตั้งแต่โอกาสแรก
เรียกใช้ PowerShell โดยไม่ต้องใช้สิทธิ์ผู้ดูแลระบบ
ก่อนที่เราจะเจาะลึกไปถึงระบบอัตโนมัติขั้นสูง สิ่งสำคัญคือต้องเข้าใจวิธีการทำงานก่อน เปิด PowerShell โดยไม่ต้องใช้สิทธิ์ผู้ดูแลระบบ ถึงแม้ว่า Windows จะพยายามผลักดันให้คุณ "เรียกใช้ในฐานะผู้ดูแลระบบ" อยู่เสมอ แต่ในสภาพแวดล้อมขององค์กรหรือคอมพิวเตอร์ที่ใช้ร่วมกันหลายแห่ง ตัวเลือกนี้ก็ไม่ใช่ทางเลือกที่เหมาะสม
มีเทคนิคที่มีประโยชน์มากอย่างหนึ่งซึ่งอิงตามคำสั่งนี้ runas วิธีนี้ช่วยให้คุณเริ่มต้นเซสชัน PowerShell ด้วยระดับความน่าเชื่อถือที่จำกัด เหมาะสำหรับการทำงานโดยไม่ต้องเพิ่มสิทธิ์การเข้าถึง แม้ว่าบัญชีผู้ใช้ของคุณจะมีสิทธิ์เหล่านั้นก็ตาม ในการทำเช่นนี้ เพียงทำตามขั้นตอนพื้นฐานเหล่านี้:
-
เปิดตัว หน้าต่างคำสั่ง (cmd) ในโหมดปกติ โดยไม่ต้องใช้ "เรียกใช้ในฐานะผู้ดูแลระบบ"
-
ในหน้าต่าง cmd ให้พิมพ์คำสั่งนี้แล้วกด Enter:
runas /trustlevel:0x20000 powershell
คำสั่งนี้จะเปิดเซสชัน PowerShell ใหม่ภายใต้ ระดับความไว้วางใจที่จำกัดมากขึ้นวิธีนี้ช่วยให้คุณหลีกเลี่ยงปัญหาบางอย่างเมื่อมีบางอย่างทำงานไม่ถูกต้องในคอนโซลที่มีสิทธิ์ผู้ดูแลระบบ ตัวอย่างคลาสสิกคือการติดตั้งเครื่องมือสำหรับผู้ใช้ เช่น เครื่องเทศหากคุณพยายามดาวน์โหลดหรือกำหนดค่าจากเซสชัน PowerShell ที่มีสิทธิ์ผู้ดูแลระบบ กระบวนการอาจล้มเหลว ในขณะที่หากดำเนินการจากเซสชันที่มีสิทธิ์ปกติ จะทำงานได้โดยไม่มีปัญหา
แนวทางนี้สอดคล้องกับปรัชญาของ... สิทธิพิเศษน้อยที่สุดคุณควรเพิ่มสิทธิ์การเข้าถึงเฉพาะเมื่อจำเป็นอย่างยิ่งเท่านั้น และปล่อยให้ระบบอัตโนมัติส่วนใหญ่ทำงานในบริบทเดียวกับที่ผู้ใช้ทั่วไปหรือผู้ใช้ที่ทำงานประจำวันใช้งาน
PowerShell คือรากฐานของระบบอัตโนมัติสมัยใหม่
PowerShell เป็นมากกว่าแค่คอนโซลสีฟ้า: มันคือ... เฟรมเวิร์กอัตโนมัติและภาษาสคริปต์ ออกแบบมาเพื่อจัดการระบบ Windows และในเวอร์ชันล่าสุด (PowerShell Core) ยังรองรับ Linux และ macOS ด้วย มันทำงานร่วมกับ cmdlet (คำสั่งเฉพาะทาง), อ็อบเจ็กต์ และไปป์ ทำให้คุณสามารถสร้างงานที่ซับซ้อนจากชิ้นส่วนเล็กๆ ที่นำกลับมาใช้ซ้ำได้
ความแตกต่างเมื่อเทียบกับพรอมต์คำสั่งแบบดั้งเดิมนั้นมหาศาล: ด้วย PowerShell คุณสามารถทำสิ่งต่อไปนี้ได้: การเชื่อมโยงคำสั่ง การจัดการวัตถุ การสอบถามบันทึก บริการ IIS SQL Microsoft 365 และใช้งานได้กับผลิตภัณฑ์ของ Microsoft หรือผลิตภัณฑ์ของบริษัทอื่น ๆ แทบทุกชนิดที่มีโมดูลที่เข้ากันได้ ทำให้เป็นเครื่องมือที่เหมาะสำหรับการทำงานอัตโนมัติทุกอย่าง ตั้งแต่การล้างไฟล์ชั่วคราวอย่างง่าย ไปจนถึงการปรับใช้เว็บแอปพลิเคชันอย่างสมบูรณ์
สิ่งสำคัญคือต้องแยกแยะระหว่าง PowerShell (สภาพแวดล้อม) และ สคริปต์ PowerShellสภาพแวดล้อมคือคอนโซลหรือเทอร์มินัลที่คุณพิมพ์คำสั่งแบบโต้ตอบ ในขณะที่สคริปต์คือไฟล์ .ps1 ที่ประกอบด้วยลำดับคำสั่ง เงื่อนไข ฟังก์ชัน และตัวแปรที่สร้างขึ้นเพื่อทำงานซ้ำๆ โดยไม่ต้องพิมพ์ทุกอย่างใหม่ทุกครั้ง
สคริปต์ PowerShell เหล่านี้เป็นรากฐานที่ใช้ในการสร้างสคริปต์อื่นๆ อีกมากมาย กลยุทธ์การทำงานอัตโนมัติทางด้านไอทีเช่น การจัดการผู้ใช้จำนวนมาก การติดตั้งอัปเดต การตรวจสอบระบบ การสร้างรายงานอัตโนมัติ งานทำความสะอาดเป็นระยะ ฯลฯ และที่สำคัญที่สุดคือ สถานการณ์เหล่านี้หลายอย่างสามารถทำงานได้โดยไม่ต้องเข้าถึงบัญชีผู้ดูแลระบบในเครื่องโดยตรง ตราบใดที่สคริปต์นั้นเข้าถึงเฉพาะทรัพยากรที่ผู้ใช้ของคุณมีสิทธิ์เข้าถึงอยู่แล้ว
กำหนดค่าสภาพแวดล้อม PowerShell และนโยบายการดำเนินการ
เพื่อให้ระบบอัตโนมัติทำงานได้อย่างราบรื่น จำเป็นต้องควบคุมพฤติกรรมของระบบอัตโนมัตินั้น นโยบายการดำเนินการของ PowerShellนโยบายนี้กำหนดว่าสคริปต์ใดบ้างที่สามารถเรียกใช้งานได้และจากที่ใด ซึ่งโดยปกติแล้วจะเป็นอุปสรรคแรกที่ทุกคนต้องพบเจอเมื่อเริ่มต้นใช้งานระบบอัตโนมัติ
นโยบายการนำไปใช้ที่พบได้บ่อยที่สุด ได้แก่:
- จำกัดนี่คือการตั้งค่าเริ่มต้นในหลายๆ การติดตั้ง อนุญาตเฉพาะคำสั่งแบบโต้ตอบเท่านั้น สคริปต์ .ps1 ถูกบล็อก นี่เป็นตัวเลือกที่ปลอดภัยที่สุด แต่ในทางปฏิบัติแล้ว... มันป้องกันการทำงานอัตโนมัติโดยใช้สคริปต์ทุกประเภท.
- ลงนามทั้งหมดเฉพาะสคริปต์ที่ลงนามดิจิทัลโดยผู้เผยแพร่ที่เชื่อถือได้เท่านั้นที่จะสามารถเรียกใช้งานได้ ซึ่งเหมาะสำหรับสภาพแวดล้อมที่คุณต้องการ การควบคุมโค้ดอย่างเข้มงวด เป็นสิ่งที่สืบทอดกันมาในทีม
- RemoteSignedสคริปต์ที่ดาวน์โหลดจากอินเทอร์เน็ตหรือแหล่งข้อมูลระยะไกลจะต้องได้รับการลงนาม แต่สคริปต์ในเครื่องที่ไม่ได้ลงนามสามารถเรียกใช้งานได้ นโยบายนี้ค่อนข้างสมดุลและพบได้ทั่วไปในสภาพแวดล้อมขององค์กร
- ไม่ จำกัด: อนุญาตให้เรียกใช้สคริปต์ใดๆ ก็ได้ ไม่ว่าจะมีการลงนามหรือไม่ก็ตาม ไม่แนะนำ ไม่เหมาะสมสำหรับการใช้งานในกระบวนการผลิต เพราะจะทำให้ระบบมีความเสี่ยงสูง
คุณสามารถตรวจสอบกรมธรรม์ปัจจุบันของคุณได้ที่:
Get-ExecutionPolicy
และแก้ไข (หากบัญชีของคุณมีสิทธิ์ในการทำเช่นนั้น) โดยใช้ ตั้งค่า ExecutionPolicyตัวอย่างเช่น:
Set-ExecutionPolicy RemoteSigned
หากคุณไม่ใช่ผู้ดูแลระบบ คุณอาจไม่สามารถเปลี่ยนแปลงนโยบายในระดับเครื่องได้ แต่คุณสามารถปรับเปลี่ยนได้ในระดับผู้ใช้หรือระดับกระบวนการ ขึ้นอยู่กับการกำหนดค่าขององค์กรของคุณ ไม่ว่าในกรณีใด เมื่อวางแผนระบบอัตโนมัติโดยไม่มีสิทธิ์ระดับสูง ให้ถือว่านโยบายการดำเนินการเป็นไปตามที่กำหนด นี่เป็นเพียงข้อจำกัดด้านความปลอดภัยอีกอย่างหนึ่งที่คุณต้องยอมรับ และออกแบบสคริปต์ของคุณให้สอดคล้องกับสิ่งนั้น
สร้างและแก้ไขสคริปต์ PowerShell ได้อย่างง่ายดาย
แม้ว่าคุณจะสามารถเขียนสคริปต์ในโปรแกรมแก้ไขข้อความใดก็ได้ แต่การใช้เครื่องมือที่มีนั้นสะดวกกว่ามาก การเน้นไวยากรณ์และเครื่องมือช่วยในการพัฒนาโดยเฉพาะอย่างยิ่งเมื่อสคริปต์มีขนาดใหญ่ขึ้นและเริ่มมีฟังก์ชัน โมดูล และตรรกะที่ซับซ้อนมากขึ้น
ตัวเลือกที่พบบ่อยที่สุดสำหรับการใช้งานสคริปต์ PowerShell ได้แก่:
- รหัส Visual Studio (รหัส VS)ปัจจุบัน โปรแกรมนี้เป็นตัวเลือกที่ Microsoft แนะนำ มันฟรี น้ำหนักเบา และเมื่อติดตั้งส่วนขยาย PowerShell อย่างเป็นทางการแล้ว จะมีฟังก์ชันเติมข้อความอัตโนมัติ (IntelliSense) การดีบักแบบทีละขั้นตอน ตัวอย่างโค้ด การทำงานร่วมกับ Git และเทอร์มินัลในตัว
- พาวเวอร์เชลล์ ISEนี่คือสภาพแวดล้อมแบบบูรณาการคลาสสิกที่มาพร้อมกับ Windows PowerShell 5.1 และเวอร์ชันก่อนหน้า แม้ว่าจะถือว่าเป็นระบบเก่าเมื่อเทียบกับ VS Code แต่ก็ยังคงใช้กันอย่างแพร่หลายในหลายๆ สภาพแวดล้อม
- โปรแกรม Notepad หรือโปรแกรมแก้ไขข้อความแบบง่ายอื่นๆเหมาะสำหรับสคริปต์ขนาดเล็กหรือเขียนเร็ว แต่คุณจะสูญเสียคุณสมบัติที่มีประโยชน์หลายอย่างที่ช่วยให้การทำงานง่ายขึ้นเมื่อโค้ดมีความซับซ้อนมากขึ้น
ในทุกกรณี ขั้นตอนพื้นฐานจะคล้ายกัน คือ คุณสร้างไฟล์ใหม่ เขียนโค้ด PowerShell แล้วบันทึกไฟล์โดยใช้ส่วนขยาย .powerShell . Ps1 จากนั้นคุณก็เรียกใช้สคริปต์นั้นจากคอนโซล ตัวอย่างเช่น ถ้าคุณบันทึกสคริปต์ไว้ใน C:\Scripts\MiScript.ps1คุณสามารถเรียกใช้งานได้จาก PowerShell โดยทำตามขั้นตอนดังนี้:
& "C:\Scripts\MiScript.ps1"
เพื่อให้ทุกอย่างสอดคล้องกับการทำงานอัตโนมัติ คุณจำเป็นต้องพิจารณาถึงสิ่งต่อไปนี้ สคริปต์นั้นจะมีชื่อว่าอะไรในเชิงการเขียนโปรแกรม? โดยไม่ต้องใช้สิทธิ์ผู้ดูแลระบบ ซึ่งเราจะได้เห็นกันในภายหลังกับโปรแกรมกำหนดเวลาทำงาน (Task Scheduler)
ทำงานอัตโนมัติด้วย Windows Task Scheduler และ PowerShell
โปรแกรมกำหนดเวลาการทำงานของ Windows (Windows Task Scheduler) คือเครื่องมือที่ช่วยให้คุณสามารถ... เรียกใช้สคริปต์ PowerShell โดยอัตโนมัติ ตามกำหนดการ เหตุการณ์ หรือเงื่อนไขของระบบ แม้ว่าคู่มือหลายฉบับจะใช้สำหรับงานที่ต้องใช้สิทธิ์ผู้ดูแลระบบ แต่ก็ใช้ได้ผลดีเช่นกันสำหรับการทำงานอัตโนมัติในบริบทของผู้ใช้ทั่วไป โดยมีเงื่อนไขว่างานนั้นต้องได้รับการกำหนดค่าด้วยบัญชีที่เหมาะสม
ไลบรารี Task Scheduler จะจัดระเบียบงานทั้งหมดไว้ในโฟลเดอร์ และสำหรับแต่ละโฟลเดอร์จะมีแท็บสำคัญหลายแท็บ:
- ทั่วไป: ชื่อ คำอธิบาย บัญชีที่ใช้ในการเรียกใช้งาน และตัวเลือกด้านความปลอดภัย (เช่น จะเรียกใช้งานแม้ว่าผู้ใช้จะไม่ได้ล็อกอินหรือไม่)
- ตัวกระตุ้น: กำหนดเวลาที่จะเริ่มต้นงาน: เมื่อเข้าสู่ระบบ เมื่อเปิดคอมพิวเตอร์ ทุกวัน ในเวลาที่กำหนด เมื่อเกิดเหตุการณ์ ฯลฯ
- การดำเนินการ: กำหนดว่างานนั้นจะทำอะไรเมื่อถูกเรียกใช้งาน โดยปกติแล้วจะเป็นการเริ่มต้นโปรแกรม ซึ่งในกรณีนี้จะเป็น powershell.exe พร้อมด้วยเหตุผลที่เหมาะสม
- เงื่อนไข: ช่วยให้คุณปรับแต่งเวลาที่โปรแกรมทำงานได้ เช่น ทำงานเฉพาะเมื่อคอมพิวเตอร์เสียบปลั๊กอยู่ เมื่อคอมพิวเตอร์ไม่ได้ใช้งานเป็นเวลานาน เมื่อเครือข่ายมีคุณสมบัติตรงตามที่กำหนด เป็นต้น
- การตั้งค่า: การตั้งค่าเพิ่มเติม เช่น การอนุญาตให้เรียกใช้งานตามต้องการ การลองใหม่หากล้มเหลว การหยุดหากใช้เวลานานเกินไป พฤติกรรมหากกำลังทำงานอยู่ เป็นต้น
- ประวัติศาสตร์: บันทึกการทำงาน ข้อผิดพลาด และคำเตือน มีประโยชน์มากสำหรับการแก้ไขข้อผิดพลาดเมื่อบางอย่างทำงานไม่เป็นไปตามที่ควรจะเป็น
ในการเรียกใช้สคริปต์ PowerShell จาก Task Scheduler รูปแบบทั่วไปในแท็บ Actions คือ:
- โปรแกรม / script:
powershell.exe - เพิ่มอาร์กิวเมนต์อะไรทำนองนั้น
-File C:\Scripts\MiScript.ps1เพิ่มพารามิเตอร์เพิ่มเติมหากจำเป็น เช่น-ExecutionPolicy Bypasso-NoExitตามความต้องการของคุณ - เริ่มใน: (ไม่บังคับ) ระบุไดเร็กทอรีที่เก็บสคริปต์ไว้ หากคุณใช้เส้นทางสัมพัทธ์
โดยการใช้บัญชีผู้ใช้มาตรฐานเป็นบัญชีสำหรับเรียกใช้งานสคริปต์ (ในแท็บทั่วไป) สคริปต์จะทำงานด้วยบัญชีดังกล่าว สิทธิ์เดียวกันกับที่คุณมี เมื่อคุณล็อกอินเข้าสู่ระบบ ระบบจะสอดคล้องกับหลักการของการทำงานอัตโนมัติโดยไม่ต้องเป็นผู้ดูแลระบบ อย่างไรก็ตาม หากสคริปต์จำเป็นต้องเข้าถึงส่วนต่างๆ ของระบบที่สงวนไว้สำหรับผู้ดูแลระบบ สคริปต์จะล้มเหลว ดังนั้นจึงเป็นสิ่งสำคัญอย่างยิ่งที่จะต้องออกแบบแต่ละงานโดยคำนึงถึงบริบทด้านความปลอดภัยที่มีอยู่
ข้อดีของการใช้ Task Scheduler และ PowerShell ในการทำงานอัตโนมัติ
การผสานรวม Task Scheduler กับสคริปต์ PowerShell มีข้อดีที่น่าสนใจมากมาย แม้ว่าจะไม่มีสิทธิ์ระดับสูงก็ตาม ข้อดีที่สำคัญบางประการ ได้แก่:
- ประหยัดเวลา: งานที่ทำซ้ำๆ เช่น การทำความสะอาด การสร้างรายงาน หรือการส่งออกข้อมูล จะทำงานโดยอัตโนมัติในขณะที่คุณกำลังทำอย่างอื่น หรือแม้กระทั่งในขณะที่ปิดเซสชันอยู่ (หากตั้งค่าให้ทำงานเช่นนั้น)
- ความมั่นคงสคริปต์จะทำงานเหมือนเดิมทุกครั้ง ในลำดับเดิม โดยไม่มีข้อผิดพลาดใดๆ ซึ่งช่วยลดโอกาสเกิดความผิดพลาดจากมนุษย์
- ความเชื่อถือได้คุณสามารถกำหนดตารางการทำงานประจำ (รายวัน รายสัปดาห์ รายเดือน) เพื่อรักษาระบบหรือข้อมูลของคุณให้อยู่ในสภาพดี แม้ว่าจะไม่ต้องมีการแทรกแซงด้วยตนเองก็ตาม
- ประสิทธิภาพการใช้ทรัพยากรการกำหนดเวลาการทำงานของสคริปต์ในช่วงเวลาที่ไม่ใช่ช่วงเวลาเร่งด่วนทำได้ง่าย ช่วยลดผลกระทบต่อประสิทธิภาพการทำงานในช่วงเวลาเร่งด่วนได้
- มีความยืดหยุ่น: ตัวกระตุ้นตามเวลา ตามการเข้าสู่ระบบ การเริ่มต้นระบบ หรือตามเหตุการณ์ ช่วยให้สามารถดำเนินการได้ ระบบอัตโนมัติที่ปรับให้เข้ากับสภาพแวดล้อมของคุณได้อย่างลงตัว.
- การจัดการข้อผิดพลาดคุณสามารถกำหนดค่าการลองใหม่ บันทึกผลลัพธ์ของ PowerShell ส่งอีเมล หรือเขียนเหตุการณ์เฉพาะเมื่อเกิดข้อผิดพลาดได้
- ความปลอดภัยการเรียกใช้สคริปต์ด้วยบัญชีผู้ใช้ที่มีสิทธิ์จำกัดจะช่วยลดความเสี่ยงที่ข้อผิดพลาดของสคริปต์จะทำให้ระบบเสียหายอย่างร้ายแรง ควรใช้คำสั่งที่มีสิทธิ์การเข้าถึงกว้างกว่าเฉพาะเมื่อจำเป็นอย่างยิ่งเท่านั้น
สำหรับระบบอัตโนมัติขั้นสูงในเครือข่ายขนาดใหญ่ PowerShell นำเสนอความเป็นไปได้ที่มากกว่าเดิม: ด้วยการกำหนดงานที่ตั้งเวลาไว้เป็นอย่างดี คุณสามารถ การเชื่อมโยงเวิร์กโฟลว์ที่ซับซ้อนเข้าด้วยกันจัดการงานต่างๆ บนเครื่องคอมพิวเตอร์หลายเครื่อง และตอบสนองต่อเหตุการณ์เฉพาะโดยอัตโนมัติ
ตัวอย่างการใช้งานระบบอัตโนมัติด้วย PowerShell
เมื่อคุณเข้าใจกรอบการทำงานอย่างชัดเจนแล้ว สิ่งที่สร้างความแตกต่างอย่างแท้จริงก็คือ... สคริปต์เฉพาะที่คุณเรียกใช้นี่คือตัวอย่างสถานการณ์ทั่วไปบางส่วนที่ PowerShell โดดเด่นทั้งในทีมย่อยและในสภาพแวดล้อมขนาดใหญ่
การจัดการ Microsoft 365 ด้วย PowerShell
ในสภาพแวดล้อมของ Microsoft 365 นั้น PowerShell ได้กลายเป็นเครื่องมือหลักสำหรับการใช้งานต่างๆ จัดการผู้ใช้ ใบอนุญาต และบริการจำนวนมากพร้อมกันด้วยโมดูลที่เหมาะสม คุณสามารถเชื่อมต่อกับผู้เช่าของคุณและทำให้งานประจำวันส่วนใหญ่เป็นไปโดยอัตโนมัติ เช่น ย้ายโปรไฟล์ผู้ใช้และ Officeเริ่มต้นด้วยการใช้โมดูล MSOnline แบบคลาสสิก (แม้ว่าปัจจุบันโมดูล Microsoft Graph และโมดูล Exchange Online ที่ทันสมัยกว่าจะนิยมใช้มากกว่า) ขั้นตอนการทำงานพื้นฐานจะเป็นดังนี้:
- ติดตั้งโมดูลที่จำเป็น (ตัวอย่างเช่น จากเซสชัน PowerShell ที่มีสิทธิ์ในการติดตั้งโมดูล):
Install-Module -Name PowerShellGet -Force -AllowClobber
Install-Module -Name MSOnline - เชื่อมต่อกับบริการโดยใช้ข้อมูลประจำตัวผู้ดูแลระบบ Microsoft 365 ของคุณ:
Connect-MsolService
จากนั้น คุณสามารถตั้งค่าระบบอัตโนมัติสำหรับงานต่างๆ เช่น:
- การลงทะเบียนผู้ใช้จำนวนมาก จากไฟล์ CSV โดยกำหนดรหัสผ่านและคุณสมบัติโปรไฟล์
- การเปลี่ยนแปลงสมาชิกกลุ่ม โดยอิงตามกฎ (ตัวอย่างเช่น การย้ายผู้ใช้ไปยังกลุ่มความปลอดภัยเฉพาะ)
- การปิดใช้งานบัญชีที่ไม่ได้ใช้งานโดยอัตโนมัติ โดยพิจารณาจากเกณฑ์ต่างๆ เช่น วันที่เปลี่ยนรหัสผ่านครั้งล่าสุด หรือวันที่เข้าสู่ระบบครั้งล่าสุด
- การสร้างรายงานเป็นระยะ เกี่ยวกับกิจกรรมของผู้ใช้ ใบอนุญาตที่ใช้งานอยู่ หรือสถานะความปลอดภัย
สคริปต์เหล่านี้สามารถเรียกใช้งานได้ด้วยตนเองจากคอนโซลที่มีสิทธิ์ที่เหมาะสมใน Microsoft 365 หรือผสานรวมเข้ากับงานที่กำหนดเวลาไว้บนเซิร์ฟเวอร์การจัดการ แม้ว่าการจัดการผู้เช่าจะต้องการบัญชีที่มีสิทธิ์สูงในระบบคลาวด์ แต่คอมพิวเตอร์ที่คุณใช้เรียกใช้สคริปต์... คุณไม่จำเป็นต้องมีบัญชีผู้ดูแลระบบในเครื่องเสมอไปโดยมีเงื่อนไขว่าคุณต้องสามารถติดตั้งโมดูลและเชื่อมต่อกับบริการระยะไกลได้
ระบบอัตโนมัติสำหรับการบำรุงรักษาในพื้นที่
บนเครื่องคอมพิวเตอร์ Windows ทั่วไป แม้จะมีบัญชีผู้ใช้มาตรฐาน คุณก็สามารถสร้างสคริปต์เพื่อ:
- สำรองข้อมูลโฟลเดอร์ผู้ใช้ ตลอด สำเนาและการซิงโครไนซ์ ไปยังไดรฟ์อื่นหรือไปยังตำแหน่งเครือข่ายที่คุณสามารถเข้าถึงได้
- ลบไฟล์ชั่วคราวและโปรแกรมที่ไม่จำเป็น ในเส้นทางโปรไฟล์ แคชแอปพลิเคชัน หรือบันทึกต่างๆ ที่ไม่จำเป็นต้องใช้สิทธิ์ผู้ดูแลระบบ
- บันทึกการใช้งานดิสก์ ซีพียู หรือหน่วยความจำ จากมุมมองของบัญชีของคุณ การสร้างรายงานในไดเร็กทอรีที่คุณสามารถเขียนได้
- ตรวจสอบกระบวนการภายใน หรือบริการของผู้ใช้ที่ไม่จำเป็นต้องใช้สิทธิ์ระดับสูงในการตรวจสอบสถานะ
สคริปต์เหล่านี้ เมื่อใช้ร่วมกับ Task Scheduler ที่ทำงานภายใต้บัญชีผู้ใช้ของคุณ จะช่วยให้คุณสามารถตั้งค่าได้ การบำรุงรักษาขั้นพื้นฐานและการตรวจสอบตามปกติ มีประโยชน์มากแม้ว่าฝ่ายไอทีจะไม่ได้ให้สิทธิ์การเข้าถึงระดับผู้ดูแลระบบก็ตาม
ระบบอัตโนมัติระยะไกลด้วย Splashtop และระบบอื่นๆ
ในสภาพแวดล้อมการทำงานที่ทำจากระยะไกล เครื่องมือต่างๆ เช่น Splashtop โซลูชันประเภทนี้เพิ่มมิติที่น่าสนใจอีกประการหนึ่ง โดยให้การเข้าถึงอุปกรณ์จากระยะไกลอย่างปลอดภัย และในบางกรณีก็มีคุณสมบัติเฉพาะสำหรับการใช้งานดังต่อไปนี้:
- โยน หน้าต่างคำสั่งหรือคอนโซล PowerShell ระยะไกล โดยไม่ต้องเริ่มเซสชันเดสก์ท็อปแบบเต็มรูปแบบ
- เรียกใช้สคริปต์ PowerShell บนหลายอุปกรณ์พร้อมกัน พร้อมด้วยระบบควบคุมการตรวจสอบและการกำหนดเวลาแบบรวมศูนย์
- ใช้มาตรการนโยบาย ติดตั้งแพทช์ หรือสคริปต์แก้ไขปัญหาให้กับกลุ่มคอมพิวเตอร์โดยอัตโนมัติ
ตัวอย่างเช่น Splashtop AEM ได้รับการออกแบบมาโดยเฉพาะเพื่อ จัดการและทำให้งานต่างๆ เป็นไปโดยอัตโนมัติบนอุปกรณ์จำนวนมากระบบนี้ผสานรวมการเรียกใช้สคริปต์ PowerShell เข้ากับแพลตฟอร์มได้อย่างราบรื่น ขึ้นอยู่กับการกำหนดค่าของคุณ คุณสามารถใช้ประโยชน์จากความสามารถเหล่านี้ได้แม้ว่าบัญชีผู้ใช้ในเครื่องของคุณจะไม่ใช่ผู้ดูแลระบบ โดยมอบอำนาจการควบคุมบางส่วนให้กับระบบการจัดการระยะไกล
สคริปต์ PowerShell สำหรับ IIS, ฐานข้อมูล และ Web Deploy
บนเซิร์ฟเวอร์ที่โฮสต์เว็บแอปพลิเคชันบน IIS นั้น Web Deploy เวอร์ชัน 2.1 มีชุดสคริปต์ PowerShell ที่ช่วยลดความซับซ้อนของกระบวนการได้อย่างมาก เตรียมเว็บไซต์สำหรับการเผยแพร่โดยใช้ Web Deployแม้ว่าโดยปกติแล้วจะต้องมีสิทธิ์ผู้ดูแลระบบเซิร์ฟเวอร์สำหรับการตั้งค่าเริ่มต้น แต่ก็คุ้มค่าที่จะทำความคุ้นเคยกับสิทธิ์เหล่านั้น เนื่องจากเป็นส่วนหนึ่งของโครงสร้างพื้นฐานการปรับใช้แบบอัตโนมัติหลายอย่าง
สคริปต์หลักมีดังนี้:
- SetupSiteForPublish.ps1: สร้างหรือกำหนดค่าไซต์ IIS ผู้ใช้การปรับใช้ที่ไม่ใช่ผู้ดูแลระบบ และไฟล์โปรไฟล์การเผยแพร่ (.publishsettings)
- CreateSqlDatabase.ps1: สร้างฐานข้อมูล SQL Server, บัญชีผู้ใช้ และผู้ใช้ที่มีสิทธิ์ db_owner พร้อมทั้งเพิ่มสตริงการเชื่อมต่อลงในไฟล์เผยแพร่
- CreateMySqlDatabase.ps1: ทำเช่นเดียวกันแต่สำหรับ MySQL โดยการสร้างฐานข้อมูลและผู้ใช้ที่มีสิทธิ์ในการเข้าถึงฐานข้อมูลนั้น
- AddDelegationRules.ps1กำหนดค่ากฎการมอบหมายสิทธิ์ใน IIS เพื่อให้ Web Deploy สามารถทำงานได้อย่างถูกต้องในสภาพแวดล้อมที่มีการมอบหมายสิทธิ์
สคริปต์ ตั้งค่าไซต์สำหรับการเผยแพร่ตัวอย่างเช่น โปรแกรมนี้สามารถติดตั้งไซต์ชื่อ WDeploySite บนพอร์ตที่ว่าง (ระหว่าง 8080 ถึง 8200) ได้ทันที สร้างพูลแอปพลิเคชันที่เกี่ยวข้อง และสร้างผู้ใช้ทั่วไปที่ไม่ใช่ผู้ดูแลระบบ (WDeploySiteuser) ที่มีสิทธิ์ในการเข้าถึงไดเร็กทอรีทางกายภาพของไซต์และสิทธิ์ที่จำเป็นใน IIS ข้อมูลทั้งหมดจะถูกบันทึกไว้ในไฟล์ .publishsettings ซึ่งสามารถนำไปใช้กับเครื่องมือต่างๆ เช่น WebMatrix หรือ Visual Studio ได้
สคริปต์ฐานข้อมูลจะเพิ่มลงในโปรไฟล์นี้ สตริงการเชื่อมต่อ SQL Server หรือ MySQLรวมถึงการสร้างล็อกอินและผู้ใช้เฉพาะพร้อมรหัสผ่าน (ซึ่งสามารถสร้างโดยอัตโนมัติหรือกำหนดเองได้ในการเรียกใช้สคริปต์) แม้ว่าเครื่องมือเหล่านี้จะได้รับการออกแบบโดยคำนึงถึงการใช้งานที่มีสิทธิ์พิเศษ แต่ปรัชญาของพวกมันก็สอดคล้องกับแนวคิดของ ให้สิทธิ์การเข้าถึงขั้นต่ำแก่แต่ละแอปพลิเคชันและแต่ละกระบวนการโดยแยกบัญชีบริหารและบัญชีสิ่งพิมพ์ออกจากกันอย่างชัดเจน
แนวทางปฏิบัติที่ดีที่สุดเพื่อความปลอดภัยและประสิทธิภาพในการเขียนสคริปต์ PowerShell
กลยุทธ์การทำงานอัตโนมัติใดๆ โดยเฉพาะอย่างยิ่งเมื่อนำไปใช้โดยปราศจากสิทธิ์ผู้ดูแลระบบ จะต้องอาศัยชุดของขั้นตอนต่างๆ แนวปฏิบัติที่ดีด้านความปลอดภัยและประสิทธิภาพ เพื่อหลีกเลี่ยงปัญหาในระยะกลาง
เคล็ดลับสำคัญบางประการมีดังนี้:
- ออกแบบสคริปต์โดยใช้หลักการให้สิทธิ์ขั้นต่ำที่สุด: สคริปต์แต่ละตัวจะเข้าถึงเฉพาะทรัพยากรที่จำเป็นอย่างยิ่งเท่านั้น และบัญชีที่เรียกใช้สคริปต์ (ผู้ใช้ทั่วไป บัญชีบริการ ฯลฯ) จะมีสิทธิ์เฉพาะที่จำเป็นเท่านั้น
- การลงนามในสคริปต์ที่มีความละเอียดอ่อน และใช้ นโยบายการดำเนินการที่กำหนดให้ต้องมีการลงนามอย่างน้อยที่สุดสำหรับสคริปต์ที่ดาวน์โหลดจากอินเทอร์เน็ตหรือแชร์บนเครือข่ายของบริษัท
- ปกป้องข้อมูลประจำตัวและข้อมูลสำคัญหลีกเลี่ยงการจัดเก็บในรูปแบบข้อความธรรมดาภายในสคริปต์ และหันไปใช้การจัดเก็บข้อมูลที่ปลอดภัย ตัวแปรสภาพแวดล้อมที่เข้ารหัส หรือโซลูชันอื่นๆ ซิงโครไนซ์และเข้ารหัสสำเนาในระบบคลาวด์ ตามความเหมาะสม
- ดำเนินการจัดการข้อผิดพลาดอย่างมีประสิทธิภาพใช้บล็อก try/catch บันทึกข้อผิดพลาด และหากเป็นไปได้ ให้ส่งการแจ้งเตือนเมื่อเกิดความล้มเหลวที่สำคัญ
- เพิ่มประสิทธิภาพการทำงาน: นำฟังก์ชันและโมดูลกลับมาใช้ใหม่ ลดการใช้ลูปที่ไม่จำเป็น ใช้ cmdlet ดั้งเดิมเมื่อใดก็ตามที่เป็นไปได้ และทดสอบวิธีการต่างๆ เพื่อลดเวลาในการประมวลผล
- ตรวจสอบและติดตามงานที่กำหนดไว้ตรวจสอบประวัติการทำงานของ Task Scheduler, บันทึกเหตุการณ์ และไฟล์บันทึกที่สร้างโดยสคริปต์เป็นระยะ เพื่อตรวจจับพฤติกรรมที่ผิดปกติหรือความล้มเหลวที่เกิดขึ้นซ้ำๆ
- ควรทดสอบในสภาพแวดล้อมการพัฒนาหรือการทดสอบเสมอ ก่อนที่จะนำงานหรือสคริปต์ใหม่ไปใช้งานจริง โดยเฉพาะอย่างยิ่งหากเกี่ยวข้องกับการทำงานร่วมกับระบบที่สำคัญหรือข้อมูลที่ละเอียดอ่อน
เมื่อคำนึงถึงสิ่งเหล่านี้ทั้งหมดแล้ว ระบบนิเวศการทำงานอัตโนมัติของ PowerShell ที่มีประสิทธิภาพสูงจึงสามารถสร้างขึ้นได้ โดยได้รับการสนับสนุนจากงานที่กำหนดเวลาไว้และเครื่องมือระยะไกล ซึ่ง มีเพียงส่วนเล็ก ๆ ของโครงสร้างพื้นฐานเท่านั้นที่ต้องการบัญชีที่มีสิทธิ์พิเศษสูง และส่วนที่เหลือสามารถจัดการได้โดยผู้ใช้บริการมาตรฐานหรือผู้ใช้บริการที่มีสิทธิ์จำกัดมาก ด้วยการวางแผนบริบทการดำเนินการ การออกแบบสคริปต์ และการจัดการสิทธิ์อย่างรอบคอบ จึงเป็นไปได้ที่จะทำให้งานประจำวันส่วนใหญ่ใน Windows และ Microsoft 365 เป็นไปโดยอัตโนมัติโดยไม่ต้องพึ่งพาบัญชีผู้ดูแลระบบอยู่ตลอดเวลา
นักเขียนผู้หลงใหลเกี่ยวกับโลกแห่งไบต์และเทคโนโลยีโดยทั่วไป ฉันชอบแบ่งปันความรู้ผ่านการเขียน และนั่นคือสิ่งที่ฉันจะทำในบล็อกนี้ เพื่อแสดงให้คุณเห็นสิ่งที่น่าสนใจที่สุดเกี่ยวกับอุปกรณ์ ซอฟต์แวร์ ฮาร์ดแวร์ แนวโน้มทางเทคโนโลยี และอื่นๆ เป้าหมายของฉันคือการช่วยคุณนำทางโลกดิจิทัลด้วยวิธีที่เรียบง่ายและสนุกสนาน




