Giới thiệu tổng quan về chỉnh Group Policy cho PowerShell

Group Policy là công cụ quản trị trung tâm trong môi trường Windows, cho phép quản trị viên kiểm soát hành vi của hệ thống và người dùng. Khi kết hợp với PowerShell, việc cách chỉnh group policy cho powershell trở thành kỹ năng thiết yếu để thiết lập chính sách thực thi script, giới hạn quyền truy cập hoặc cấu hình môi trường làm việc. Bài viết này sẽ đi sâu vào từng bước cụ thể, từ khái niệm cơ bản đến các thủ thuật nâng cao, giúp bạn kiểm soát PowerShell qua Group Policy một cách hiệu quả.
Group Policy và PowerShell – Mối quan hệ cốt lõi
Group Policy Object (GPO) là gì?
GPO là tập hợp các cài đặt chính sách được áp dụng cho máy tính hoặc người dùng trong Active Directory. Mỗi GPO chứa các node cấu hình riêng biệt cho máy tính (Computer Configuration) và người dùng (User Configuration).
PowerShell Execution Policy – Chính sách thực thi script
PowerShell có sẵn các mức Execution Policy như Restricted, AllSigned, RemoteSigned, Unrestricted và Bypass. Tuy nhiên, các chính sách này có thể bị ghi đè bởi Group Policy nếu được cấu hình đúng cách. Đây là lý do bạn cần cách chỉnh group policy cho powershell để áp đặt một chính sách thống nhất trên toàn miền.
Sự khác biệt giữa Local Group Policy và Domain Group Policy
| Loại | Phạm vi | Cách chỉnh sửa |
|---|---|---|
| Local Group Policy | Máy đơn lẻ | gpedit.msc hoặc PowerShell |
| Domain Group Policy | Toàn bộ miền/OU | Group Policy Management Console (GPMC) |
Lợi ích của việc chỉnh Group Policy cho PowerShell

- Kiểm soát tập trung quyền thực thi script trên hàng trăm máy tính.
- Ngăn chặn chạy các script độc hại từ nguồn không tin cậy.
- Thiết lập mặc định cho Execution Policy mà người dùng khó có thể thay đổi.
- Quản lý các module và remoting capabilities đồng bộ.
- Nhấn Win + R, gõ gpedit.msc (cho Local) hoặc mở Group Policy Management Console từ Server Manager (cho Domain).
- Nếu sử dụng domain, liên kết GPO với OU chứa máy tính hoặc người dùng cần quản lý.
- Turn on Script Execution: Cho phép bật/tắt thực thi script và chọn Execution Policy.
- Set the default source path for Update-Help: Cấu hình đường dẫn cập nhật trợ giúp.
- Turn on PowerShell Script Block Logging: Ghi log tất cả các khối script đã chạy.
- Turn on PowerShell Transcription: Ghi lại toàn bộ phiên làm việc.
- Double-click vào chính sách Turn on Script Execution.
- Chọn Enabled.
- Trong danh sách thả xuống Execution Policy, chọn một trong các giá trị:
- Allow local scripts and remote signed scripts – tương đương RemoteSigned.
- Allow all scripts – tương đương Unrestricted.
- Allow only signed scripts – tương đương AllSigned.
- Disable script execution – tương đương Restricted.
- Nhấn Apply và OK.
- Trong Administrative Templates → Windows PowerShell, kích hoạt Turn on PowerShell Transcription.
- Thiết lập thư mục đầu ra (ví dụ: \serverlogs%username%).
- Sau khi áp dụng GPO, mọi phiên PowerShell sẽ tự động ghi lại toàn bộ đầu vào/đầu ra vào file log.
- Không chạy gpupdate /force: Người dùng vẫn thấy Execution Policy cũ do chưa refresh.
- Đặt GPO ở node sai: Cài đặt ở Computer Configuration nhưng lại áp dụng cho OU người dùng – không có hiệu lực.
- Xung đột GPO: Nhiều GPO có cùng cài đặt nhưng khác giá trị, thứ tự ưu tiên sẽ quyết định cái nào được áp dụng.
- Quên bỏ qua chính sách cục bộ: Nếu GPO chưa được liên kết đúng, máy tính vẫn dùng Execution Policy mặc định.
Phân loại cài đặt Group Policy liên quan đến PowerShell
Computer Configuration – Áp dụng cho máy tính
Node này chứa các cài đặt ảnh hưởng đến toàn bộ hệ thống bất kể người dùng nào đăng nhập. Cấu hình PowerShell tại Administrative Templates → Windows Components → Windows PowerShell.
User Configuration – Áp dụng cho người dùng
Các chính sách dành riêng cho từng tài khoản người dùng. Thường dùng để giới hạn quyền truy cập vào PowerShell ISE hoặc các lệnh ghép cụ thể.
Hướng dẫn chi tiết cách chỉnh Group Policy cho PowerShell

