— Oh, non funziona nulla, aiutatemi!
— Non si preoccupi, sistemeremo tutto. Può dirmi il nome del computer...
(classico del genere nei dubbi al supporto tecnico)
Va bene, se ha uno strumento tipo BgInfo o se i suoi utenti sanno del collegamento Windows+Pause/Break e sono capaci di usarlo. Ci sono anche esemplari rari che sono riusciti a memorizzare il nome della loro macchina. Ma spesso chi chiama ha, oltre al problema principale, un secondo: scoprire il nome/l'indirizzo IP del computer. E spesso per risolvere questa seconda questione si impiega molto più tempo rispetto alla prima (e bisognava solo cambiare lo sfondo o ripristinare un'icona scomparsa : ).
E sarebbe molto più piacevole sentire qualcosa del tipo:
— Tatiana Sergeevna, non si preoccupi, mi collego subito...
E per farlo non servono molte cose.
Per un tecnico del supporto è sufficiente memorizzare i nomi delle macchine e ricordare chi lavora su quale.
Prima di descrivere la soluzione che utilizziamo ora, esaminerò brevemente altre opzioni per criticare spietatamente spiegare la mia scelta.
- , e simili. Se ci sono molti soldi, ci sono anche opzioni a pagamento. La cosa fondamentale è che sul desktop vengono visualizzate informazioni tecniche: nome della macchina, indirizzo IP, login, ecc. In Desktop Info è anche possibile inserire grafici delle prestazioni su metà schermo.
Non mi piace il fatto che per lo stesso BgInfo, ad esempio, l'utente deve minimizzare le finestre per vedere i dati necessari. Inoltre, io e i miei colleghi abbiamo osservato più volte che in BgInfo , dove il nuovo testo viene sovrapposto al vecchio.
Alcuni utenti si irritano per il fatto che gli amministratori scrivono spaventoso 192.168.0.123 sul musetto di un gattino disteso sul desktop rovinano l'estetica dello sfondo, e, naturalmente, questo demotiva terribilmente e distrugge completamente l'umore lavorativo. - Collegamento tipo 'Chi sono' (non provate ad aggiungere un punto interrogativo alla fine :). Un collegamento classico sul desktop, sotto il quale si nasconde uno script ordinato o meno, che mostra le informazioni necessarie in una finestra di dialogo. A volte al posto del collegamento sul desktop viene messo direttamente lo script, il che IMHO è di cattivo gusto.
Il problema è che, come nel primo caso, per avviare il collegamento è necessario ridurre tutte le finestre aperte (non consideriamo i favoriti del destino, che hanno aperta una sola finestra con un solitario sul computer). A proposito, i vostri utenti sanno dove devono cliccare per ridurre tutte le finestre? Giusto, un dito nell'occhio all'amministratore.
Inoltre, il capo suggerisce che entrambi i metodi descritti sopra hanno come principale svantaggio il fatto che nella raccolta delle informazioni partecipa un utente che potrebbe essere un po' miope, stupido e comunque mentire.
Non considererò l'opzione di aumentare l'alfabetizzazione informatica, quando tutti sanno dove guardare in Windows per vedere il nome del proprio computer: è un'impresa nobile, ma molto difficile. E se in azienda ci sono turnover di personale, diventa impossibile. Cosa dire, nella maggior parte dei casi nemmeno ricordano il proprio login.
Ho espresso l'anima, ora passiamo al sodo.
La base è stata presa dall'idea di un utente di Habrahabr da .
L'essenza dell'idea è che al momento dell'accesso dell'utente a Windows, uno script di login registra le informazioni necessarie (ora e nome del computer) in un determinato attributo dell'account utente. E al momento dell'uscita dal sistema viene eseguito uno script di logout analogo.
L'idea mi è piaciuta, ma per quanto riguarda l'implementazione c'è qualcosa che non mi ha convinto.
- La policy di gruppo, in cui sono definiti gli script di login e logout per gli utenti, si applica a tutto il dominio, quindi gli script verranno eseguiti su qualsiasi macchina a cui accedono gli utenti. Se nel vostro ambiente, oltre ai computer, vengono utilizzate soluzioni terminali (ad esempio, Microsoft RDS o prodotti Citrix), questo approccio risulterà scomodo.
- I dati vengono inseriti nell'attributo Department dell'account utente, al quale l'utente normale ha solo accesso in lettura. Oltre all'attributo dell'account utente, lo script apporta anche modifiche all'attributo Department dell'account del computer, che per impostazione predefinita gli utenti non possono modificare. Pertanto, affinché la soluzione funzioni, l'autore propone di modificare le impostazioni di sicurezza standard per gli oggetti AD.
- Il formato della data dipende dalle impostazioni di localizzazione sulla macchina finale, quindi da un computer possiamo ottenere 10 novembre 2018 14:53, mentre da un altro 11/10/18 2:53 p.m.
Per risolvere questi svantaggi sono state fatte le seguenti modifiche.
- GPO non è collegato al dominio, ma all'OU con le macchine (divido utenti e macchine in OU diverse e lo consiglio agli altri). A tal fine, per è impostata la modalità merge.
- Lo script registrerà i dati solo nell'account utente nell'attributo Info, che l'utente può modificare autonomamente per il proprio account.
- È stata modificata la parte 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 & " " & " @ " & 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 & " " & " @ " & strComputerName
oUser.Setinfo
Chi troverà per primo tutte le differenze tra lo script di logon e quello di logoff, avrà un punto in più nella karma. 🙂
Inoltre, per ottenere informazioni visive, è stato creato un 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 "Informazioni sui logon" -Wait
In totale, tutto si configura in un attimo:
- creiamo un GPO con le impostazioni necessarie e lo colleghiamo all'unità con le postazioni di lavoro degli utenti:
- andiamo a bere un tè (se l'AD ha un gran numero di utenti, ci vuole molto tè 🙂
- eseguiamo lo script PS e otteniamo il risultato:

Nella parte superiore della finestra c'è un comodo filtro, in cui è possibile selezionare i dati in base ai valori di uno o più campi. Un clic sulle colonne della tabella ordina le voci in base ai valori dei campi corrispondenti.
Possiamo confezionare elegantemente la nostra soluzione.

A tal fine, aggiungeremo un collegamento per eseguire lo script agli specialisti del supporto tecnico, nel quale nel campo "oggetto" ci sarà qualcosa del genere:
powershell.exe -NoLogo -ExecutionPolicy Bypass -File "servershareScriptsGet-UsersByPCsInfo.ps1"
Se ci sono molti dipendenti del supporto tecnico, è possibile distribuire l'icona tramite .
Alcuni appunti finali.
- Sul computer da cui viene eseguito lo script PS, deve essere installato il modulo Active Directory per PowerShell (è sufficiente aggiungere gli strumenti di amministrazione AD nei componenti di Windows).
- La maggior parte degli attributi del proprio account l'utente non può modificarli per impostazione predefinita. Tieni conto di questo se decidi di utilizzare un attributo diverso da Info.
- Informa tutti i colleghi interessati sull'attributo che utilizzerai. Ad esempio, lo stesso Info è utilizzato per l'aggiunta interattiva di note alla casella utente nell'amministrazione di Exchange Server e qualcuno può facilmente sovrascriverlo o rimanere deluso quando le informazioni aggiunte da lui vengono sovrascritte dal tuo script.
- Se hai più siti di Active Directory, fai attenzione ai ritardi di replica. Ad esempio, se desideri ottenere informazioni aggiornate sugli utenti dal sito AD A, ma esegui lo script da un computer del sito AD B, puoi fare così:
Get-ADUser -Server DCfromSiteA -SearchBase $OU -Properties * -Filter * | Select-Object DisplayName, SamAccountName, info | Sort DisplayName | Out-GridView -Title "Informazioni sui logon" -Wait
DCfromSiteA — il nome del controller di dominio del sito A (per impostazione predefinita, il cmdlet Get-AdUser si connette al controller di dominio più vicino)

Ti sarei grato se potessi completare il breve sondaggio qui sotto.
Solo gli utenti registrati possono partecipare al sondaggio. , per favore.
Cosa usate?
bginfo, Desktop info ecc. (software gratuito)
alternative a pagamento di bginfo
farò come nell'articolo
non è rilevante, poiché utilizzo VDI/RDS ecc.
attualmente non utilizzo nulla, ma ci penso
non ho bisogno di raccogliere tali dati
altro (condividi nei commenti)
Hanno votato 112 utenti. 39 utenti si sono astenuti.
Fonte: habr.com

