Dicas úteis sobre Scripts de Logon - Parte 2

Por Vinicius Canto

Olá pessoal!
Vamos continuar o artigo com dicas sobre scripts de logon, explicando mais sobre três assuntos relacionados: Sistema de Arquivos e Registro, Impressoras e Mensagens de aviso. No final, temos também uma lista de links úteis para este artigo.

Impressoras

Conectar usuários à impressoras de rede automaticamente é uma tarefa comum que pode (e deve) ser feita utilizando scripts de logon. A grande vantagem de instalar impressoras usando scripts de logon é o ganho de tempo: uma impressora nova pode ser instalada para todos os usuários da rede em poucos minutos. Quando uma impressora for desativada, pode ser facilmente removida da rede.

Outro ponto importante é que as conexões com impressoras de rede ficam armazenadas no perfil do usuário. Sem scripts de logon, o administrador precisaria instruir os usuários a conectar-se às impressoras de rede ou fazer o trabalho manualmente.

Para conectar-se à impressoras de rede, o WSH disponibiliza dois métodos: o AddWindowsPrinterConnection e AddPrinterConnection. A diferença entre os dois é o tipo de impressora: o primeiro serve para impressoras baseadas em Windows, enquanto o segundo é indicado para impressoras baseadas em MS-DOS. Veja um exemplo abaixo:

Set objNet = WScript.CreateObject("WScript.Network")
objNetwork.AddWindowsPrinterConnection "\\printerserver\printerA"

Note que o script acima é bem semelhante ao que foi apresentado para mapeamento de unidades, e pode ser modificado da mesma forma. Você pode, por exemplo. mapear impressoras baseando-se nos grupos que um usuário pertence.

Existe um pequeno detalhe quanto à estes dois métodos. Nos sistemas operacionais Windows 9x, os primeiro método requer um parâmetro extra - o nome do driver - que deve ser previamente instalado no computador. Mais detalhes podem ser encontrados na documentação.

Mensagens de aviso

As mensagens de aviso são extremamente úteis para divulgar pequenas mudanças nos computadores e na rede em geral. Isto pode ser feito utilizando a função msgbox do VBScript, que foi apresentada no primeiro artigo. Abaixo, um pequeno exemplo do que pode ser feito:

strTitulo = "Seção Técnica de Informática"

strMensagem = _
"AVISO IMPORTANTE" & vbcrlf & vbcrlf & _
"mensagem de teste, mensagem de teste, mensagem de teste" & vbcrlf & _
"mensagem de teste, mensagem de teste, mensagem de teste" & vbcrlf & _
"e está sujeito à punição prevista no regimento interno."

msgbox strMensagem, 0 + 64, strTitulo

Sistema de Arquivos e Registro

Vale a pena comentar um pouco também sobre como manipular arquivos, pastas e chaves no registro com scripts de logon, pois há alguns detalhes importantes.
Como estamos usando scripts de logon, temos que ter em mente que ele será executado no contexto do usuário comum. Usuários comuns normalmente não têm permissão para acessar máquinas remotamente via rede usando WMI. Então, porque usar WMI para tarefas simples como copiar arquivos de um servidor, modificar valores no registro se as próprias ferramentas do Windows Scripting Host conseguem fazer isso? Veja abaixo alguns dos motivos do porque devemos dar preferência aos métodos e objetos do FSO aos do WMI:

  • FSO é mais rápido do que o WMI ao trabalhar com arquivos e pastas. Isto porque o WMI foi desenvolvido para trabalhar em rede, e para trabalhar localmente ele precisa criar uma conexão com a máquina local antes de executar qualquer ação.

  • WMI não vem instalado por padrão em todos os sistemas operacionais Microsoft, como o Windows 95, 98 e 98 SE. Se um dia você for utilizar um script destes em sistemas antigos, terá que fazer modificações.

  • Para manipular o Registro você pode utilizar os métodos RegRead, RegWrite e RegDelete do objeto WScript.Shell. As vantagens são mesmas que foram citadas acima.

Manipulação de arquivos com FSO é uma área que pode ser mais aprofundada, e, portanto, teremos mais artigos específicos sobre este assunto. Os exemplos então serão dados posteriormente.

Links

Seguem links úteis com referência dos métodos utilizados neste artigo:

Item

Referência

Objeto WSHNetwork

https://msdn.microsoft.com/library/en-us/script56/html/438d1705-fb98-4a63-86e5-a8cc01f4ce16.asp

Método MapNetworkDrive

https://msdn.microsoft.com/library/en-us/script56/html/fef5a591-c633-4c18-91a3-848e72a36ca7.asp

Propriedade WSHNetwork.Username

https://msdn.microsoft.com/library/en-us/script56/html/a96adec2-4898-46c2-8154-9b02a49e52c3.asp

Interface IADsUser do ADSI, usada para obter os grupos a que um usuário pertence

https://msdn.microsoft.com/library/default.asp?url=/library/en-us/adsi/adsi/iadsuser.asp

Função InStr, que verifica se uma string está contida em outra

https://msdn.microsoft.com/library/en-us/script56/html/cf0c9b24-ea84-420b-9393-2dbe0c58d7d1.asp

Método AddWindowsPrinterConnection

https://msdn.microsoft.com/library/en-us/script56/html/999614b9-1d1e-4d7a-af43-e22ab22fb782.asp

Método AddPrinterConnection

https://msdn.microsoft.com/library/en-us/script56/html/672f0518-a698-44b9-9f94-2a0bb201e16a.asp

Função Msgbox

https://msdn.microsoft.com/library/en-us/script56/html/ae073d50-e4a4-4e23-8e46-0cb1369965e7.asp?frame=true

Objeto WSHShell

https://msdn.microsoft.com/library/en-us/script56/html/7b956233-c1aa-4b59-b36d-f3e97a9b02f0.asp

Objeto FilesystemObject

https://msdn.microsoft.com/library/en-us/script56/html/8b99eead-e2bd-45c6-9660-bbbfeec192f0.asp

Conclusões

A idéia principal deste artigo é ilustrar o que pode e o que não pode ser feito através de scripts de logon. Tenha em mente que um script de logon nada mais é do que uma rotina feita para 'aliviar' o trabalho do usuário, que automatiza algumas tarefas que ele mesmo poderia fazer.

Esta é uma das maiores dúvidas e reclamações nos grupos de discussão. Futuramente, escreverei mais sobre scripts e execução remota com WMI e scripts de inicialização, que são outras técnicas que confundem muitos administradores. E lembre-se: teste sempre seus scripts antes de aplicar alterações na sua rede.

Até mais!
Vinicius Canto