Registry Windows là một cơ sở dữ liệu trung tâm lưu trữ cấu hình hệ thống, thông tin phần mềm, và thiết lập người dùng. Việc thao tác với Registry thường được thực hiện qua công cụ Regedit, nhưng trong môi trường quản trị tự động hóa, cách tạo registry key bằng PowerShell trở thành giải pháp mạnh mẽ và linh hoạt hơn. PowerShell cung cấp các lệnh ghép (cmdlets) như New-Item và New-ItemProperty để tạo key và giá trị một cách chính xác, an toàn và có thể lặp lại. Bài viết này sẽ hướng dẫn bạn từ những bước cơ bản nhất đến các kỹ thuật nâng cao, bao gồm quyền truy cập, xử lý lỗi, và kiểm tra kết quả. Bạn sẽ hiểu được bản chất của Registry, cách PowerShell tương tác với nó, và áp dụng vào các tình huống quản lý hệ thống thực tế.
Giới thiệu về Registry và PowerShell

Registry key là gì?
Registry Windows được tổ chức dưới dạng cấu trúc cây phân cấp, bao gồm các key (thư mục) và value (giá trị). Mỗi key có thể chứa các key con và các giá trị dữ liệu. Các nhánh chính như HKEY_LOCAL_MACHINE (HKLM), HKEY_CURRENT_USER (HKCU) lưu trữ các thiết lập toàn cục và riêng của người dùng. Tạo registry key bằng PowerShell cho phép bạn thực hiện các thay đổi tự động, điều mà Regedit khó thực hiện được trên nhiều máy tính cùng lúc.
Tại sao nên dùng PowerShell để tạo Registry key?
- Tự động hóa: Viết script để tạo hàng loạt key trên nhiều máy.
- Kiểm soát phiên bản: Script có thể lưu lại, kiểm tra, và tái sử dụng.
- Quyền hạn chi tiết: PowerShell chạy với tài khoản hiện tại (người dùng) hoặc Administrator, giúp kiểm soát bảo mật tốt hơn.
- Xử lý lỗi: Tích hợp Try/Catch để kiểm tra sự tồn tại của key và tránh lỗi.
- Tích hợp với các công cụ khác: Kết hợp với Group Policy, SCCM, hoặc CI/CD pipeline.
Các lệnh cơ bản để tạo Registry key bằng PowerShell

New-Item – Tạo key (khóa)
Lệnh New-Item là lệnh tổng quát để tạo một mục mới trong bất kỳ provider nào (FileSystem, Registry, Certificate…). Để tạo registry key, bạn chỉ định đường dẫn đầy đủ đến Registry và tham số -Path cùng -ItemType Directory (vì key là một “directory” trong registry provider). Ví dụ:
New-Item -Path “HKLM:SOFTWAREMyCompany” -ItemType Directory -Force
Tham số -Force cho phép ghi đè nếu key đã tồn tại (không báo lỗi). Nếu không có -Force, lệnh sẽ báo lỗi nếu key đã có sẵn.
New-ItemProperty – Tạo giá trị (value)
Sau khi có key, bạn cần tạo các giá trị bên trong. New-ItemProperty tạo một giá trị mới (string, DWORD, binary…). Cú pháp:
New-ItemProperty -Path “HKLM:SOFTWAREMyCompany” -Name “SettingName” -Value “SomeData” -PropertyType String -Force
Tham số -PropertyType quy định kiểu dữ liệu: String, ExpandString, Binary, DWord, MultiString, QWord. Nếu bạn muốn thay đổi giá trị đã tồn tại, dùng Set-ItemProperty thay vì New-ItemProperty.
Hướng dẫn từng bước tạo Registry key bằng PowerShell

