การจัดการบทบาทและคุณสมบัติของ Windows Server ด้วย PowerShell
ใน Windows Server 2012R2/2016/2019 คุณสามารถใช้คอนโซลตัวจัดการเซิร์ฟเวอร์แบบกราฟิกเพื่อติดตั้งและลบบทบาทและคุณลักษณะของเซิร์ฟเวอร์ อย่างไรก็ตาม ในกรณีส่วนใหญ่ คุณสามารถทำสิ่งเดียวกันจากคอนโซล PowerShell ได้เร็วกว่ามาก ในบทความนี้ เราจะพิจารณาวิธีจัดการบทบาทและฟีเจอร์ใน Windows Server เวอร์ชันใหม่ด้วย PowerShell
แสดงรายการบทบาทและคุณลักษณะเซิร์ฟเวอร์ Windows ที่ติดตั้งทั้งหมดผ่าน PowerShell
ผู้ใช้
Get-WindowsFeaturecmdlet เพื่อแสดงรายการบทบาทและคุณสมบัติของ Windows Server ที่มีอยู่ทั้งหมด หากคุณเรียกใช้โดยไม่มีพารามิเตอร์ คุณจะเห็นข้อมูลเกี่ยวกับคอมโพเนนต์ Windows Server ทั้งหมด
ชื่อของคอมโพเนนต์ (ชื่อที่แสดง) ชื่อระบบ (ชื่อ) และสถานะ (สถานะการติดตั้ง: ติดตั้ง พร้อมใช้งาน หรือลบออก) จะแสดงขึ้น รายการของบทบาทและคุณลักษณะมีลักษณะเหมือนต้นไม้ที่มีบทบาทซ้อนกันคล้ายกับที่คุณเห็นเมื่อคุณติดตั้งบทบาทใน Server Manager GUI ในการติดตั้งและลบบทบาทหรือคุณสมบัติโดยใช้ PowerShell คุณต้องทราบชื่อระบบที่แสดงอยู่ในคอลัมน์ ชื่อ
คำใบ้ หากบทบาทหรือคุณสมบัติถูกลบออก หมายความว่าไฟล์การติดตั้งถูกลบออกจากคอมโพเนนต์ระบบ (เพื่อลดขนาดของโฟลเดอร์ WinSxS) และคุณจะไม่สามารถติดตั้งบทบาทได้หากไม่มี การเข้าถึงอินเทอร์เน็ตโดยตรงหรือการติดตั้ง Windows Server ISO (ดูตัวอย่างการติดตั้ง .Net 3.5)
คุณสามารถลบบทบาทหรือส่วนประกอบออกจากรูปภาพของคุณทางออนไลน์ได้ดังนี้:
Uninstall-WindowsFeature -Name DHCP -Removeหากต้องการติดตั้งบทบาท DHCP ที่ถูกลบ ให้ใช้ cmdlet นี้:
Install-WindowsFeature DHCP(คุณจะต้องเข้าถึงอินเทอร์เน็ตโดยตรง)
หรือคุณสามารถกู้คืนไฟล์ไบนารีคอมโพเนนต์จากอิมเมจ Windows Server ISO ของคุณ:
Install-WindowsFeature DHCP -Source E:\sources\sxsคุณสามารถแสดงรายการคุณสมบัติเซิร์ฟเวอร์ที่ติดตั้ง:
Get-WindowsFeature | Where-Object {$_. installstate -eq "installed"} | ft Name,Installstateตามภาพหน้าจอด้านล่าง เซิร์ฟเวอร์นี้ใช้เป็นเซิร์ฟเวอร์ไฟล์ (ติดตั้งบทบาท FileAndStorage-Services, Storage-Services) ส่วนประกอบอื่น ๆ ส่วนใหญ่ใช้เพื่อจัดการหรือตรวจสอบเซิร์ฟเวอร์
หากคุณไม่ทราบชื่อบทบาทอย่างชัดเจน คุณสามารถใช้สัญลักษณ์แทนได้ ตัวอย่างเช่น หากต้องการตรวจสอบว่ามีการติดตั้งส่วนประกอบเว็บใดของบทบาท IIS ให้รันคำสั่งนี้ (ไวยากรณ์จะสั้นลงเล็กน้อย):
Get-WindowsFeature -Name web-* | Where installed
คุณสามารถรับรายการส่วนประกอบที่ติดตั้งบน Windows Server ระยะไกล:
Get-WindowsFeature -ComputerName ny-spool1 | Where installed | ft Name,Installstateพิจารณาจากบทบาท Print-Services และ Print-Server ที่ติดตั้ง เซิร์ฟเวอร์นี้ใช้เป็นเซิร์ฟเวอร์การพิมพ์
คุณสามารถใช้ Get-WindowsFeature cmdlet เพื่อค้นหาเซิร์ฟเวอร์ในโดเมนของคุณ ซึ่งมีการติดตั้งบทบาทเฉพาะไว้ คุณสามารถค้นหาเซิร์ฟเวอร์ของคุณใน Active Directory OU เฉพาะได้โดยใช้ Get-ADComputer cmdlet จากโมดูล PowerShell ActiveDirectory หรือตามรายการเซิร์ฟเวอร์ที่ให้มา (
$servers = ('server1', 'server2')).
ตัวอย่างเช่น คุณต้องการค้นหาไฟล์เซิร์ฟเวอร์ทั้งหมดที่มีบทบาท FileAndStorage-Services ในหน่วยองค์กร AD ที่ระบุ (ฉันใช้ Visual Studio Code เป็นตัวแก้ไข PoweShell) ใช้สคริปต์ต่อไปนี้:
import-module activedirectory
$Servers=get-adcomputer -properties * -Filter {Operatingsystem -notlike "*2008 R2*" -and enabled -eq "true" -and Operatingsystem -like "*Windows Server*"} -SearchBase ‘OU=Servers,OU=UK,DC=a-d,DC=com’ |select name
Foreach ($server in $Servers)
{
Get-WindowsFeature -name FileAndStorage-Services -ComputerName $server.Name | Where installed | ft $server.name, Name, Installstate
}ในผลลัพธ์ คุณจะได้รับรายชื่อเซิร์ฟเวอร์ที่ติดตั้งบทบาทเฉพาะ
จะติดตั้งบทบาทและคุณสมบัติของ Windows Server โดยใช้ PowerShell ได้อย่างไร
ในการติดตั้งบทบาทและคุณสมบัติบน Windows Server จะใช้ cmdlet Install-WindowsFeature
ในการติดตั้งบทบาทเซิร์ฟเวอร์ DNS และเครื่องมือการจัดการ (รวมถึงโมดูล Powershell DNSServer) บนเซิร์ฟเวอร์ปัจจุบัน ให้รันคำสั่งนี้:
Install-WindowsFeature DNS -IncludeManagementToolsตามค่าเริ่มต้น cmdlet จะติดตั้งบทบาทและคุณลักษณะที่เกี่ยวข้องทั้งหมด หากต้องการแสดงรายการการพึ่งพาก่อนการติดตั้ง ให้ใช้ตัวเลือก
WhatIfInstall-WindowsFeature -Name UpdateServices -WhatIfตัวอย่างเช่น ในการติดตั้งบทบาท WSUS คุณจะต้องติดตั้งคอมโพเนนต์ IIS บางอย่างด้วย
What if: Continue with installation?
What if: Performing installation for "[Windows Server Update Services] Windows Server Update
What if: Performing installation for "[Windows Server Update Services] WID Database".
What if: Performing installation for "[Windows Server Update Services] WSUS Services".
What if: Performing installation for "[Web Server (IIS)] Windows Authentication".
What if: Performing installation for "[Web Server (IIS)] Dynamic Content Compression".
What if: Performing installation for "[Web Server (IIS)] Performance".
What if: Performing installation for "[Web Server (IIS)] Static Content".
What if: Performing installation for "[Windows Internal Database] Windows Internal Database".
What if: The target server may need to be restarted after the installation completes.ในการติดตั้งบทบาทโฮสต์เซสชันเดสก์ท็อประยะไกล บทบาทสิทธิ์การใช้งาน RDS และเครื่องมือการจัดการระยะไกล RDS ให้ใช้คำสั่งต่อไปนี้:
Install-WindowsFeature -ComputerName lon-rds3 RDS-RD-Server, RDS-Licensing -IncludeAllSubFeature -IncludeManagementTools -Restartหากคุณเพิ่ม
-Restartพารามิเตอร์ เซิร์ฟเวอร์ของคุณจะรีสตาร์ทโดยอัตโนมัติหากจำเป็น
คุณยังสามารถติดตั้งส่วนประกอบด้วยคำสั่งต่อไปนี้ ตัวอย่างเช่น ในการติดตั้งบทบาทเซิร์ฟเวอร์ SMTP:
Get-WindowsFeature -Name SMTP-Server | Install-WindowsFeatureจะปรับใช้บทบาทบนเซิร์ฟเวอร์ Windows ระยะไกลหลายตัวได้อย่างไร
มีตัวเลือกอื่นที่น่าสนใจเมื่อคุณปรับใช้เซิร์ฟเวอร์ทั่วไป คุณสามารถติดตั้งคุณลักษณะที่คุณต้องการบน Windows Server อ้างอิงและส่งออกรายการบทบาทที่ติดตั้งไปยังไฟล์ CSV:
Get-WindowsFeature | where{$_.Installed -eq $True} | select name | Export-Csv C:\PS\InstalledRoles.csv -NoTypeInformation -Verboseจากนั้น คุณจะสามารถใช้ไฟล์ CSV นี้เพื่อติดตั้งชุดบทบาทเดียวกันบนเซิร์ฟเวอร์ทั่วไปอื่นๆ ได้:
Import-Csv C:\PS\Roles.csv | foreach{ Install-WindowsFeature $_.name }หากมีการติดตั้งบทบาทหรือคุณสมบัติแล้ว คำสั่งจะส่งคืน NoChangeNeeded และดำเนินการติดตั้งบทบาทถัดไปต่อไป
หรือหากต้องการติดตั้งชุดบทบาทเดียวกันบนเซิร์ฟเวอร์ระยะไกลหลายเครื่อง คุณสามารถใช้คำสั่งนี้:
$servers = ('ny-rds1', 'ny-rds2',’ny-rds3’,’ny-rds4’)
foreach ($server in $servers) {Install-WindowsFeature RDS-RD-Server -ComputerName $server}จะถอนการติดตั้งบทบาทหรือคุณลักษณะบน Windows Server ด้วย PowerShell ได้อย่างไร
หากต้องการลบบทบาทหรือคุณสมบัติของ Windows Server จะใช้ cmdlet Remove-WindowsFeature
ตัวอย่างเช่น หากต้องการลบบทบาทเซิร์ฟเวอร์การพิมพ์ ให้รันคำสั่ง:
Remove-WindowsFeature Print-Server -Restart






