Tìm kiếm trang web

Nhận số sê-ri của tất cả Máy tính miền bằng PowerShell


Cách đây một thời gian, một trong những người liên hệ LinekIn của tôi và thành viên nhóm Kỹ sư PowerShell của Nhóm LinkedIn của tôi đã đăng một One-Liner lấy số sê-ri của máy tính cục bộ. Cảm ơn bạn vì lời khuyên và gợi ý. Sau một hồi suy nghĩ, tôi nảy ra ý tưởng cố gắng truy xuất tất cả số sê-ri từ tất cả các máy tính trong miền của mình. Hãy giữ điều này dưới dạng bài đăng trên blog này và chia sẻ với những người khác…

Giới thiệu

Để lấy số sê-ri máy tính của bạn, hãy mở Windows PowerShell và chạy

wmic bios get serialnumber

Hoặc sử dụng Get-WmiObject.

Get-WmiObject win32_bios | Select Serialnumber

Còn nữa. Một cách khác là sử dụng Get-CimInstance.

Get-CimInstance Win32_Bios | Select-Object SerialNumber

Điều kiện tiên quyết

Mục tiêu của tôi là truy xuất tất cả các Số sê-ri ở dạng đầu ra thân thiện và dễ đọc với người dùng. Đảm bảo rằng WinRM được bật trên tất cả các máy tính từ xa (Windows Server 2012/2016 được bật theo mặc định, Windows Client bị tắt theo mặc định). Để kiểm tra, bạn có thể kích hoạt nó bằng cách chạy Enable-PSRemoting trong Windows PowerShell. Đối với môi trường lớn, tôi khuyên bạn nên định cấu hình WinRM bằng cách sử dụng Chính sách nhóm:

Chính sách nhóm: Kích hoạt WinRM cho Hệ điều hành máy khách Windows (Windows 10, Windows 8, Windows 7)

Aaaa và … Hành động!

Tất cả các máy tính phải chia sẻ cùng một miền Active Directory. Tôi đang đăng nhập vào một trong các Bộ điều khiển miền của mình. Đây là One-Liner cung cấp cho tôi tất cả số sê-ri của tất cả các máy tính:

(Get-ADComputer -Filter *).Name | Foreach-Object {Get-CimInstance Win32_Bios -ComputerName $_ -ErrorAction SilentlyContinue | Select-Object PSComputerName,SerialNumber}

Để có chế độ xem và đầu ra thân thiện hơn với người dùng, hãy sử dụng Out-GridView…

Và nếu bạn không thích các tiêu đề (ví dụ: PSComputerName), chỉ cần sửa đổi chúng…

(Get-ADComputer -Filter *).Name | Foreach-Object {Get-CimInstance Win32_Bios -ComputerName $_ -ErrorAction SilentlyContinue | Select-Object @{n='Computername'; e={$_.PSComputerName}},SerialNumber}

Phần kết luận

Kịch bản này chắc chắn không phải là sự thay thế cho giải pháp doanh nghiệp như SCCM. Chúng tôi chỉ có thể nhận được số sê-ri từ máy tính đã bật. Với SCCM, tất cả các máy tính sẽ báo cáo trạng thái của chúng theo lịch trình dựa trên thời gian cho Máy chủ SCCM, điều này thoải mái, hữu ích và cập nhật hơn nhiều.

Bài viết liên quan