Bước 1: Mở PowerShell với quyền Administrator
Để tạo key trong HKLM (HKEY_LOCAL_MACHINE), bạn cần quyền quản trị. Nhấp chuột phải vào PowerShell và chọn “Run as administrator”. Nếu tạo trong HKCU (HKEY_CURRENT_USER), không cần quyền admin nhưng lưu ý key chỉ ảnh hưởng đến người dùng hiện tại.
Bước 2: Kiểm tra key đã tồn tại chưa
Trước khi tạo, nên kiểm tra bằng lệnh Test-Path:
$path = “HKLM:SOFTWAREMyApp”
if (!(Test-Path $path)) {
New-Item -Path $path -ItemType Directory -Force
} else {
Write-Host “Key already exists”
}
Điều này tránh việc tạo trùng gây lỗi hoặc xóa dữ liệu cũ.
Bước 3: Tạo key chính
Chạy lệnh New-Item. Ví dụ tạo key “MyCompany” trong SOFTWARE:
New-Item -Path “HKLM:SOFTWAREMyCompany” -ItemType Directory -ErrorAction Stop
Thêm -ErrorAction Stop để dừng script nếu có lỗi (ví dụ không có quyền).
Bước 4: Tạo key con (subkey)
Dùng Remove-Item -Path “HKLM:SOFTWAREMyKey” -Recurse -Force. Tham số -Recurse xóa luôn các key con.
Tôi có thể tạo registry key trên máy tính từ xa không?
Có, sử dụng New-PSDrive với Registry provider và tham số -Credential, hoặc dùng Invoke-Command -ComputerName Server01 { New-Item -Path “HKLM:SOFTWARETest” -ItemType Directory }.
Làm sao để tạo nhiều key cùng lúc?
Dùng vòng lặp foreach hoặc pipeline. Ví dụ: $keys = @(“Key1″,”Key2″,”Key3”); $keys | ForEach-Object { New-Item -Path “HKLM:SOFTWARE$_” -ItemType Directory }
Sự khác nhau giữa New-ItemProperty và Set-ItemProperty là gì?
New-ItemProperty tạo giá trị mới. Nếu giá trị đã tồn tại, nó báo lỗi (trừ khi dùng -Force, nhưng vẫn tạo mới?). Set-ItemProperty dùng để cập nhật giá trị hiện có. Nếu chưa tồn tại, Set-ItemProperty cũng tạo mới?
Thực tế: Set-ItemProperty có thể tạo mới nếu giá trị chưa tồn tại (giống New-ItemProperty) nhưng không cần -Force. Tuy nhiên, New-ItemProperty yêu cầu key đã tồn tại; Set-ItemProperty có thể tạo cả key cha?
Quan trọng: New-ItemProperty chỉ làm việc nếu key đã tồn tại. Set-ItemProperty cũng yêu cầu key tồn tại, và nếu value đã có, nó ghi đè. Nếu value chưa có, nó tạo mới. Vì vậy, nhiều admin dùng Set-ItemProperty thay cho New-ItemProperty để tránh lỗi khi value đã tồn tại.
Kiểu dữ liệu ExpandString dùng khi nào?
ExpandString cho phép sử dụng biến môi trường (ví dụ %USERPROFILE%) trong giá trị. Khi đọc, Windows sẽ tự động mở rộng biến. Rất hữu ích cho các đường dẫn động.
Làm sao để kiểm tra quyền hiện tại có thể ghi registry không?
Dùng Test-Path -Path “HKLM:SOFTWARE” -IsValid hoặc thử tạo key ẩn rồi xóa. Cũng có thể kiểm tra ACL: Get-Acl -Path “HKLM:SOFTWARE” | fl
Kết luận

Cách tạo registry key bằng PowerShell là kỹ năng thiết yếu cho quản trị viên hệ thống và nhà phát triển phần mềm. Với các lệnh New-Item, New-ItemProperty, và các kỹ thuật kiểm tra, bạn có thể tự động hóa việc cấu hình trên hàng trăm máy chỉ với vài dòng script. Điểm mấu chốt là luôn kiểm tra sự tồn tại, sử dụng đúng kiểu dữ liệu, và chạy với quyền thích hợp. Kết hợp với backup và logging, bạn sẽ tránh được các rủi ro tiềm ẩn. Hãy bắt đầu áp dụng ngay bằng cách viết script tạo một key đơn giản, sau đó mở rộng sang các kịch bản phức tạp hơn. PowerShell không chỉ giúp bạn tiết kiệm thời gian mà còn mang lại tính chính xác và khả năng tái sử dụng cao trong quản lý Registry Windows.







