การจัดการเซิร์ฟเวอร์ Windows
PowerShell: ภาษาสำหรับผู้ดูแล Windows ที่รันบน Linux ได้ด้วย
PowerShell คือภาษาอัตโนมัติของระบบ Windows: cmdlet ที่ทำงานกับออบเจกต์แทนการแยกวิเคราะห์ข้อความ remoting ที่เข้าถึงเครื่องเป็นกลุ่มแบบที่ SSH เข้าถึงโฮสต์ Linux และแกลเลอรีโมดูลที่ครอบคลุมทุกอย่างตั้งแต่ Azure ถึง Exchange ตั้งแต่เวอร์ชัน 7 มันรันบน Linux และ macOS ได้ด้วย ซึ่งสำคัญสำหรับทีมที่ใช้ระบบผสม แต่บ้านของมันยังคือการดูแลเซิร์ฟเวอร์ Windows และนั่นคือที่ที่ความคล่องแคล่วให้ผลตอบแทน
ประเด็นสำคัญ
- ความต่างเชิงออกแบบคือออบเจกต์: Get-Process คืนออบเจกต์โปรเซสที่มีโครงสร้าง ซึ่งกรองด้วย Where-Object และเลือกด้วย Select-Object ดังนั้นไปป์ไลน์จึงแปลงข้อมูลแทนที่จะแยกวิเคราะห์ข้อความ นั่นกำจัดการแยกวิเคราะห์คอลัมน์แบบเปราะบางที่กัดกินงานอัตโนมัติด้วย bash
- สองรุ่นอยู่ร่วมกัน: Windows PowerShell 5.1 (มากับ Windows และถูกหยุดพัฒนา) กับ PowerShell 7+ (ข้ามแพลตฟอร์ม โอเพนซอร์ส พัฒนาต่อเนื่องพร้อมรุ่น LTS) โมดูลใหม่ ๆ ต้องการ 7+ มากขึ้นเรื่อย ๆ และการรันสคริปต์ที่ชื่อคุ้นเคยแต่ผิดรุ่นคือกับดักเวลาคลาสสิก
- Remoting คือคันโยกสำหรับทั้งฝูงเครื่อง: PowerShell Remoting บน WinRM แทนการกระโดดเข้าเซิร์ฟเวอร์ทีละเครื่อง และ Enter-PSSession / Invoke-Command สั่งงานบนโฮสต์หลายสิบเครื่องแบบที่ลูป ssh ทำบน Linux ส่วน PowerShell 7 เพิ่มการขนส่งผ่าน SSH สำหรับปลายทางที่ไม่ใช่ Windows
- โมดูลคือระบบนิเวศ: PowerShellGet ติดตั้งจาก PSGallery และมี Az (Azure), Exchange Online, MicrosoftTeams กับโมดูลชุมชนอีกหลายพันตัว ปักเวอร์ชันโมดูลตามแต่ละสภาพแวดล้อมแบบที่คุณปักแพ็กเกจ Python เพราะการอัปเดตโมดูลเปลี่ยนพฤติกรรมของคำสั่งได้
- วินัยในการเขียนสคริปต์ยืมมาจากภาษาอื่นได้: Set-StrictMode, $ErrorActionPreference = 'Stop', บล็อก param พร้อมการตรวจสอบค่า และ PSScriptAnalyzer เป็นชั้น lint ถ้าไม่มีสิ่งเหล่านี้ สคริปต์ PowerShell จะกลายเป็นสคริปต์ที่ดูผ่อนปรนที่สุดและเปราะที่สุดในรีโป
- รูปแบบการเริ่มใช้ที่ตรงไปตรงมาสำหรับงานอัตโนมัติใหม่: เรียนงานจริงหนึ่งงานให้ลึก (สร้างรายงาน, อัปเดตเป็นชุด) แปลงมันให้ครบวงจรด้วย remoting และโมดูล แล้วค่อยขยาย พื้นผิวของ PowerShell กว้างมากและการเรียนแบบกว้างแต่ตื้นไม่ได้สร้างอะไรที่ใช้งานได้จริง
บันทึกจากหน้างาน
สคริปต์ PowerShell ที่เรารับช่วงต่อบนระบบของลูกค้ารันทุกคืนมาสามปี และไม่มีใครรู้ว่ามันทำอะไร เพราะคนเขียนจากไปโดยไม่มี Set-StrictMode และไม่มีการจัดการข้อผิดพลาด เราเขียนมันใหม่ในบ่ายเดียวด้วย remoting และการ import โมดูลหนึ่งตัว เวอร์ชันใหม่สั้นกว่า และในบันทึกการเรียกใช้มันล้มเหลวเพียงครั้งเดียวอย่างชัดเจน ซึ่งคือความต่างที่วินัยของเครื่องมือสร้างขึ้น
คำถามที่พบบ่อย
ทีมที่เน้น Linux ควรเรียน PowerShell ไหม
เรียนส่วนที่แตะระบบ Windows (remoting ตระกูลคำสั่ง Get-AD-* และ cmdlet ที่เกี่ยวกับ GPO) และทำงานอัตโนมัติจริงให้สำเร็จหนึ่งงาน PowerShell 7 รันบน Linux ได้ เครื่องมือจึงไม่ใช่เหตุผลให้หลีกเลี่ยงอีกต่อไป
PowerShell เป็นเชลล์หรือภาษา
เป็นทั้งสองอย่าง: เชลล์เชิงโต้ตอบสำหรับงานดูแลครั้งคราว และภาษาเขียนสคริปต์เต็มรูปแบบสำหรับงานอัตโนมัติ ครึ่งที่เป็นภาษาต่างหาก (ชนิดข้อมูล คลาส โมดูล การจัดการข้อผิดพลาด) คือสิ่งที่แยกงานอัตโนมัติที่ดูแลต่อได้ออกจากสคริปต์เปราะ ๆ
Remoting เทียบกับ SSH ต่างกันอย่างไร
PowerShell Remoting ส่งออบเจกต์ที่มีโครงสร้างผ่าน WinRM โดยปริยาย ซึ่งสมบูรณ์กว่าสตรีมข้อความ บน Linux มันวิ่งบน SSH เหมือนไคลเอนต์อื่น ๆ ไม่ว่าทางไหนก็ต้องเสริมความปลอดภัย และใช้ constrained language mode สำหรับเซสชันที่มีความเสี่ยงสูง
ทำไม cmdlet บางตัวมีคำเชื่อมแบบ Get-AdUser
ธรรมเนียม Verb-Noun (รายการ Approved Verbs) ทำให้คำสั่งอธิบายตัวเองและค้นพบได้ผ่าน Get-Command เมื่อรับธรรมเนียมนี้ได้ ชื่อ cmdlet จะเลิกดูแปลกและเริ่มทำหน้าที่เป็นเอกสารประกอบ
Kinetikatech ช่วยเรื่อง การจัดการเซิร์ฟเวอร์ windows ได้อย่างไร
เราเคยรับเรื่องแบบนี้มาเป็นร้อยครั้ง: เร็วๆ นี้: การตรวจสอบ แพตช์ และการป้องกันแบบ brute-force สำหรับ Windows Server, ระเบียบวินัยเดียวกันตลอด 24 ชั่วโมงทุกวัน, เครื่องมือแบบเนทีฟ กับ การเฝ้าระวัง Windows Serverและการจัดการเซิร์ฟเวอร์ คุณได้วงจรครบ ตั้งแต่เราประเมิน ลงมือทำ เฝ้าดูตลอดเวลา และรับเรื่องภายใน 30 นาทีเมื่อจำเป็น