Bỏ qua tới nội dung
tsudev SWICO

Hướng dẫn sử dụng

Nhấp đúp swico.exe là quét đầy đủ và mở báo cáo khi xong. Phần dưới dành cho người cần điều khiển chi tiết hơn: chọn phạm vi quét, chạy im lặng, đọc mã thoát, gom kết quả nhiều máy.

Đánh số phiên bản

Mỗi bản phát hành mang tên tsudev-swico_YY.M.DDNN_x64-setup.exe - CalVer, phiên bản chính là ngày phát hành, hai chữ số cuối là thứ tự bản trong ngày:

Tên file cài đặt Nghĩa
tsudev-swico_26.8.1901_x64-setup.exe bản thứ 01 ngày 19/08/2026
tsudev-swico_26.8.1902_x64-setup.exe bản thứ 02 cùng ngày 19/08/2026
tsudev-swico_26.9.0301_x64-setup.exe bản thứ 01 ngày 03/09/2026

Ngày và số thứ tự đều đệm đủ hai chữ số. Đó không phải chuyện thẩm mỹ: thành phần thứ ba được đọc bằng phép chia cho 100, nên 26.9.0901 là ngày 9 bản 1, còn 26.9.91 sẽ đọc ra ngày 0 bản 91 - một số hiệu không tồn tại. Nhờ đệm đủ, thứ tự so sánh 1901 < 1902 < 2001 luôn khớp thứ tự thời gian.

Ưu điểm: nhìn tên file là biết ngay bản đó cũ hay mới, không cần tra bảng.

Hai bản phát hành đầu tiên (26.8.18, 26.8.18.2) dùng quy ước cũ và giữ nguyên tên. Công cụ đọc được cả hai dạng.

Quy ước đầy đủ, kèm những gì bị cấm và vì sao: docs/VERSIONING.md. Quy ước gốc của hệ sinh thái: .standards/docs/DESIGN_SYSTEM.md mục 6.

Cách dùng

swico.exe                          Quét đầy đủ, mở báo cáo khi xong
swico.exe --scope license          Chỉ kiểm tra bản quyền
swico.exe --scope hardware         Chỉ thu thập phần cứng
swico.exe --silent --sfc           Quét sâu, không mở trình duyệt (GPO/RMM)
swico.exe -o D:\BaoCao --silent    Lưu vào thư mục chỉ định
swico.exe --rules .\luat-moi.json  Quét bằng bộ luật cập nhật
swico.exe --no-verdict-exit        Kết luận không ảnh hưởng mã thoát
swico.exe --version                Xem phiên bản
swico.exe --help                   Xem toàn bộ tham số

Công cụ yêu cầu quyền Administrator để đọc trạng thái bản quyền, Defender và chạy DISM/SFC. Windows sẽ tự hiện hộp thoại UAC.

Theo dõi tiến trình khi đang quét

Một lần quét đầy đủ mất từ vài chục giây tới hơn 15 phút (nếu bật --sfc). Công cụ in từng bước một, ngay khi bước đó chạy xong, kèm thời gian thật của chính nó - không dồn lại tới cuối:

Dưới đây là đầu ra thật, chép từ log CI chạy trên runner Windows (run 32201733164):

[2] Đang thu thập cấu hình phần cứng...
    ✓ Tổng quan thiết bị   1.3 s
    ✓ CPU   1.0 s
    ✓ RAM   0.0 s
    ✓ Ổ đĩa   0.0 s
    ✓ Phân vùng   0.0 s
    ✓ Card đồ họa   0.0 s
    ✓ Card mạng   0.0 s
    ✓ Driver lỗi   0.1 s
      DISM CheckHealth đang chạy (thường dưới 5 giây, tối đa 3 phút)...
    ✓ Toàn vẹn file hệ thống   0.9 s
    ✓ Windows Defender   0.2 s
    ✓ Ghi báo cáo ra đĩa   0.0 s

Trên terminal thật, dòng đang chạy còn có con quay (⠹) quay tại chỗ trước khi được thay bằng ✓ - log CI không thể hiện được điều đó vì đầu ra bị chuyển hướng nên con quay tự tắt (xem đoạn dưới).

