- Oh, nada funciona para mim, ajuda!
- Não se preocupe, agora vamos consertar tudo. Qual é o nome do computador ...
(clássico do gênero, de chamadas para suporte técnico)
Bem, se você possui uma ferramenta na BgInfo ou se seus usuários conhecem o atalho Windows + Pause / Break e sabem como clicar nele. Existem até casos raros que conseguiram aprender o nome do carro. Mas frequentemente o chamador, além do seu principal problema, tem um segundo: descobrir o nome / endereço IP do computador. E, muitas vezes, leva muito mais tempo para resolver esse segundo problema do que o primeiro (e você só precisava alterar o papel de parede ou devolver o rótulo ausente :).
Mas é muito melhor ouvir algo como:
- Tatyana Sergeevna, não se preocupe, eu já estou conectando ...
Mas não é necessário muito para isso.
Um especialista em suporte técnico precisa apenas memorizar os nomes das máquinas e lembrar quem trabalha para quê.Antes de descrever a solução que estamos usando agora, examinarei brevemente outras opções para
criticá-las completamente e explicar sua escolha.
- BgInfo , Informações da área de trabalho e similares. Se houver muito dinheiro, também haverá pagamentos. A conclusão é que as informações técnicas são exibidas na área de trabalho: nome da máquina, endereço IP, logon etc. No Desktop Info, você pode até cortar gráficos de desempenho para metade da tela.
Não é adequado que, para o mesmo Bginfo, por exemplo, o usuário precise minimizar as janelas para ver os dados necessários. Meus colegas e eu mais de uma vez observamos um artefato característico no BgInfo quando um novo texto é exibido sobre o antigo.
Alguns usuários ficam aborrecidos com o fato de os administradores desenharem um assustador 192.168.0.123 na face de um gato esticado na área de trabalho e estragar a estética da imagem de fundo, e, é claro, desmotiva terrivelmente e mata completamente o clima de trabalho.
- Coloque a etiqueta "Quem sou eu" (não tente adicionar um ponto de interrogação no final :). Um atalho clássico na área de trabalho, atrás do qual existe um script limpo ou não muito que exibe as informações necessárias na forma de uma caixa de diálogo. Às vezes, em vez de um atalho, o próprio script é colocado na área de trabalho, o que IMHO é ruim.
A desvantagem é que, para iniciar o atalho, como no primeiro caso, você precisa minimizar todas as janelas abertas (qualquer servo do destino que tenha uma única janela com paciência na máquina em funcionamento, não levamos em consideração). A propósito, seus usuários sabem onde cutucar para minimizar todas as janelas? É isso mesmo, com um dedo no olho do administrador.
O limite também sugere que ambos os métodos descritos acima têm a principal desvantagem de um usuário estar envolvido na obtenção de informações,
que podem ser cegas, estúpidas e até mentiras.Não considerarei a opção de aumentar o conhecimento sobre computadores, quando todos souberem onde procurar o nome de sua máquina no Windows: o negócio é nobre, mas muito difícil. E se a empresa tem uma rotatividade de pessoal, é completamente desastroso. O que posso dizer, na maioria dos casos, eles não se lembram do login.
Ele derramou sua alma, e agora ao ponto.
A idéia da luva habrovchanin
deste artigo foi tomada como base.
A essência da idéia é que, quando um usuário faz logon no Windows, o script de logon insere as informações necessárias (nome da hora e da máquina) em um atributo específico da conta do usuário. E ao sair do sistema, ele executa um script de logoff semelhante.
Gostei da ideia em si, mas algo não deu certo na implementação.
- A diretiva de grupo, na qual os scripts de logon e logoff são gravados para os usuários, é aplicada a todo o domínio, para que os scripts funcionem em qualquer máquina na qual os usuários façam login. Se você usar soluções de terminal junto com estações de trabalho (por exemplo, produtos Microsoft RDS ou Citrix), essa abordagem será inconveniente.
- Os dados são inseridos no atributo Departamento da conta do usuário, à qual o usuário médio tem acesso somente leitura. Além do atributo de conta do usuário, o script também faz alterações no atributo Departamento da conta do computador, que os usuários também não podem alterar por padrão. Portanto, para fazer a solução funcionar, o autor sugere alterar as configurações de segurança padrão dos objetos do AD.
- O formato da data depende das configurações de localização na máquina de destino; portanto, em uma máquina, podemos obter 10 de novembro de 2018 14:53 e na outra 11/10/18 14:53
Para resolver essas deficiências, foi feito o seguinte.
- O GPO não vincula ao domínio, mas à unidade organizacional com as máquinas (eu separo usuários e máquinas por unidades organizacionais diferentes e aconselho outras pessoas). Ao mesmo tempo, o modo de processamento da política de loopback é definido para o modo de mesclagem .
- O script inserirá apenas dados na conta do usuário no atributo Informações , que o usuário pode alterar independentemente para sua conta.
- Foi alterado um pedaço de código gerando um valor de atributo
Agora os scripts ficam assim:
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
Quem encontrar primeiro todas as diferenças entre um script de logon e um logoff é uma vantagem no karma. :)
Além disso, para obter informações visuais, um pequeno script PS foi criado:
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
No total, tudo está configurado para um-dois-três:
- crie um GPO com as configurações necessárias e vincule-o à unidade com estações de trabalho do usuário:

- vá beber chá (se o AD tiver um grande número de usuários, você precisará de muito chá :)
- O script PS inicia e obtemos o resultado:

Na parte superior da janela, há um filtro conveniente no qual você pode selecionar dados pelos valores de um ou mais campos. Um clique nas colunas da tabela classifica os registros pelos valores dos campos correspondentes.
Você pode "empacotar" lindamente nossa solução.

Para fazer isso, adicione um atalho para executar o script para especialistas de suporte técnico, que terão algo parecido com isso no campo "objeto":
powershell.exe -NoLogo -ExecutionPolicy Bypass -File "\\server\share\Scripts\Get-UsersByPCsInfo.ps1"
Se houver muitos funcionários de suporte técnico, você poderá distribuir o atalho usando o
GPP .
Alguns comentários no final.
- Na máquina de onde o script PS é iniciado, o módulo do Active Directory para PowerShell deve estar instalado (para isso, basta adicionar as ferramentas de administração do AD nos componentes do Windows).
- O usuário não pode editar a maioria dos atributos de sua conta por padrão. Lembre-se disso se você decidir usar um atributo diferente de Informações .
- Informe todos os colegas envolvidos sobre qual atributo você usará. Por exemplo, as mesmas informações são usadas para adicionar anotações de maneira interativa à caixa de correio de um usuário na área de administração do Exchange Server e alguém pode substituí-la facilmente ou entristecer quando seu script substitui as informações adicionadas.
- Se você tiver vários sites do Active Directory, ajuste os atrasos na replicação. Por exemplo, se você deseja obter informações atualizadas sobre usuários do site A do AD e executar o script da máquina no site B do AD, faça o seguinte:
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 domínio do site A (por padrão, o cmdlet Get-AdUser se conecta ao controlador de domínio mais próximo)
Fonte da imagemFicaria muito grato se você passar na pequena pesquisa abaixo.