Windows: tìm ra ai đã đăng nhập ở đâu

Windows: tìm ra ai đã đăng nhập ở đâu
- Ồ, không có tác dụng gì với tôi cả, giúp tôi với!
- Đừng lo lắng, chúng tôi sẽ giải quyết mọi việc ngay bây giờ. Đặt tên máy tính của bạn...
(kinh điển cùng thể loại từ cuộc gọi đến hỗ trợ kỹ thuật)

Thật tốt nếu bạn có một công cụ như BgInfo hoặc người dùng của bạn biết về phím tắt Windows+Pause/Break và biết cách nhấn nó. Thậm chí có những mẫu vật hiếm hoi đã tìm được tên chiếc xe của họ. Nhưng thường thì người gọi, ngoài vấn đề chính của mình, còn có vấn đề thứ hai: tìm ra tên/địa chỉ IP của máy tính. Và thường thì việc giải quyết vấn đề thứ hai này mất nhiều thời gian hơn vấn đề thứ nhất (và bạn chỉ cần thay đổi hình nền hoặc trả về phím tắt bị thiếu :).
Nhưng sẽ dễ chịu hơn nhiều khi nghe những điều như:
- Tatyana Sergeevna, đừng lo, tôi đã kết nối rồi...


Và bạn không cần nhiều cho việc này.
Chuyên gia hỗ trợ kỹ thuật chỉ cần ghi nhớ tên các máy và nhớ ai làm việc cho máy nào.
Trước khi mô tả giải pháp mà chúng tôi hiện đang sử dụng, tôi sẽ xem xét ngắn gọn các lựa chọn khác để có thể phê bình sâu sắc và giải thích lựa chọn của mình.

  1. Thông tin Bg, Thông tin máy tính để bàn và những thứ tương tự. Có nhiều tiền thì có tiền trả. Vấn đề là thông tin kỹ thuật được hiển thị trên màn hình: tên máy, địa chỉ IP, thông tin đăng nhập, v.v. Trong Thông tin màn hình, bạn thậm chí có thể thu gọn biểu đồ hiệu suất lên một nửa màn hình.
    Điều tôi không thích là đối với cùng một Bginfo chẳng hạn, người dùng cần thu nhỏ các cửa sổ để xem dữ liệu cần thiết. Tôi và đồng nghiệp cũng đã hơn một lần quan sát tại BgInfo hiện vật đặc trưng, khi văn bản mới được hiển thị trên văn bản cũ.
    Một số người dùng tỏ ra khó chịu vì quản trị viên vẽ hình 192.168.0.123 đáng sợ trên mặt một con mèo trải dài trên màn hình, làm hỏng tính thẩm mỹ của hình nền và tất nhiên, điều này làm mất tinh thần làm việc một cách khủng khiếp và giết chết hoàn toàn tinh thần làm việc .
  2. Nhãn là “Tôi là ai” (đừng cố thêm dấu chấm hỏi vào cuối :). Một lối tắt cổ điển trên màn hình nền, phía sau ẩn một tập lệnh gọn gàng hoặc không gọn gàng hiển thị thông tin cần thiết dưới dạng hộp thoại. Đôi khi, thay vì một phím tắt, họ lại đặt chính tập lệnh đó trên màn hình nền, điều mà IMHO cho là một cách cư xử tồi.
    Điểm bất lợi là để khởi chạy phím tắt, như trong trường hợp đầu tiên, bạn cần thu nhỏ tất cả các cửa sổ đang mở (chúng tôi không tính đến những người may mắn có cửa sổ solitaire duy nhất mở trên máy làm việc của họ). Nhân tiện, người dùng của bạn có biết nhấp vào đâu để thu nhỏ tất cả các cửa sổ không? Đúng rồi, một ngón tay vào mắt quản trị viên.

Giới hạn cũng gợi ý rằng cả hai phương pháp được mô tả ở trên đều có nhược điểm chính là người dùng liên quan đến việc lấy thông tin, họ có thể bị mù, ngu ngốc hoặc thậm chí nói dối.
Tôi sẽ không xem xét lựa chọn nâng cao trình độ máy tính khi mọi người đều biết nơi tra cứu tên máy của họ trong Windows: đó là một mục đích cao cả, nhưng rất khó khăn. Và nếu công ty có tình trạng luân chuyển nhân viên thì nó hoàn toàn bị hủy hoại. Tôi có thể nói gì đây, trong hầu hết các trường hợp, họ thậm chí không nhớ thông tin đăng nhập của mình.

