Computer >> Hướng Dẫn Máy Tính >  >> Hệ Thống >> Máy Chủ Windows

Quản lý Roles & Features Windows Server bằng PowerShell

Trong Windows Server 2012R2/2016/2019, bạn có thể dùng giao diện đồ họa Server Manager console để cài đặt và gỡ bỏ vai trò (roles) và tính năng (features). Tuy nhiên, trong hầu hết trường hợp bạn có thể làm điều tương tự từ PowerShell console nhanh hơn nhiều. Trong bài này chúng ta sẽ xem cách quản lý roles và features trong các phiên bản Windows Server hiện đại với PowerShell.

Liệt kê tất cả Windows Server Roles & Features đã cài qua PowerShell

Dùng cmdlet Get-WindowsFeature để hiển thị danh sách tất cả roles và features Windows Server có sẵn. Nếu chạy không tham số, bạn sẽ thấy thông tin về tất cả thành phần Windows Server.

Tên thành phần (Display Name), tên hệ thống (Name) và trạng thái (Install State: Installed, Available hoặc Removed) được hiển thị. Danh sách roles và features trông như một cây với các role lồng nhau tương tự như bạn thấy khi cài role trong Server Manager GUI. Để cài và gỡ roles hoặc features dùng PowerShell, bạn phải biết tên hệ thống của chúng liệt kê trong cột Name.

Quản lý Roles & Features Windows Server bằng PowerShell

Mẹo. Nếu role hoặc feature ở trạng thái Removed, nghĩa là file cài đặt của nó bị xóa khỏi component store hệ thống (để giảm kích thước thư mục WinSxS) và bạn không thể cài role đó mà không có truy cập Internet trực tiếp hoặc ISO cài đặt Windows Server (xem ví dụ cài .Net 3.5).

Bạn có thể gỡ role hoặc component khỏi image online như sau:

Uninstall-WindowsFeature –Name DHCP –Remove

Để cài lại role DHCP đã gỡ, dùng cmdlet:

Install-WindowsFeature DHCP (bạn sẽ cần truy cập Internet trực tiếp)

Hoặc khôi phục file nhị phân component từ ISO Windows Server:

Install-WindowsFeature DHCP -Source E:\sources\sxs

Bạn có thể liệt kê các server feature đã cài:

Get-WindowsFeature | Where-Object {$_.installstate -eq "installed"} | ft Name,Installstate

Dựa trên ảnh chụp màn hình dưới, server này dùng làm file server (cài roles FileAndStorage-Services, Storage-Services). Hầu hết component khác dùng để quản lý hoặc giám sát server.

Quản lý Roles & Features Windows Server bằng PowerShell

Nếu bạn không biết chính xác tên role, bạn có thể dùng wildcard. Ví dụ, để kiểm tra thành phần web của role IIS nào đã cài, chạy lệnh này (cú pháp hơi rút gọn):

Get-WindowsFeature -Name web-* | Where installed
Quản lý Roles & Features Windows Server bằng PowerShell

Bạn có thể lấy danh sách component đã cài trên Windows Server từ xa:

Get-WindowsFeature -ComputerName ny-spool1 | Where installed | ft Name,Installstate

Dựa trên roles Print-Services và Print-Server đã cài, server này được dùng làm print server.

Quản lý Roles & Features Windows Server bằng PowerShell

Bạn có thể dùng Get-WindowsFeature để tìm server trong domain của bạn, mà trên đó role cụ thể được cài. Bạn có thể tìm server trong một OU Active Directory cụ thể dùng cmdlet Get-ADComputer từ module PowerShell ActiveDirectory hoặc bằng danh sách server cung cấp ($servers = ('server1', 'server2')).

Ví dụ, bạn muốn tìm tất cả file server với role FileAndStorage-Services trong OU AD chỉ định (tôi dùng Visual Studio Code làm editor PowerShell). Dùng script sau:

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=woshub,DC=com' |select name
Foreach ($server in $Servers)
{
 Get-WindowsFeature -name FileAndStorage-Services -ComputerName $server.Name | Where installed | ft $server.name, Name, Installstate
}

Trong output, bạn sẽ nhận danh sách server, mà trên đó role cụ thể được cài.
Quản lý Roles & Features Windows Server bằng PowerShell

Cách cài Windows Server Roles & Features dùng PowerShell

Để cài roles và features trên Windows Server, cmdlet Install-WindowsFeature được dùng.

Để cài role DNS server và công cụ quản lý (bao gồm module PowerShell DNSServer) trên server hiện tại, chạy lệnh:

Install-WindowsFeature DNS -IncludeManagementTools

Mặc định, cmdlet cài tất cả role và feature phụ thuộc. Để hiển thị danh sách phụ thuộc trước khi cài, dùng tùy chọn WhatIf:
Install-WindowsFeature -Name UpdateServices -WhatIf

Ví dụ, để cài role WSUS, bạn sẽ phải cài một số thành phần IIS cũng.

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.

Để cài role Remote Desktop Session Host, role RDS licensing và công cụ quản trị RDS từ xa, dùng lệnh sau:

Install-WindowsFeature -ComputerName lon-rds3 RDS-RD-Server, RDS-Licensing –IncludeAllSubFeature –IncludeManagementTools –Restart
Quản lý Roles & Features Windows Server bằng PowerShell

Nếu thêm tham số –Restart, server sẽ tự khởi động lại nếu cần.

Bạn cũng có thể cài component với lệnh sau. Ví dụ, để cài role SMTP server:

Get-WindowsFeature -Name SMTP-Server | Install-WindowsFeature

Triển khai Roles trên nhiều Remote Windows Server

Có một tùy chọn thú vị khác khi triển khai server điển hình. Bạn có thể cài các feature bạn muốn trên một Windows Server tham chiếu (reference) và xuất danh sách role đã cài ra file CSV:

Get-WindowsFeature | where{$_.Installed -eq $True} | select name | Export-Csv C:\PS\InstalledRoles.csv -NoTypeInformation –Verbose
Quản lý Roles & Features Windows Server bằng PowerShell

Sau đó bạn có thể dùng file CSV này để cài cùng bộ role trên các server điển hình khác:

Import-Csv C:\PS\Roles.csv | foreach{ Install-WindowsFeature $_.name }
Quản lý Roles & Features Windows Server bằng PowerShell

Nếu role hoặc feature đã cài, lệnh sẽ trả về NoChangeNeeded và tiếp tục cài role tiếp theo.

Hoặc để cài cùng bộ role trên nhiều remote server, bạn có thể dùng lệnh:

$servers = ('ny-rds1', 'ny-rds2',’ny-rds3’,’ny-rds4’)
foreach ($server in $servers) {Install-WindowsFeature RDS-RD-Server -ComputerName $server}

Cách gỡ Role hoặc Feature trên Windows Server với PowerShell

Để gỡ Windows Server roles hoặc features, cmdlet Remove-WindowsFeature được dùng.

Ví dụ, để gỡ role print server, chạy lệnh:

Remove-WindowsFeature Print-Server -Restart