Triển khai hàng loạt
Trang này dành cho quản trị viên cần rà soát hàng chục, hàng trăm máy. Mọi ví dụ dùng tham số có sẵn trong swico.exe --help.
Nguyên tắc
- Luôn thêm
--silent: không mở trình duyệt, không hiện hộp thoại cập nhật. Có bản mới thì chương trình thoát với mã30để hệ thống triển khai tự xử lý. - Chạy bằng tài khoản có quyền quản trị (SYSTEM trong GPO, RMM). Thiếu quyền thì vẫn có báo cáo nhưng thiếu mục, mã thoát là
1. - Thêm
--no-update-checknếu máy đích không ra được Internet, để không mất 6 giây chờ mỗi máy. --sfclàm lần quét kéo dài 5 tới 15 phút. Chỉ bật khi thật sự cần kiểm toàn vẹn tệp hệ thống.
Gom về thư mục chung
Mỗi máy ghi kết quả vào một thư mục con mang tên máy và ngày quét, nên nhiều máy ghi chung một thư mục mạng không đè lên nhau. Sau đó chạy lại chương trình ở bất kỳ máy nào trỏ vào thư mục đó, hoặc mở tsudev-tong-hop.html mới nhất: trang tổng hợp đọc đệ quy mọi báo cáo bên dưới.
swico.exe --silent -o \\may-chu\ra-soat$\2026-11 Báo cáo chứa dữ liệu của máy thật: tên máy, số serial, địa chỉ MAC, danh sách phần mềm. Giới hạn quyền đọc thư mục chung cho đúng người cần xem, và xóa khi hết mục đích sử dụng.
GPO (Group Policy)
- Đặt
swico.exevào một thư mục chia sẻ chỉ-đọc, ví dụ\\may-chu\netlogon\swico\. - Tạo thư mục kết quả với quyền ghi cho tài khoản máy (Domain Computers).
- Computer Configuration, Policies, Windows Settings, Scripts, Startup: thêm script dưới đây.
@echo off
"\\may-chu\netlogon\swico\swico.exe" --silent --no-update-check -o "\\may-chu\ra-soat$"
exit /b 0 Script khởi động chạy bằng SYSTEM nên có sẵn quyền quản trị, không hiện UAC.
RMM, Intune, PowerShell từ xa
PowerShell, chạy trên một máy rồi lấy mã thoát:
$p = Start-Process -FilePath 'C:\Tools\swico.exe' `
-ArgumentList '--silent','-o','C:\ProgramData\swico-ket-qua' `
-Wait -PassThru -NoNewWindow
exit $p.ExitCode Chạy trên nhiều máy cùng lúc bằng PowerShell Remoting:
$may = Get-Content .\danh-sach-may.txt
Invoke-Command -ComputerName $may -ScriptBlock {
& 'C:\Tools\swico.exe' --silent --no-update-check -o 'C:\ProgramData\swico-ket-qua'
[pscustomobject]@{ May = $env:COMPUTERNAME; MaThoat = $LASTEXITCODE }
} | Format-Table May, MaThoat Nếu hệ RMM coi mọi mã khác 0 là script lỗi, thêm --no-verdict-exit để chỉ dùng nhóm mã sức khỏe công cụ.
Đọc mã thoát
| Mã | Nghĩa | Nên làm |
|---|---|---|
| 0 | Hoàn tất, không phát hiện vấn đề | Không cần làm gì |
| 1 | Hoàn tất nhưng thiếu dữ liệu ở một số mục | Kiểm tra quyền quản trị, xem mục Cảnh báo trong báo cáo |
| 2 | Lỗi nghiêm trọng, không tạo được báo cáo | Kiểm tra quyền ghi thư mục đầu ra |
| 3 | Tham số dòng lệnh không hợp lệ | Sửa lệnh, xem --help |
| 10 | Kết luận mức cảnh báo | Xem báo cáo, ví dụ Office chưa kích hoạt |
| 20 | Kết luận mức nghiêm trọng | Ưu tiên xem xét: có dấu hiệu kích hoạt trái phép |
| 30 | Cần cập nhật trước khi quét | Cài bản mới rồi chạy lại |
| 130 | Người dùng hủy bằng Ctrl+C | Chạy lại |
Nhiều điều kiện cùng xảy ra thì ưu tiên 2 > 3 > 130 > 20 > 10 > 1 > 0.
Đọc kết quả JSON
Mỗi báo cáo HTML có một tệp .json cùng tên, theo lược đồ phiên bản 3.0. Lọc nhanh các máy có kết luận nghiêm trọng:
Get-ChildItem \\may-chu\ra-soat$ -Recurse -Filter 'Windows_License_Audit_*.json' |
ForEach-Object { Get-Content $_.FullName -Raw | ConvertFrom-Json } |
Where-Object VerdictLevel -eq 'Bad' |
Select-Object ComputerName, ScanTime, VerdictText, @{n='Diem'; e={ $_.RiskScore.Value }} Xem mẫu tệp JSON thật ở trang Báo cáo mẫu.