Windows : savoir qui est connecté où

Windows : savoir qui est connecté où
- Oh, rien ne marche pour moi, à l'aide !
- Ne t'inquiète pas, nous allons tout réparer maintenant. Donnez le nom de votre ordinateur...
(des classiques du genre depuis les appels au support technique)

C'est bien si vous disposez d'un outil à la BgInfo ou si vos utilisateurs connaissent le raccourci Windows+Pause/Break et savent comment appuyer dessus. Il existe même de rares spécimens qui ont réussi à connaître le nom de leur voiture. Mais souvent, l'appelant, en plus de son problème principal, en a un deuxième : connaître le nom/l'adresse IP de l'ordinateur. Et souvent, il faut beaucoup plus de temps pour résoudre ce deuxième problème que le premier (et il suffisait de changer le fond d'écran ou de renvoyer le raccourci manquant :).
Mais c'est bien plus agréable d'entendre quelque chose comme :
- Tatiana Sergueïevna, ne t'inquiète pas, je me connecte déjà...


Et vous n’avez pas besoin de grand-chose pour cela.
Un spécialiste du support technique n'a qu'à mémoriser les noms des machines et à se rappeler qui travaille pour quoi.
Avant de décrire la solution que nous utilisons actuellement, j'examinerai brièvement d'autres options afin de pouvoir les critiquer jusqu'au bout et expliquer mon choix.

  1. BgInfo, Infos sur le bureau etc. S'il y a beaucoup d'argent, il y en a des payants. Le fait est que des informations techniques sont affichées sur le bureau : nom de la machine, adresse IP, login, etc. Dans Desktop Info, vous pouvez même compresser les graphiques de performances sur la moitié de l’écran.
    Ce que je n'aime pas, c'est que pour le même Bginfo, par exemple, l'utilisateur doit minimiser les fenêtres pour voir les données nécessaires. Mes collègues et moi avons également observé plus d'une fois chez BgInfo artefact caractéristique, lorsqu'un nouveau texte est affiché au-dessus de l'ancien.
    Certains utilisateurs sont agacés par le fait que les administrateurs dessinent un effrayant 192.168.0.123 sur le visage d'un chat étendu sur le bureau, gâchant l'esthétique de l'image d'arrière-plan, et, bien sûr, cela est terriblement démotivant et tue complètement l'esprit de travail. .
  2. Une étiquette à la « Qui suis-je » (n'essayez pas d'y ajouter un point d'interrogation à la fin :). Un raccourci classique sur le bureau, derrière lequel se cache un script soigné ou pas si soigné qui affiche les informations nécessaires sous la forme d'une boîte de dialogue. Parfois, au lieu d'un raccourci, ils placent le script lui-même sur le bureau, ce qui, à mon humble avis, est de mauvaises manières.
    L’inconvénient est que pour lancer le raccourci, comme dans le premier cas, il faut minimiser toutes les fenêtres ouvertes (on ne prend pas en compte ces chanceux qui ont la seule fenêtre solitaire ouverte sur leur machine de travail). Au fait, vos utilisateurs savent-ils où cliquer pour réduire toutes les fenêtres ? C'est vrai, un doigt dans l'œil de l'administrateur.

Le plafond suggère également que les deux méthodes décrites ci-dessus présentent le principal inconvénient que l'utilisateur est impliqué dans l'obtention d'informations, qui peut être aveugle, stupide ou même mentir.
Je n'envisagerai pas l'option d'accroître les connaissances informatiques, alors que chacun sait où chercher dans Windows le nom de sa machine : c'est une cause noble, mais très difficile. Et si l’entreprise connaît un roulement de personnel, c’est complètement ruineux. Que puis-je dire, dans la plupart des cas, ils ne se souviennent même pas de leur identifiant.

J'ai épanché mon âme, et maintenant au point.
L'idée d'un résident de Khabrov a été prise comme base moyen de cet article.
L'essence de l'idée est que lorsqu'un utilisateur se connecte à Windows, le script de connexion saisit les informations nécessaires (heure et nom de la machine) dans un certain attribut du compte utilisateur. Et lorsque vous vous déconnectez du système, un script de déconnexion similaire est exécuté.

J’ai aimé l’idée elle-même, mais il y avait certaines choses qui ne me plaisaient pas dans la mise en œuvre.

  1. La stratégie de groupe, qui spécifie les scripts de connexion et de déconnexion pour les utilisateurs, s'applique à l'ensemble du domaine, de sorte que les scripts s'exécuteront sur n'importe quelle machine à laquelle les utilisateurs se connectent. Si vous utilisez des solutions de terminaux avec des postes de travail (par exemple, des produits Microsoft RDS ou Citrix), cette approche ne sera pas pratique.
  2. Les données sont saisies dans l'attribut Département du compte utilisateur, auquel l'utilisateur moyen a accès en lecture seule. En plus de l'attribut du compte utilisateur, le script apporte également des modifications à l'attribut Department du compte d'ordinateur, que les utilisateurs ne peuvent pas non plus modifier par défaut. Par conséquent, pour que la solution fonctionne, l'auteur suggère de modifier les normes de paramètres de sécurité pour les objets AD.
  3. Le format de la date dépend des paramètres de localisation sur la machine cible, donc sur une machine nous pouvons obtenir le 10 novembre 2018 14h53, et sur une autre 11/10/18 2h53.

Pour éliminer ces lacunes, ce qui suit a été fait.

  1. Le GPO n'est pas lié à un domaine, mais à une UO avec des machines (je sépare les utilisateurs et les machines en différentes UO et conseille les autres). De plus, pour mode de traitement de la politique de bouclage le mode est réglé fusionner.
  2. Le script écrira uniquement les données sur le compte utilisateur dans l'attribut Info, que l'utilisateur peut modifier indépendamment pour son compte.
  3. Modification du morceau de code qui génère la valeur de l'attribut

Maintenant, les scripts ressemblent à ceci :
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

Celui qui sera le premier à trouver toutes les différences entre les scripts de connexion et de déconnexion obtiendra un plus en termes de karma. 🙂
De plus, pour obtenir des informations visuelles, le petit script PS suivant a été créé :
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

Au total, tout est configuré un-deux-trois :

  1. créez un GPO avec les paramètres nécessaires et reliez-le au service avec les postes des utilisateurs :
    Windows : savoir qui est connecté où
  2. allons prendre le thé (si AD a un grand nombre d'utilisateurs, alors il faut beaucoup de thé :)
  3. exécutez le script PS et obtenez le résultat :
    Windows : savoir qui est connecté où
    En haut de la fenêtre se trouve un filtre pratique dans lequel vous pouvez sélectionner des données en fonction des valeurs d'un ou plusieurs champs. Cliquer sur les colonnes du tableau trie les enregistrements selon les valeurs des champs correspondants.

Nous pouvons magnifiquement « emballer » notre solution.
Windows : savoir qui est connecté où
Pour ce faire, nous ajouterons un raccourci pour lancer le script pour les spécialistes du support technique, qui auront quelque chose comme ceci dans le champ « objet » :
powershell.exe -NoLogo -ExecutionPolicy Bypass -File "servershareScriptsGet-UsersByPCsInfo.ps1"

S'il y a beaucoup d'employés du support technique, vous pouvez distribuer un raccourci en utilisant MPE.

Quelques derniers commentaires.

  • Le module Active Directory pour PowerShell doit être installé sur la machine à partir de laquelle le script PS est lancé (pour cela, il suffit d'ajouter les outils d'administration AD dans les composants Windows).
  • Par défaut, l'utilisateur ne peut pas modifier la plupart des attributs de son compte. Gardez cela à l'esprit si vous décidez d'utiliser un attribut autre que Info.
  • Informez tous les collègues concernés quel attribut vous utiliserez. Par exemple, le même Info est utilisé pour ajouter de manière interactive des notes à la boîte aux lettres d'un utilisateur dans le panneau d'administration d'Exchange Server et quelqu'un peut facilement les écraser, ou devenir triste lorsque les informations ajoutées sont écrasées par votre script.
  • Si vous disposez de plusieurs sites Active Directory, tenez compte des délais de réplication. Par exemple, si vous souhaitez obtenir des informations à jour sur les utilisateurs du site AD A et exécuter le script depuis une machine du site AD B, vous pouvez procéder comme suit :
    Get-ADUser -Server DCfromSiteA -SearchBase $OU -Properties * -Filter * | Select-Object DisplayName, SamAccountName, info | Sort DisplayName | Out-GridView -Title "Информация по логонам" -Wait

    DCà partir du siteA — le nom du contrôleur de domaine du site A (par défaut, la cmdlet Get-AdUser se connecte au contrôleur de domaine le plus proche)

Windows : savoir qui est connecté où

Source des images

Je vous serais reconnaissant de bien vouloir répondre au court sondage ci-dessous.

Seuls les utilisateurs enregistrés peuvent participer à l'enquête. se connecters'il te plait.

Qu'est ce que tu utilises?

  • bginfo, informations sur le bureau, etc. (logiciel gratuit)

  • analogues payants de bginfo

  • je vais faire comme dans l'article

  • pas pertinent, parce que J'utilise VDI/RDS etc.

  • Je n'utilise encore rien, mais j'y pense

  • Je n'ai pas besoin de collecter de telles données

  • autre (partager dans les commentaires)

112 utilisateurs ont voté. 39 utilisateurs se sont abstenus.

Source: habr.com

Ajouter un commentaire