Tôi trút hết tâm hồn mình, và bây giờ vào vấn đề chính.
Ý tưởng của một cư dân Khabrov được lấy làm cơ sở Mittel của của bài viết này.
Bản chất của ý tưởng là khi người dùng đăng nhập vào Windows, tập lệnh đăng nhập sẽ nhập thông tin cần thiết (thời gian và tên máy) vào một thuộc tính nhất định của tài khoản người dùng. Và khi bạn đăng xuất khỏi hệ thống, một kịch bản đăng xuất tương tự sẽ được thực thi.

Bản thân tôi thích ý tưởng này nhưng có một số điều tôi không hài lòng khi thực hiện.

  1. Chính sách nhóm chỉ định các tập lệnh đăng nhập và đăng xuất cho người dùng, áp dụng cho toàn bộ miền, do đó các tập lệnh sẽ chạy trên bất kỳ máy nào mà người dùng đăng nhập. Nếu bạn sử dụng các giải pháp thiết bị đầu cuối cùng với máy trạm (ví dụ: các sản phẩm Microsoft RDS hoặc Citrix), phương pháp này sẽ bất tiện.
  2. Dữ liệu được nhập vào thuộc tính Bộ phận của tài khoản người dùng mà người dùng thông thường có quyền truy cập chỉ đọc. Ngoài thuộc tính tài khoản người dùng, tập lệnh còn thực hiện các thay đổi đối với thuộc tính Phòng ban của tài khoản máy tính mà theo mặc định, người dùng cũng không thể thay đổi. Do đó, để giải pháp phát huy tác dụng, tác giả đề xuất thay đổi các tiêu chuẩn cài đặt bảo mật cho đối tượng AD.
  3. Định dạng ngày phụ thuộc vào cài đặt bản địa hóa trên máy mục tiêu, do đó, từ một máy, chúng tôi có thể nhận được ngày 10 tháng 2018 năm 14 là 53:11 và từ một máy khác là 10/18/2 53:XNUMX chiều

Để loại bỏ những thiếu sót này, những điều sau đây đã được thực hiện.

  1. GPO không được liên kết với một miền mà với một OU có máy (tôi tách người dùng và máy thành các OU khác nhau và tư vấn cho những người khác). Hơn nữa, đối với chế độ xử lý chính sách loopback chế độ được thiết lập hợp nhất.
  2. Tập lệnh sẽ chỉ ghi dữ liệu vào tài khoản người dùng trong thuộc tính Thông tin, mà người dùng có thể thay đổi độc lập cho tài khoản của mình.
  3. Đã thay đổi đoạn mã tạo giá trị thuộc tính

Bây giờ các kịch bản trông như thế này:
LưuLogonInfoToAdUserAttrib.vbs

On Error Resume Next
Set wshShell = CreateObject("WScript.Shell")
strComputerName = wshShell.ExpandEnvironmentStrings("%COMPUTERNAME%")
Set adsinfo = CreateObject("ADSystemInfo")
Set oUser = GetObject("LDAP://" & adsinfo.UserName)
strMonth = Month(Now())
If Len(strMonth) < 2 then
  strMonth = "0" & strMonth
End If
strDay = Day(Now())
If Len(strDay) < 2 then
  strDay = "0" & strDay
End If
strTime = FormatDateTime(Now(),vbLongTime)
If Len(strTime) < 8 then
  strTime = "0" & strTime
End If
strTimeStamp = Year(Now()) & "/" & strMonth & "/" & strDay & " " & strTime
oUser.put "info", strTimeStamp & " <logon>" & " @ " & strComputerName
oUser.Setinfo

LưuLogoffInfoToAdUserAttrib.vbs

On Error Resume Next
Set wshShell = CreateObject("WScript.Shell")
strComputerName = wshShell.ExpandEnvironmentStrings("%COMPUTERNAME%")
Set adsinfo = CreateObject("ADSystemInfo")
Set oUser = GetObject("LDAP://" & adsinfo.UserName)
strMonth = Month(Now())
If Len(strMonth) < 2 then
  strMonth = "0" & strMonth
End If
strDay = Day(Now())
If Len(strDay) < 2 then
  strDay = "0" & strDay
End If
strTime = FormatDateTime(Now(),vbLongTime)
If Len(strTime) < 8 then
  strTime = "0" & strTime
End If
strTimeStamp = Year(Now()) & "/" & strMonth & "/" & strDay & " " & strTime
oUser.put "info", strTimeStamp & " <logoff>" & " @ " & strComputerName
oUser.Setinfo

Ai là người đầu tiên tìm ra tất cả những điểm khác biệt giữa script Logon và Logoff sẽ được cộng thêm nghiệp chướng. 🙂
Ngoài ra, để có được thông tin trực quan, tập lệnh PS nhỏ sau đây đã được tạo:
Nhận-UsersByPCsInfo.ps1

