Windows: cari tahu siapa yang login di mana

Windows: cari tahu siapa yang login di mana
- Oh, tidak ada yang berhasil untukku, tolong!
- Jangan khawatir, kami akan memperbaiki semuanya sekarang. Berikan nama komputer Anda...
(genre klasik dari panggilan hingga dukungan teknis)

Ada baiknya jika Anda memiliki alat ala BgInfo atau pengguna Anda mengetahui tentang pintasan Windows+Pause/Break dan mengetahui cara menekannya. Bahkan ada spesimen langka yang berhasil mengetahui nama mobilnya. Namun seringkali penelepon, selain masalah utamanya, memiliki masalah kedua: mencari tahu nama/alamat IP komputer. Dan seringkali dibutuhkan lebih banyak waktu untuk menyelesaikan masalah kedua ini daripada yang pertama (dan Anda hanya perlu mengganti wallpaper atau mengembalikan pintasan yang hilang :).
Tapi jauh lebih menyenangkan mendengar sesuatu seperti:
- Tatyana Sergeevna, jangan khawatir, saya sudah terhubung...


Dan Anda tidak perlu banyak untuk ini.
Seorang spesialis dukungan teknis hanya perlu mengingat nama-nama mesin dan mengingat siapa yang bekerja untuk apa.
Sebelum menjelaskan solusi yang kami gunakan saat ini, saya akan melihat secara singkat opsi lain sehingga saya dapat mengkritiknya sepenuhnya dan menjelaskan pilihan saya.

  1. Info Bg, Info Desktop dan sejenisnya. Kalau uangnya banyak, ada yang berbayar. Intinya informasi teknis ditampilkan di desktop: nama mesin, alamat IP, login, dll. Di Info Desktop Anda bahkan dapat memasukkan grafik kinerja ke separuh layar.
    Yang tidak saya sukai adalah untuk Bginfo yang sama, misalnya, pengguna perlu meminimalkan jendela untuk melihat data yang diperlukan. Saya dan rekan-rekan saya juga telah mengamati lebih dari satu kali di BgInfo artefak yang khas, ketika teks baru ditampilkan di atas teks lama.
    Beberapa pengguna merasa kesal karena admin menggambar 192.168.0.123 yang menakutkan dengan wajah kucing yang terbentang di desktop, merusak estetika gambar latar belakang, dan, tentu saja, ini sangat menurunkan motivasi dan benar-benar mematikan semangat kerja. .
  2. Label ala β€œSiapa saya” (jangan coba-coba menambahkan tanda tanya di akhir :). Pintasan klasik di desktop, di belakangnya menyembunyikan skrip rapi atau tidak rapi yang menampilkan informasi yang diperlukan dalam bentuk kotak dialog. Kadang-kadang, alih-alih menggunakan pintasan, mereka meletakkan skrip itu sendiri di desktop, yang menurut saya merupakan perilaku yang buruk.
    Kerugiannya adalah untuk meluncurkan pintasan, seperti dalam kasus pertama, Anda perlu meminimalkan semua jendela yang terbuka (kami tidak memperhitungkan orang-orang yang beruntung yang memiliki satu-satunya jendela solitaire yang terbuka di mesin kerja mereka). Ngomong-ngomong, apakah pengguna Anda tahu di mana harus mengeklik untuk meminimalkan semua jendela? Benar sekali, ada jari di mata admin.

Batasan tersebut juga menunjukkan bahwa kedua metode yang dijelaskan di atas memiliki kelemahan utama yaitu pengguna terlibat dalam memperoleh informasi, yang mungkin buta, bodoh, atau bahkan berbohong.
Saya tidak akan mempertimbangkan pilihan untuk meningkatkan literasi komputer, ketika semua orang tahu di mana di Windows untuk mencari nama mesin mereka: ini adalah tujuan mulia, tetapi sangat sulit. Dan jika ada pergantian staf di perusahaan, maka itu benar-benar buruk. Apa yang bisa saya katakan, dalam banyak kasus mereka bahkan tidak mengingat login mereka.

Aku mencurahkan jiwaku, dan sekarang langsung ke pokok persoalan.
Ide tentang penduduk Khabrov dijadikan dasar medium dari artikel ini.
Inti dari idenya adalah ketika pengguna masuk ke Windows, skrip masuk memasukkan informasi yang diperlukan (waktu dan nama mesin) ke dalam atribut tertentu dari akun pengguna. Dan ketika Anda keluar dari sistem, skrip logoff serupa dijalankan.

Saya menyukai idenya sendiri, namun ada beberapa hal yang saya tidak senangi dalam penerapannya.

  1. Kebijakan grup, yang menentukan skrip logon dan logoff untuk pengguna, berlaku untuk seluruh domain, sehingga skrip akan berjalan di mesin mana pun yang digunakan pengguna untuk login. Jika Anda menggunakan solusi terminal bersama dengan workstation (misalnya, produk Microsoft RDS atau Citrix), pendekatan ini akan merepotkan.
  2. Data dimasukkan ke dalam atribut Departemen pada akun pengguna, yang mana rata-rata pengguna memiliki akses baca-saja. Selain atribut akun pengguna, skrip juga membuat perubahan pada atribut Departemen akun komputer, yang secara default juga tidak dapat diubah oleh pengguna. Oleh karena itu, agar solusinya berhasil, penulis menyarankan untuk mengubah standar pengaturan keamanan untuk objek AD.
  3. Format tanggal tergantung pada pengaturan lokalisasi pada mesin target, jadi dari satu mesin kita bisa mendapatkan 10 November 2018 14:53, dan dari mesin lainnya 11/10/18 2:53