Con quay cho biết công cụ đang chạy chứ không treo - đây là khác biệt mà một cột thời gian đứng yên không nói được. Những bước chạy lâu (DISM, sfc) còn tự báo thời gian dự kiến.

Khi đầu ra bị chuyển hướng (ghi ra file log, đưa qua ống dẫn, chạy trong RMM/CI), công cụ tự bỏ con quay và mã màu - chỉ còn mỗi bước một dòng sạch, để không có ký tự điều khiển nào lọt vào file log.

Ctrl+C dừng ngay lập tức, kể cả khi sfc đang chạy dở: tiến trình con bị kết thúc, con trỏ terminal được trả về bình thường, những mục đã quét xong vẫn nằm nguyên trên màn hình, và công cụ thoát với mã 130.

Mã thoát (cho tích hợp RMM/giám sát)

Chia hai nhóm có chủ đích, vì hệ thống giám sát cần phân biệt "công cụ đọc thiếu dữ liệu" với "máy này có vấn đề bản quyền".

Sức khoẻ công cụ - công cụ chạy có trọn vẹn không:

Mã Ý nghĩa
0 Hoàn tất, không phát hiện vấn đề
1 Hoàn tất nhưng thiếu dữ liệu ở một số mục (báo cáo chính vẫn đầy đủ)
2 Lỗi nghiêm trọng, không tạo được báo cáo
3 Tham số dòng lệnh không hợp lệ

Kết luận đánh giá - máy được quét có vấn đề không:

Mã Ý nghĩa
10 Kết luận mức cảnh báo (ví dụ: Office chưa kích hoạt)
20 Kết luận mức nghiêm trọng (dấu hiệu kích hoạt trái phép)
30 Cần cập nhật trước khi quét (chỉ ở chế độ --silent)
130 Người dùng huỷ bằng Ctrl+C (quy ước POSIX 128 + SIGINT)

Thứ tự ưu tiên khi nhiều điều kiện cùng xảy ra: 2 > 3 > 130 > 20 > 10 > 1 > 0. Kết luận đánh giá thắng "thiếu dữ liệu" vì nó cần hành động hơn.

Nếu hệ RMM của bạn coi mọi mã khác 0 là script lỗi, thêm --no-verdict-exit để chỉ dùng nhóm mã sức khoẻ công cụ.

Kết quả đầu ra

Bốn định dạng cùng lúc: HTML để đọc, JSON để tích hợp, XLSX và CSV để xử lý tiếp.

<thư mục chứa exe>/
  tsudev-bao-cao-ra-quet-<Máy>-<Ngày>/          ← cấp 2
    tsudev-tong-hop.html                         ← trang tổng hợp mọi máy
    tsudev-ket-qua-ra-quet-<Máy>-<Ngày>/         ← cấp 3
      Windows_License_Audit_*.html / .json / .xlsx / .csv
      Windows_Hardware_Inventory_*.html / .json / .xlsx / .csv

Quét nhiều máy: copy các thư mục cấp 3 từ máy khác vào cấp 2 → tsudev-tong-hop.html tự đọc đệ quy (không giới hạn độ sâu) và gom lại.

Tự động cập nhật

Khi khởi động, công cụ hỏi GitHub xem đã có phiên bản mới chưa. Nếu có, hiện hộp thoại một nút "Cập nhật" - tải, đối chiếu SHA-256, rồi chạy trình cài đặt. Phải cập nhật xong mới quét tiếp, vì kết luận dựa trên bộ luật phát hiện và một bộ luật lỗi thời có thể bỏ sót dấu hiệu mới.

Nếu không kiểm tra được (mất mạng, tường lửa chặn) thì công cụ vẫn quét bình thường kèm ghi chú. Chặn ở đây sẽ làm công cụ vô dụng đúng ở nơi cần nhất.

Ở chế độ --silent không hiện hộp thoại - thoát với mã 30 để hệ thống triển khai tự xử lý. Tắt hẳn bằng --no-update-check.

Chi tiết: docs/UPDATES.md.

Nguồn trang: README.md trên GitHub.