Bước 1: Mở Group Policy Editor
Bước 2: Điều hướng đến đường dẫn PowerShell
Trong Computer Configuration, đi tới: Administrative Templates → Windows Components → Windows PowerShell. Tại đây bạn sẽ thấy các chính sách như:
Bước 3: Cấu hình Turn on Script Execution
Khi chính sách này được bật, PowerShell sẽ bỏ qua Execution Policy cục bộ và tuân theo thiết lập từ Group Policy.
Bước 4: Cập nhật Group Policy
Sau khi chỉnh sửa, chạy lệnh sau trên máy tính đích (với quyền Administrator) để áp dụng ngay lập tức:
gpupdate /force
Kiểm tra lại bằng lệnh Get-ExecutionPolicy – kết quả sẽ hiển thị Restricted hoặc giá trị tương ứng với cài đặt GPO (có thể là Undefined nếu GPO không áp dụng).
Ví dụ minh họa thực tế
Ví dụ 1: Chỉnh Group Policy để chỉ cho phép script đã ký chạy
Môi trường doanh nghiệp yêu cầu bảo mật cao. Bạn tạo một GPO mới, bật Turn on Script Execution và chọn Allow only signed scripts. Mọi script không có chữ ký số hợp lệ sẽ bị chặn. Người dùng không thể dùng lệnh Set-ExecutionPolicy để thay đổi vì GPO ghi đè.
Ví dụ 2: Bật PowerShell Transcription qua Group Policy
Sai lầm thường gặp khi chỉnh Group Policy cho PowerShell

So sánh: Group Policy vs. Local Configuration cho PowerShell
| Tiêu chí | Group Policy | Local (Set-ExecutionPolicy) |
|---|---|---|
| Phạm vi | Toàn miền/OU | Máy đơn lẻ |
| Khả năng ghi đè | Cao – ghi đè local | Thấp – bị GPO ghi đè |
| Yêu cầu quyền | Domain Admin | Local Admin |
| Áp dụng tức thì | Có (sau gpupdate) | Có (lệnh thực thi ngay) |
| Bảo mật | Cao – tập trung | Trung bình – dễ bị thay đổi |
Ứng dụng nâng cao cách chỉnh group policy cho powershell

Kết hợp với PowerShell Script Block Logging
Bên cạnh Execution Policy, bật Script Block Logging giúp ghi lại tất cả các lệnh PowerShell đã chạy. Điều này hỗ trợ điều tra sự cố bảo mật. Đường dẫn: Computer Configuration → Administrative Templates → Windows Components → Windows PowerShell → Turn on PowerShell Script Block Logging.
Giới hạn PowerShell Remoting qua Group Policy
Trong node Administrative Templates → Windows Components → Windows Remote Management (WinRM), có thể cấu hình cho phép hoặc từ chối kết nối PowerShell Remoting. Kết hợp với chính sách PowerShell sẽ tạo ra một môi trường vận hành an toàn.
Quản lý module và repository
Mặc dù Group Policy không có sẵn tùy chọn chặn module trực tiếp,
Thông thường do GPO chưa được áp dụng (chưa gpupdate) hoặc máy tính nằm ngoài phạm vi liên kết GPO. Cũng có thể do xung đột với GPO khác có thứ tự ưu tiên cao hơn.
Làm thế nào để kiểm tra GPO nào đang áp dụng cho PowerShell?
Chạy lệnh gpresult /h report.html và mở file HTML. Tìm trong mục Administrative Templates để biết chính sách nào đã được áp dụng.
Có thể chỉnh Group Policy cho PowerShell Core (pwsh.exe) không?
Có, nhưng Group Policy mặc định chỉ quản lý Windows PowerShell (powershell.exe). Đối với PowerShell 7+, bạn cần thêm template ADMX riêng hoặc sử dụng cấu hình JSON trong AppLocker.
Group Policy có thể vô hiệu hóa hoàn toàn PowerShell không?
Group Policy không có tùy chọn trực tiếp để xóa PowerShell. Tuy nhiên, bạn có thể sử dụng AppLocker (thông qua Group Policy) để chặn thực thi powershell.exe và pwsh.exe.
Kết luận
Cách chỉnh group policy cho powershell là kỹ năng không thể thiếu đối với quản trị viên hệ thống muốn duy trì bảo mật và tính nhất quán trong môi trường Windows. Bằng cách nắm vững các bước từ tạo GPO, cấu hình Turn on Script Execution, đến kết hợp với logging và remoting, bạn có thể kiểm soát toàn bộ hành vi của PowerShell trên hàng trăm máy tính. Hãy luôn thực hiện kiểm tra cẩn thận và sao lưu GPO trước khi áp dụng rộng rãi. Với những hướng dẫn chi tiết trong bài viết này, bạn đã có đủ kiến thức để tự tin triển khai và tối ưu hóa chính sách PowerShell thông qua Group Policy.







