Tìm kiếm trang web

Nhận tài khoản người dùng cục bộ theo cách PowerShell


Có vẻ như tôi luôn thấy các yêu cầu và sự cố khi nhận tài khoản người dùng cục bộ bằng PowerShell. Tuy nhiên, mặc dù chúng tôi đang sử dụng PowerShell 5.0, Microsoft chưa bao giờ phát hành một bộ lệnh ghép ngắn để quản lý tài khoản người dùng cục bộ. Vì vậy, nhiều người trong chúng ta đã phải dùng đến việc tạo ra các công cụ của riêng mình. Bây giờ tôi đã có phiên bản mới nhất của chức năng lấy thông tin tài khoản người dùng cục bộ từ các máy tính từ xa.

Hàm này sử dụng một loại phím tắt bằng cách sử dụng bộ tăng tốc loại ADSI để kết nối với máy tính từ xa. Đây là kỹ thuật tương tự mà chúng tôi đã sử dụng trong thời kỳ VBScript. Tuy nhiên, kỹ thuật này không có lợi cho các thông tin xác thực thay thế và yêu cầu các giao thức cũ như RPC và DCOM. Nhưng đó không hẳn là một vấn đề vì tôi sẽ chỉ cho bạn sau vài phút nữa.

Hàm này kết nối với máy tính từ xa và sau đó sử dụng một số đối tượng COM để liệt kê thông tin tài khoản cục bộ. Theo mặc định, lệnh sẽ liệt kê tất cả tài khoản người dùng.

Hoặc bạn có thể chỉ định một tên tài khoản người dùng.

Chức năng này chấp nhận đầu vào đường ống giúp dễ dàng kiểm tra nhiều máy chủ cùng một lúc.

import-csv s:\computers.csv | get-localuser Administrator | Select Computername,User,Enabled,PasswordAgeDays

Lưu ý quan trọng: nếu bạn truy vấn bộ điều khiển miền, bạn sẽ nhận được tài khoản miền.

Hãy nhớ rằng tôi đã đề cập đến lệnh này sử dụng các giao thức cũ. Một cách khác là sử dụng tính năng điều khiển từ xa PowerShell và Invoke-Command. Trước tiên, hãy tạo các PSSessions cần thiết, sử dụng thông tin xác thực thay thế nếu cần.

$s = new-pssession -computer chi-core01,chi-web02,chi-fp02

Sau đó lấy scriptblock của hàm.

$sb = ${function:Get-localuser}

Bây giờ bạn có thể sử dụng điều này với Invoke-Command:

invoke-command -scriptblock $sb -session $s -hidecomputername | select * -exclude RunspaceID | out-gridview -title "Local"

Hoặc truy vấn một tài khoản được chỉ định:

invoke-command -scriptblock $sb -session $s -hidecomputername -ArgumentList Administrator

Bạn có thể tìm thấy tập lệnh hoàn chỉnh, bao gồm bí danh trên Github.

:

Tôi hy vọng bạn sẽ cho tôi biết suy nghĩ của bạn và bạn thấy đây là một bổ sung hữu ích cho hộp công cụ PowerShell của mình. Nếu bạn gặp vấn đề, vui lòng đăng chúng lên trang Gist.

Bài viết liên quan