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

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-check nếu máy đích không ra được Internet, để không mất 6 giây chờ mỗi máy.
  • --sfc là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)

  1. Đặt swico.exe vào một thư mục chia sẻ chỉ-đọc, ví dụ \\may-chu\netlogon\swico\.
  2. Tạo thư mục kết quả với quyền ghi cho tài khoản máy (Domain Computers).
  3. 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ĩaNên làm
0Hoàn tất, không phát hiện vấn đềKhông cần làm gì
1Hoàn tất nhưng thiếu dữ liệu ở một số mụcKiểm tra quyền quản trị, xem mục Cảnh báo trong báo cáo
2Lỗi nghiêm trọng, không tạo được báo cáoKiểm tra quyền ghi thư mục đầu ra
3Tham số dòng lệnh không hợp lệSửa lệnh, xem --help
10Kết luận mức cảnh báoXem báo cáo, ví dụ Office chưa kích hoạt
20Kế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
30Cần cập nhật trước khi quétCài bản mới rồi chạy lại
130Người dùng hủy bằng Ctrl+CChạ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.