Windows: scopri chi ha effettuato l'accesso e dove

Windows: scopri chi ha effettuato l'accesso e dove
- Oh, niente funziona per me, aiuto!
- Non preoccuparti, sistemeremo tutto adesso. Dai il nome del tuo computer...
(classici del genere dalle chiamate al supporto tecnico)

È positivo se disponi di uno strumento alla BgInfo o se i tuoi utenti conoscono il collegamento Windows+Pausa/Interrompi e sanno come premerlo. Esistono addirittura rari esemplari che sono riusciti a imparare il nome della propria vettura. Ma spesso, oltre al problema principale, chi chiama ha un secondo problema: scoprire il nome/indirizzo IP del computer. E spesso ci vuole molto più tempo per risolvere questo secondo problema rispetto al primo (e bastava solo cambiare lo sfondo o restituire la scorciatoia mancante :).
Ma è molto più bello sentire qualcosa del tipo:
- Tatyana Sergeevna, non preoccuparti, mi sto già connettendo...


E non ti serve molto per questo.
Uno specialista del supporto tecnico deve solo memorizzare i nomi delle macchine e ricordare chi lavora per cosa.
Prima di descrivere la soluzione che stiamo utilizzando attualmente, esaminerò brevemente le altre opzioni in modo da poterle criticare fino in fondo e spiegare la mia scelta.

  1. BgInfo, Informazioni sul desktop e simili. Se ci sono molti soldi, ci sono quelli pagati. Il punto è che le informazioni tecniche vengono visualizzate sul desktop: nome della macchina, indirizzo IP, login, ecc. In Desktop Info puoi persino comprimere i grafici delle prestazioni su metà dello schermo.
    Quello che non mi piace è che per lo stesso Bginfo, ad esempio, l'utente debba ridurre a icona le finestre per vedere i dati necessari. Anche io e i miei colleghi abbiamo osservato più di una volta su BgInfo manufatto caratteristico, quando il nuovo testo viene visualizzato sopra quello vecchio.
    Alcuni utenti sono infastiditi dal fatto che gli amministratori disegnino uno spaventoso 192.168.0.123 sulla faccia di un gatto disteso sul desktop, rovinando l'estetica dell'immagine di sfondo e, ovviamente, questo è terribilmente demotivante e uccide completamente lo spirito lavorativo .
  2. Un’etichetta alla “Chi sono io” (non provare ad aggiungere un punto interrogativo alla fine :). Un classico collegamento sul desktop, dietro il quale si nasconde uno script accurato o meno accurato che visualizza le informazioni necessarie sotto forma di una finestra di dialogo. A volte, invece di un collegamento, mettono lo script stesso sul desktop, il che, secondo me, è una cattiva educazione.
    Lo svantaggio è che per lanciare la scorciatoia, come nel primo caso, è necessario minimizzare tutte le finestre aperte (non prendiamo in considerazione quei beniamini di fortuna che hanno l'unica finestra del solitario aperta sulla loro macchina da lavoro). A proposito, i tuoi utenti sanno dove fare clic per ridurre a icona tutte le finestre? Esatto, un dito nell'occhio dell'amministratore.

Il cap suggerisce inoltre che entrambi i metodi sopra descritti presentano lo svantaggio principale che nell'ottenimento delle informazioni viene coinvolto l'utente, che può essere cieco, stupido o addirittura mentire.
Non prenderò in considerazione l'opzione di aumentare l'alfabetizzazione informatica, quando tutti sapranno dove cercare in Windows il nome della propria macchina: è una causa nobile, ma molto difficile. E se l’azienda ha un turnover del personale, allora è completamente rovinosa. Che dire, nella maggior parte dei casi non ricordano nemmeno il login.

Ho messo fuori la mia anima e ora veniamo al punto.
Come base è stata presa l'idea di un residente di Khabrov medio di questo articolo.
L'essenza dell'idea è che quando un utente accede a Windows, lo script di accesso inserisce le informazioni necessarie (ora e nome della macchina) in un determinato attributo dell'account utente. E quando ti disconnetti dal sistema, viene eseguito uno script di disconnessione simile.

L’idea in sé mi piaceva, ma c’erano alcune cose di cui non ero soddisfatto nell’implementazione.

  1. I criteri di gruppo, che specificano gli script di accesso e disconnessione per gli utenti, si applicano all'intero dominio, quindi gli script verranno eseguiti su qualsiasi macchina a cui gli utenti accedono. Se si utilizzano soluzioni terminali insieme alle workstation (ad esempio, prodotti Microsoft RDS o Citrix), questo approccio risulterà scomodo.
  2. I dati vengono inseriti nell'attributo Dipartimento dell'account utente, al quale l'utente medio ha accesso di sola lettura. Oltre all'attributo dell'account utente, lo script apporta modifiche anche all'attributo Dipartimento dell'account del computer, che per impostazione predefinita neanche gli utenti possono modificare. Pertanto, affinché la soluzione funzioni, l'autore suggerisce di modificare gli standard delle impostazioni di sicurezza per gli oggetti AD.
  3. Il formato della data dipende dalle impostazioni di localizzazione sul computer di destinazione, quindi da un computer possiamo ottenere 10 novembre 2018 14:53 e da un altro 11/10/18 2:53

Per eliminare queste carenze, è stato fatto quanto segue.

  1. L'oggetto Criteri di gruppo non è collegato a un dominio, ma a un'unità organizzativa con macchine (separare utenti e macchine in unità organizzative diverse e consigliare gli altri). Inoltre, per modalità di elaborazione della politica di loopback la modalità è impostata unire.
  2. Lo script scriverà solo i dati sull'account utente nell'attributo Info, che l'utente può modificare autonomamente per il proprio account.
  3. Modificato il pezzo di codice che genera il valore dell'attributo

Ora gli script appaiono così:
SaveLogonInfoToAdUserAttrib.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

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

Chi per primo troverà tutte le differenze tra gli script di accesso e disconnessione otterrà un vantaggio per il karma. 🙂
Inoltre, per ottenere informazioni visive, è stato creato il seguente piccolo script PS:
Get-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

In totale, tutto è configurato uno-due-tre:

  1. creare un GPO con le impostazioni necessarie e collegarlo al reparto con le postazioni utente:
    Windows: scopri chi ha effettuato l'accesso e dove
  2. andiamo a prendere un tè (se AD ha un gran numero di utenti, allora avrai bisogno di molto tè :)
  3. esegui lo script PS e ottieni il risultato:
    Windows: scopri chi ha effettuato l'accesso e dove
    Nella parte superiore della finestra è presente un comodo filtro nel quale è possibile selezionare i dati in base ai valori di uno o più campi. Facendo clic sulle colonne della tabella si ordinano i record in base ai valori dei campi corrispondenti.

Possiamo “confezionare” magnificamente la nostra soluzione.
Windows: scopri chi ha effettuato l'accesso e dove
Per fare ciò, aggiungeremo una scorciatoia per avviare lo script per gli specialisti del supporto tecnico, che avranno qualcosa di simile nel campo "oggetto":
powershell.exe -NoLogo -ExecutionPolicy Bypass -File "servershareScriptsGet-UsersByPCsInfo.ps1"

Se sono presenti molti dipendenti del supporto tecnico, è possibile distribuire un collegamento utilizzando GPP.

Alcuni commenti finali.

  • Il modulo Active Directory per PowerShell deve essere installato sulla macchina da cui viene lanciato lo script PS (per fare ciò basta aggiungere gli strumenti di amministrazione AD nei componenti Windows).
  • Per impostazione predefinita, l'utente non può modificare la maggior parte degli attributi del proprio account. Tienilo presente se decidi di utilizzare un attributo diverso da Info.
  • Informa tutti i colleghi coinvolti su quale attributo utilizzerai. Ad esempio, lo stesso Info viene utilizzato per aggiungere in modo interattivo note alla casella di posta di un utente nel pannello di amministrazione di Exchange Server e qualcuno può facilmente sovrascriverle o rattristarsi quando le informazioni aggiunte vengono sovrascritte dal tuo script.
  • Se disponi di più siti Active Directory, tieni conto dei ritardi di replica. Ad esempio, se desideri ottenere informazioni aggiornate sugli utenti dal sito AD A ed eseguire lo script da un computer dal sito AD B, puoi procedere come segue:
    Get-ADUser -Server DCfromSiteA -SearchBase $OU -Properties * -Filter * | Select-Object DisplayName, SamAccountName, info | Sort DisplayName | Out-GridView -Title "Информация по логонам" -Wait

    DCdalSitoA — il nome del controller di dominio del sito A (per impostazione predefinita, il cmdlet Get-AdUser si connette al controller di dominio più vicino)

Windows: scopri chi ha effettuato l'accesso e dove

Fonte dell'immagine

Ti sarei grato se potessi partecipare al breve sondaggio riportato di seguito.

Solo gli utenti registrati possono partecipare al sondaggio. AccediPer favore.

Cosa usi?

  • bginfo, informazioni sul desktop ecc. (gratuito)

  • analoghi a pagamento di bginfo

  • Lo farò come nell'articolo

  • non rilevante, perché Utilizzo VDI/RDS ecc.

  • Non uso ancora nulla, ma ci sto pensando

  • Non ho bisogno di raccogliere tali dati

  • altro (condividi nei commenti)

112 utenti hanno votato. 39 utenti si sono astenuti.

Fonte: habr.com

Aggiungi un commento