- Oh, nic mi nefunguje, pomozte!
-Neboj, teď vše napravíme. Zadejte název počítače...
(klasika žánru od volání po technickou podporu)
Je dobré, pokud máte nástroj a la BgInfo nebo vaši uživatelé znají zkratku Windows+Pause/Break a vědí, jak ji stisknout. Existují dokonce vzácné exempláře, kterým se podařilo naučit jméno svého vozu. Často má ale volající kromě svého hlavního problému i druhý problém: zjistit jméno/IP adresu počítače. A řešení tohoto druhého problému často zabere mnohem více času než prvního (a stačilo jen změnit tapetu nebo vrátit chybějící zástupce :).
Ale je mnohem hezčí slyšet něco jako:
- Tatyano Sergeevno, nebojte se, už se připojuji...
A nepotřebujete k tomu mnoho.
Specialista technické podpory si musí zapamatovat pouze názvy strojů a zapamatovat si, kdo pro které pracuje.
Před popisem řešení, které aktuálně používáme, se krátce podívám na další možnosti, abych je mohl do puntíku vytknout a vysvětlit svou volbu.
BgInfo, Informace o ploše a podobně. Pokud je peněz hodně, jsou placené. Jde o to, že na ploše se zobrazují technické informace: název stroje, IP adresa, přihlášení atd. V Informace o ploše můžete dokonce vtěsnat grafy výkonu na polovinu obrazovky.
Nelíbí se mi, že například pro stejné Bginfo musí uživatel minimalizovat okna, aby viděl potřebná data. S mými kolegy jsme také více než jednou pozorovali BgInfo charakteristický artefakt, když se nad starým textem zobrazí nový text.
Některým uživatelům vadí, že admini kreslí na obličej kočky natažené na ploše děsivou 192.168.0.123, která kazí estetiku obrázku na pozadí, a to je samozřejmě strašně demotivující a úplně to zabíjí pracovního ducha. .
Štítek a la „Kdo jsem“ (nesnažte se k němu na konci přidat otazník :). Klasická zkratka na ploše, za kterou se skrývá úhledný či nepříliš úhledný skript zobrazující potřebné informace ve formě dialogového okna. Někdy místo zástupce dají na plochu samotný skript, což je IMHO neslušné chování.
Nevýhodou je, že ke spuštění zkratky je jako v prvním případě potřeba minimalizovat všechna otevřená okna (nebereme v úvahu ty miláčky štěstěny, kteří mají na svém pracovním stroji otevřené jediné solitérní okno). Mimochodem, vědí vaši uživatelé, kam kliknout, aby minimalizovali všechna okna? Přesně tak, prst v oku admina.
Čepice také naznačuje, že oba výše popsané způsoby mají hlavní nevýhodu v tom, že se na získávání informací podílí uživatel, který může být slepý, hloupý nebo dokonce lhát.
Nebudu uvažovat o možnosti zvýšení počítačové gramotnosti, když každý ví, kde ve Windows hledat jméno svého stroje: je to ušlechtilá věc, ale velmi obtížná. A pokud má společnost fluktuaci zaměstnanců, pak je to úplně ruina. Co mohu říci, ve většině případů si ani nepamatují své přihlášení.
Vylil jsem si duši a teď k věci.
Jako základ byla vzata myšlenka obyvatele Khabrova střední z tento článek.
Podstatou myšlenky je, že když se uživatel přihlásí do Windows, přihlašovací skript zadá potřebné informace (čas a název stroje) do určitého atributu uživatelského účtu. A když se odhlásíte ze systému, spustí se podobný odhlašovací skript.
Samotný nápad se mi líbil, ale byly některé věci, se kterými jsem při realizaci nebyl spokojený.
Zásady skupiny, které specifikují přihlašovací a odhlašovací skripty pro uživatele, platí pro celou doménu, takže skripty poběží na jakémkoli počítači, ke kterému se uživatelé přihlásí. Pokud používáte terminálová řešení spolu s pracovními stanicemi (například produkty Microsoft RDS nebo Citrix), bude tento přístup nepohodlný.
Údaje se zadávají do atributu Oddělení uživatelského účtu, ke kterému má průměrný uživatel přístup pouze pro čtení. Kromě atributu uživatelského účtu skript také provádí změny atributu Oddělení účtu počítače, které ve výchozím nastavení uživatelé také nemohou změnit. Proto, aby řešení fungovalo, autor navrhuje změnit standardy nastavení zabezpečení pro objekty AD.
Formát data závisí na nastavení lokalizace na cílovém počítači, takže z jednoho stroje můžeme získat 10. listopadu 2018 14:53 a z jiného 11 10:18
K odstranění těchto nedostatků bylo provedeno následující.
GPO není propojeno s doménou, ale s OU se stroji (odděluji uživatele a stroje do různých OU a radím ostatním). Navíc pro režim zpracování zásad zpětné smyčky režim je nastaven spojit.
Skript pouze zapíše data do uživatelského účtu v atributu Informace, kterou si uživatel může změnit nezávisle pro svůj účet.
Změněna část kódu, která generuje hodnotu atributu
Nyní skripty vypadají takto: 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
Kdo jako první najde všechny rozdíly mezi Logon a Logoff skripty, dostane plus za karmu. 🙂
Pro získání vizuálních informací byl také vytvořen následující malý PS skript: Get-UsersByPCsInfo.ps1
vytvořte GPO s potřebnými nastaveními a propojte jej s oddělením s uživatelskými pracovními stanicemi:
jdeme na čaj (pokud má AD velký počet uživatelů, pak potřebujete hodně čaje :)
spusťte skript PS a získejte výsledek:
V horní části okna je pohodlný filtr, ve kterém můžete vybrat data na základě hodnot jednoho nebo více polí. Kliknutím na sloupce tabulky seřadí záznamy podle hodnot odpovídajících polí.
Naše řešení umíme krásně „zabalit“.
K tomu přidáme zkratku pro spuštění skriptu pro specialisty technické podpory, kteří budou mít v poli „objekt“ něco takového: powershell.exe -NoLogo -ExecutionPolicy Bypass -File "servershareScriptsGet-UsersByPCsInfo.ps1"
Pokud existuje mnoho zaměstnanců technické podpory, můžete distribuovat zástupce pomocí NA TOM NEZÁLEŽÍ.
Několik poznámek na závěr.
Modul Active Directory pro PowerShell musí být nainstalován na počítači, ze kterého se skript PS spouští (k tomu stačí přidat nástroje pro správu AD v komponentách Windows).
Ve výchozím nastavení nemůže uživatel upravovat většinu atributů svého účtu. Mějte to na paměti, pokud se rozhodnete použít jiný atribut než Informace.
Informujte všechny zúčastněné kolegy, jaký atribut použijete. Například to samé Informace se používá k interaktivnímu přidávání poznámek do poštovní schránky uživatele na panelu administrátora Exchange Server a někdo je může snadno přepsat nebo být smutný, když jsou informace, které přidal, přepsány vaším skriptem.
Pokud máte více lokalit Active Directory, počítejte s prodlevou replikace. Chcete-li například získat aktuální informace o uživatelích z webu AD A a spustit skript ze stroje z webu AD B, můžete to udělat takto: Get-ADUser -Server DCfromSiteA -SearchBase $OU -Properties * -Filter * | Select-Object DisplayName, SamAccountName, info | Sort DisplayName | Out-GridView -Title "Информация по логонам" -Wait
DCfromSiteA — název řadiče domény webu A (ve výchozím nastavení se rutina Get-AdUser připojuje k nejbližšímu řadiči domény)