$OU = "OU=MyUsers,DC=mydomain,DC=com"
Get-ADUser -SearchBase $OU -Properties * -Filter * | Select-Object DisplayName, SamAccountName, info | Sort DisplayName | Out-GridView -Title "Информация по логонам" -Wait

Tổng cộng, mọi thứ đều được cấu hình một hai ba:

  1. tạo một GPO với các cài đặt cần thiết và liên kết nó với bộ phận với các máy trạm của người dùng:
    Windows: tìm ra ai đã đăng nhập ở đâu
  2. đi uống trà nhé (nếu AD có lượng người dùng nhiều thì bạn cần nhiều trà :)
  3. chạy tập lệnh PS và nhận kết quả:
    Windows: tìm ra ai đã đăng nhập ở đâu
    Ở đầu cửa sổ có một bộ lọc tiện lợi trong đó bạn có thể chọn dữ liệu dựa trên giá trị của một hoặc nhiều trường. Nhấp vào các cột trong bảng sẽ sắp xếp các bản ghi theo giá trị của các trường tương ứng.

Chúng tôi có thể “đóng gói” giải pháp của mình một cách đẹp mắt.
Windows: tìm ra ai đã đăng nhập ở đâu
Để thực hiện việc này, chúng tôi sẽ thêm một lối tắt để khởi chạy tập lệnh dành cho các chuyên gia hỗ trợ kỹ thuật, những người sẽ có nội dung như thế này trong trường “đối tượng”:
powershell.exe -NoLogo -ExecutionPolicy Bypass -File "servershareScriptsGet-UsersByPCsInfo.ps1"

Nếu có nhiều nhân viên hỗ trợ kỹ thuật, bạn có thể phân phối phím tắt bằng cách sử dụng KHÔNG QUAN TRỌNG.

Một vài ý kiến ​​cuối cùng.

  • Mô-đun Active Directory cho PowerShell phải được cài đặt trên máy khởi chạy tập lệnh PS (để thực hiện việc này, chỉ cần thêm các công cụ quản trị AD trong các thành phần Windows).
  • Theo mặc định, người dùng không thể chỉnh sửa hầu hết các thuộc tính trong tài khoản của mình. Hãy ghi nhớ điều này nếu bạn quyết định sử dụng một thuộc tính khác ngoài Thông tin.
  • Thông báo cho tất cả các đồng nghiệp có liên quan về thuộc tính bạn sẽ sử dụng. Ví dụ, giống nhau Thông tin được sử dụng để thêm ghi chú một cách tương tác vào hộp thư của người dùng trong bảng quản trị Exchange Server và ai đó có thể dễ dàng ghi đè lên nó hoặc cảm thấy buồn khi thông tin họ thêm vào bị tập lệnh của bạn ghi đè.
  • Nếu bạn có nhiều site Active Directory thì hãy cho phép độ trễ trong quá trình sao chép. Ví dụ: nếu bạn muốn nhận thông tin cập nhật về người dùng từ trang AD A và chạy tập lệnh từ máy từ trang AD B, bạn có thể thực hiện việc này:
    Get-ADUser -Server DCfromSiteA -SearchBase $OU -Properties * -Filter * | Select-Object DisplayName, SamAccountName, info | Sort DisplayName | Out-GridView -Title "Информация по логонам" -Wait

    DCtừSiteA — tên của bộ điều khiển miền của trang A (theo mặc định, lệnh ghép ngắn Get-AdUser kết nối với bộ điều khiển miền gần nhất)

Windows: tìm ra ai đã đăng nhập ở đâu

Nguồn hình ảnh

Tôi sẽ rất biết ơn nếu bạn có thể thực hiện cuộc khảo sát ngắn dưới đây.

Chỉ những người dùng đã đăng ký mới có thể tham gia khảo sát. Đăng nhập, xin vui lòng.

Bạn dùng gì?

  • bginfo, Thông tin máy tính để bàn, v.v. (phần mềm miễn phí)

  • tương tự trả phí của bginfo

  • Mình sẽ làm như trong bài

  • không liên quan, bởi vì Tôi sử dụng VDI/RDS, v.v.

  • Tôi chưa sử dụng bất cứ thứ gì, nhưng tôi đang nghĩ về nó

  • Tôi không cần thu thập dữ liệu đó

  • khác (chia sẻ trong phần bình luận)

112 người dùng bình chọn. 39 người dùng bỏ phiếu trắng.

Nguồn: www.habr.com

Thêm một lời nhận xét