- Oh, rien ne fonctionne pour moi, aide!
- Ne t'inquiète pas, maintenant nous allons tout réparer. Quel est le nom de l'ordinateur ...
(classique du genre des appels au support technique)
Eh bien, si vous avez un outil à la BgInfo ou que vos utilisateurs connaissent le raccourci Windows + Pause / Break et savent comment le cliquer. Il y a même de rares cas qui ont réussi à apprendre le nom de leur voiture. Mais souvent, l'appelant, en plus de son problème principal, en a une seconde: connaître le nom / l'adresse IP de l'ordinateur. Et souvent, la résolution de ce deuxième problème prend beaucoup plus de temps que le premier (et il vous suffisait de changer le fond d'écran ou de retourner l'étiquette manquante :).
Mais c'est beaucoup plus agréable d'entendre quelque chose comme:
- Tatyana Sergeevna, ne t'inquiète pas, je me connecte déjà ...
Mais il n'en faut pas tant 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 maintenant, je considérerai brièvement d'autres options afin de les
critiquer complètement pour expliquer leur choix.
- BgInfo , Desktop Info et similaires. S'il y a beaucoup d'argent, il y en a aussi qui sont payés. En fin de compte, les informations techniques sont affichées sur le bureau: nom de la machine, adresse IP, connexion, etc. Dans Desktop Info, vous pouvez même réduire les graphiques de performances à la moitié de l'écran.
Cela ne convient pas pour un même Bginfo, par exemple, l'utilisateur doit réduire les fenêtres pour voir les données nécessaires. Mes collègues et moi avons observé plus d'une fois un artefact caractéristique dans BgInfo lorsqu'un nouveau texte est affiché par-dessus l'ancien.
Certains utilisateurs sont ennuyés par le fait que les administrateurs dessinent un effrayant 192.168.0.123 sur le visage d'un chat allongé sur le bureau et gâchent l'esthétique de l'image d'arrière-plan, et, bien sûr, cela démotive terriblement et tue complètement l'ambiance de travail.
- Étiqueter à la "Qui suis-je" (n'essayez pas de lui ajouter un point d'interrogation à la fin :). Un raccourci classique sur le bureau, derrière lequel se trouve un script soigné ou pas très bien qui affiche les informations nécessaires sous la forme d'une boîte de dialogue. Parfois, au lieu d'un raccourci, le script lui-même est placé sur le bureau, ce qui à mon humble avis est mauvais.
L'inconvénient est que pour lancer le raccourci, comme dans le premier cas, vous devez minimiser toutes les fenêtres ouvertes (tout sbire du destin qui a une seule fenêtre avec solitaire sur la machine de travail, nous ne prenons pas en compte). Au fait, vos utilisateurs savent-ils où piquer pour minimiser toutes les fenêtres? C'est vrai, avec un doigt dans l'œil de l'administrateur.
Le plafond suggère également que les deux méthodes ci-dessus ont le principal inconvénient en ce que l'utilisateur est impliqué dans l'obtention d'informations,
qui peuvent être aveugles, stupides et même mentir.Je ne considérerai pas l'option d'augmenter la maîtrise de l'informatique, quand tout le monde sait où regarder le nom de sa machine sous Windows: l'entreprise est noble, mais très difficile. Et si l'entreprise a un roulement de personnel, c'est complètement désastreux. Que puis-je dire, dans la plupart des cas, ils ne se souviennent pas de leur connexion.
Il a versé son âme, et maintenant au point.
L'idée du mittel
habrovchanin de
cet article a été prise comme base.
L'essence de l'idée est que lorsqu'un utilisateur se connecte à Windows, le script de connexion entre les informations nécessaires (heure et nom de la machine) dans un attribut spécifique du compte d'utilisateur. Et à la sortie du système, il exécute un script de déconnexion similaire.
J'ai aimé l'idée elle-même, mais quelque chose n'a pas fonctionné dans la mise en œuvre.
- La stratégie de groupe, dans laquelle des scripts d'ouverture et de fermeture de session sont écrits pour les utilisateurs, est appliquée à l'ensemble du domaine, afin que les scripts fonctionnent sur n'importe quelle machine à laquelle les utilisateurs se connectent. Si vous utilisez des solutions de terminal avec des postes de travail (par exemple, des produits Microsoft RDS ou Citrix), cette approche ne sera pas pratique.
- Les données sont saisies dans l'attribut Department du compte d'utilisateur, auquel l'utilisateur moyen a un accès en lecture seule. En plus de l'attribut de compte d'utilisateur, le script modifie également l'attribut Department du compte d'ordinateur, que les utilisateurs ne peuvent pas modifier par défaut non plus. Par conséquent, pour que la solution fonctionne, l'auteur suggère de modifier les paramètres de sécurité par défaut pour les objets AD.
- Le format de la date dépend des paramètres de localisation sur la machine de destination, donc à partir d'une machine, nous pouvons obtenir le 10 novembre 2018 à 14h53 et de l'autre 11/10/18 à 14h53.
Pour remédier à ces lacunes, les mesures suivantes ont été prises.
- Le GPO n'est pas lié au domaine, mais à l'unité d'organisation avec les machines (je sépare les utilisateurs et les machines par différentes unités d'organisation et conseille les autres). Dans le même temps, le mode de traitement de la politique de bouclage est défini sur le mode de fusion .
- Le script saisira uniquement les données dans le compte utilisateur dans l'attribut Info , que l'utilisateur peut modifier indépendamment pour son compte.
- Modification d'un morceau de code générant une valeur d'attribut
Maintenant, les scripts ressemblent à ceci:
SaveLogonInfoToAdUserAttrib.vbsOn 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 trouve le premier toutes les différences entre une ouverture de session et un script de fermeture de session est un plus dans le karma. :)
De plus, pour obtenir des informations visuelles, un si petit script PS 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é pour un-deux-trois:
- créer un GPO avec les paramètres nécessaires et le lier à l'unité avec les postes de travail utilisateur:

- aller boire du thé (si AD avec un grand nombre d'utilisateurs, alors vous avez besoin de beaucoup de thé :)
- Le script PS démarre et nous obtenons le résultat:

En haut de la fenêtre, il y a un filtre pratique dans lequel vous pouvez sélectionner des données par les valeurs d'un ou plusieurs champs. Un clic sur les colonnes du tableau trie les enregistrements selon les valeurs des champs correspondants.
Vous pouvez magnifiquement "emballer" notre solution.

Pour ce faire, ajoutez un raccourci pour exécuter le script pour les spécialistes du support technique, qui auront quelque chose comme ça dans le champ "objet":
powershell.exe -NoLogo -ExecutionPolicy Bypass -File "\\server\share\Scripts\Get-UsersByPCsInfo.ps1"
S'il y a beaucoup d'employés du support technique, vous pouvez distribuer le raccourci à l'aide de
GPP .
Quelques commentaires à la fin.
- Sur la machine à partir de laquelle le script PS est lancé, le module Active Directory pour PowerShell doit être installé (pour cela, il suffit d'ajouter les outils d'administration AD dans les composants Windows).
- L'utilisateur ne peut pas modifier la plupart des attributs de son compte par défaut. Gardez cela à l'esprit si vous décidez d'utiliser un attribut autre que Info .
- Informez tous les collègues concernés de l'attribut que vous utiliserez. Par exemple, les mêmes informations sont utilisées pour ajouter de manière interactive des notes à la boîte aux lettres d'un utilisateur dans la zone d'administration d'Exchange Server et quelqu'un peut facilement la remplacer, ou il est attristé que les informations qu'il ajoute écrasent votre script.
- Si vous disposez de plusieurs sites Active Directory, ajustez les 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 à partir de la machine du site AD B, vous pouvez le faire:
Get-ADUser -Server DCfromSiteA -SearchBase $OU -Properties * -Filter * | Select-Object DisplayName, SamAccountName, info | Sort DisplayName | Out-GridView -Title " " -Wait
DCfromSiteA - le nom du contrôleur de domaine du site A (par défaut, l'applet de commande Get-AdUser se connecte au contrôleur de domaine le plus proche)
Source de l'imageJe vous serais reconnaissant de bien vouloir passer le court sondage ci-dessous.