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.
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:
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.
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
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.
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:
Trong output, bạn sẽ nhận danh sách server, mà trên đó role cụ thể được cài.
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:
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: