Windows: descubra quen está conectado onde

Windows: descubra quen está conectado onde
- Oh, nada me funciona, axuda!
- Non te preocupes, arreglaremos todo agora. Pon o nome do teu ordenador...
(clásicos do xénero dende convocatorias ata soporte técnico)

É bo se tes unha ferramenta como BgInfo ou os teus usuarios coñecen o atallo de Windows+Pausa/Pausa e saben como premer nel. Incluso hai exemplares raros que conseguiron saber o nome do seu coche. Pero moitas veces, ademais do seu principal problema, a persoa que chama ten un segundo problema: descubrir o nome/enderezo IP do ordenador. E moitas veces leva moito máis tempo resolver este segundo problema que o primeiro (e só precisaba cambiar o fondo de pantalla ou devolver o atallo que faltaba :).
Pero é moito máis agradable escoitar algo como:
- Tatiana Sergeevna, non te preocupes, xa me estou conectando...


E non necesitas moito para iso.
Un especialista en soporte técnico só ten que memorizar os nomes das máquinas e lembrar quen traballa para cal.
Antes de describir a solución que estamos a utilizar actualmente, analizarei brevemente outras opcións para poder criticalas ata o fondo e explicar a miña elección.

  1. BgInfo, Información de escritorio e similares. Se hai moito diñeiro, hai de pago. A cuestión é que a información técnica móstrase no escritorio: nome da máquina, enderezo IP, inicio de sesión, etc. En Información de escritorio podes incluso espremer gráficos de rendemento na metade da pantalla.
    O que non me gusta é que para o mesmo Bginfo, por exemplo, o usuario necesite minimizar as fiestras para ver os datos necesarios. Os meus compañeiros e eu tamén observamos máis dunha vez en BgInfo artefacto característico, cando se mostra un texto novo enriba do antigo.
    Algúns usuarios están molestos polo feito de que os administradores debuxen un aterrador 192.168.0.123 na cara dun gato estendido no escritorio, estropeando a estética da imaxe de fondo e, por suposto, isto é terriblemente desmotivador e mata por completo o espírito de traballo. .
  2. Unha etiqueta como "Quen son eu" (non intentes engadirlle un signo de interrogación ao final :). Un atallo clásico no escritorio, detrás do cal se agocha un script ordenado ou non tan ordenado que mostra a información necesaria en forma de caixa de diálogo. Ás veces, en lugar dun atallo, poñen o propio script no escritorio, o que, en mi humilde opinión, son malas maneiras.
    A desvantaxe é que para lanzar o atallo, como no primeiro caso, cómpre minimizar todas as fiestras abertas (non temos en conta a aqueles queridos da fortuna que teñen a única fiestra de solitario aberta na súa máquina de traballo). Por certo, os teus usuarios saben onde facer clic para minimizar todas as fiestras? É certo, un dedo no ollo do administrador.

O límite tamén suxire que os dous métodos descritos anteriormente teñen o principal inconveniente de que o usuario está implicado na obtención de información, que pode ser cego, estúpido ou mesmo mentir.
Non vou considerar a opción de aumentar a alfabetización informática, cando todo o mundo sabe onde en Windows buscar o nome da súa máquina: é unha causa nobre, pero moi difícil. E se a empresa ten rotación de persoal, entón é completamente ruinoso. Que podo dicir, na maioría dos casos nin sequera lembran o seu inicio de sesión.

Derramei a miña alma, e agora ao grano.
Tomouse como base a idea dun residente de Khabrov mittel de Este artigo.
A esencia da idea é que cando un usuario inicia sesión en Windows, o script de inicio de sesión introduce a información necesaria (hora e nome da máquina) nun determinado atributo da conta de usuario. E cando pecha sesión no sistema, execútase un script de peche de sesión similar.

Gustoume a idea en si, pero houbo algunhas cousas coas que non estaba satisfeito na implementación.

  1. A política de grupo, que especifica scripts de inicio de sesión e pechada para os usuarios, aplícase a todo o dominio, polo que os scripts executaranse en calquera máquina na que os usuarios inicien sesión. Se usa solucións de terminais xunto con estacións de traballo (por exemplo, produtos Microsoft RDS ou Citrix), este enfoque será inconveniente.
  2. Os datos introdúcense no atributo Departamento da conta de usuario, ao que o usuario medio ten acceso de só lectura. Ademais do atributo da conta de usuario, o script tamén fai cambios no atributo Departamento da conta do ordenador, que por defecto tampouco poden cambiar os usuarios. Polo tanto, para que a solución funcione, o autor suxire cambiar os estándares de configuración de seguridade para os obxectos AD.
  3. O formato da data depende da configuración de localización na máquina de destino, polo que desde unha máquina podemos obter o 10 de novembro de 2018 ás 14:53 e doutra o 11/10/18 ás 2:53.