Untuk menghilangkan kekurangan tersebut, dilakukan hal berikut.

  1. GPO ditautkan bukan ke domain, tetapi ke OU dengan mesin (saya memisahkan pengguna dan mesin ke dalam OU yang berbeda dan menyarankan yang lain). Apalagi untuk mode pemrosesan kebijakan loopback modus diatur bergabung.
  2. Script hanya akan menulis data ke akun pengguna di atribut Info, yang dapat diubah pengguna secara mandiri untuk akunnya.
  3. Mengubah potongan kode yang menghasilkan nilai atribut

Sekarang skripnya terlihat seperti ini:
SimpanLogonInfoToAdUserAttrib.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

SimpanLogoffInfoToAdUserAttrib.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

Siapa pun yang pertama kali menemukan semua perbedaan antara skrip Logon dan Logoff akan mendapat nilai plus karma. πŸ™‚
Selain itu, untuk memperoleh informasi visual, skrip PS kecil berikut telah dibuat:
Dapatkan-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

Secara total, semuanya dikonfigurasikan satu-dua-tiga:

  1. buat GPO dengan pengaturan yang diperlukan dan tautkan ke departemen dengan stasiun kerja pengguna:
    Windows: cari tahu siapa yang login di mana
  2. ayo minum teh (kalau AD banyak penggunanya maka kamu butuh teh yang banyak :)
  3. jalankan skrip PS dan dapatkan hasilnya:
    Windows: cari tahu siapa yang login di mana
    Di bagian atas jendela terdapat filter praktis di mana Anda dapat memilih data berdasarkan nilai dari satu atau lebih bidang. Mengklik kolom tabel mengurutkan catatan berdasarkan nilai bidang terkait.

Kami dapat β€œmengemas” solusi kami dengan indah.
Windows: cari tahu siapa yang login di mana
Untuk melakukan ini, kami akan menambahkan pintasan untuk meluncurkan skrip untuk spesialis dukungan teknis, yang akan memiliki sesuatu seperti ini di bidang β€œobjek”:
powershell.exe -NoLogo -ExecutionPolicy Bypass -File "servershareScriptsGet-UsersByPCsInfo.ps1"

Jika ada banyak karyawan dukungan teknis, Anda dapat mendistribusikan pintasan menggunakan GPP.

Beberapa komentar terakhir.

  • Modul Direktori Aktif untuk PowerShell harus diinstal pada mesin tempat skrip PS diluncurkan (untuk melakukan ini, cukup tambahkan alat administrasi AD di komponen Windows).
  • Secara default, pengguna tidak dapat mengedit sebagian besar atribut akunnya. Ingatlah hal ini jika Anda memutuskan untuk menggunakan atribut selain Info.
  • Beri tahu semua rekan yang terlibat atribut mana yang akan Anda gunakan. Misalnya sama Info digunakan untuk menambahkan catatan secara interaktif ke kotak surat pengguna di panel admin Exchange Server dan seseorang dapat dengan mudah menimpanya, atau merasa sedih ketika informasi yang mereka tambahkan ditimpa oleh skrip Anda.
  • Jika Anda memiliki beberapa situs Direktori Aktif, berikan kelonggaran untuk penundaan replikasi. Misalnya, jika Anda ingin mendapatkan informasi terkini tentang pengguna dari situs AD A, dan menjalankan skrip dari mesin dari situs AD B, Anda dapat melakukan ini:
    Get-ADUser -Server DCfromSiteA -SearchBase $OU -Properties * -Filter * | Select-Object DisplayName, SamAccountName, info | Sort DisplayName | Out-GridView -Title "Π˜Π½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΡ ΠΏΠΎ Π»ΠΎΠ³ΠΎΠ½Π°ΠΌ" -Wait

    DCdariSitusA β€” nama pengontrol domain situs A (secara default, cmdlet Get-AdUser terhubung ke pengontrol domain terdekat)

Windows: cari tahu siapa yang login di mana

Sumber gambar

Saya akan berterima kasih jika Anda dapat mengikuti survei singkat di bawah ini.

Hanya pengguna terdaftar yang dapat berpartisipasi dalam survei. Masuk, silakan.

Apa yang kamu gunakan?

  • bginfo, info Desktop, dll. (perangkat gratis)

  • analog berbayar dari bginfo

  • Saya akan melakukannya seperti di artikel

  • tidak relevan, karena Saya menggunakan VDI/RDS dll.

  • Saya belum menggunakan apa pun, tapi saya sedang memikirkannya

  • Saya tidak perlu mengumpulkan data seperti itu

  • lainnya (bagikan di komentar)

112 pengguna memilih. 39 pengguna abstain.

Sumber: www.habr.com

Tambah komentar