Para eliminar estas deficiencias, fíxose o seguinte.

  1. O GPO está ligado non a un dominio, senón a unha OU con máquinas (separo usuarios e máquinas en diferentes OU e aconsello a outros). Ademais, para Modo de procesamento de políticas de loopback o modo está configurado fundir.
  2. O script só escribirá datos na conta de usuario no atributo Información, que o usuario pode cambiar de forma independente para a súa conta.
  3. Cambiouse a peza de código que xera o valor do atributo

Agora os guións teñen o seguinte aspecto:
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

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

Quen sexa o primeiro en atopar todas as diferenzas entre os scripts de inicio de sesión e de peche de sesión terá un plus polo karma. 🙂
Ademais, para obter información visual, creouse o seguinte pequeno 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

En total, todo está configurado un-dous-tres:

  1. cree un GPO coa configuración necesaria e vincúlao ao departamento coas estacións de traballo do usuario:
    Windows: descubra quen está conectado onde
  2. imos tomar o té (se AD ten un gran número de usuarios, entón necesitas moito té :)
  3. executa o script PS e obtén o resultado:
    Windows: descubra quen está conectado onde
    Na parte superior da xanela hai un filtro conveniente no que pode seleccionar datos en función dos valores dun ou máis campos. Ao facer clic nas columnas da táboa ordenaranse os rexistros polos valores dos campos correspondentes.

Podemos "empaquetar" moi ben a nosa solución.
Windows: descubra quen está conectado onde
Para iso, engadiremos un atallo para lanzar o script para especialistas en soporte técnico, que terán algo así no campo "obxecto":
powershell.exe -NoLogo -ExecutionPolicy Bypass -File "servershareScriptsGet-UsersByPCsInfo.ps1"

Se hai moitos empregados de soporte técnico, podes distribuír un atallo usando Extensión GP.

Uns comentarios finais.

  • O módulo de Active Directory para PowerShell debe estar instalado na máquina desde a que se inicia o script PS (para iso, basta con engadir ferramentas de administración de AD nos compoñentes de Windows).
  • Por defecto, o usuario non pode editar a maioría dos atributos da súa conta. Ten en conta isto se decides usar un atributo distinto de Información.
  • Informa a todos os compañeiros implicados que atributo vai usar. Por exemplo, o mesmo Información úsase para engadir notas de forma interactiva á caixa de correo dun usuario no panel de administración de Exchange Server e alguén pode substituíla facilmente, ou entristecerse cando a información que engadiu é sobrescrita polo seu script.
  • Se tes varios sitios de Active Directory, prepárate para atrasos de replicación. Por exemplo, se quere obter información actualizada sobre os usuarios do sitio A de AD e executar o script desde unha máquina do sitio B de AD, pode facelo:
    Get-ADUser -Server DCfromSiteA -SearchBase $OU -Properties * -Filter * | Select-Object DisplayName, SamAccountName, info | Sort DisplayName | Out-GridView -Title "Информация по логонам" -Wait

    DCfromSiteA — o nome do controlador de dominio do sitio A (por defecto, o cmdlet Get-AdUser conéctase ao controlador de dominio máis próximo)

Windows: descubra quen está conectado onde

Fonte da imaxe

Agradeceríache que puideses facer a pequena enquisa a continuación.

Só os usuarios rexistrados poden participar na enquisa. Rexístrate, por favor.

Que usas?

  • bginfo, información de escritorio, etc. (gratuíto)

  • análogos de pago de bginfo

  • Farei como no artigo

  • non relevante, porque Eu uso VDI/RDS etc.

  • Aínda non uso nada, pero estou a pensar

  • Non necesito recoller tales datos

  • outro (compartilo nos comentarios)

Votaron 112 usuarios. 39 usuarios abstivéronse.

Fonte: www.habr.com

Engadir un comentario