Mostrando postagens com marcador active directory. Mostrar todas as postagens
Mostrando postagens com marcador active directory. Mostrar todas as postagens

quinta-feira, 12 de abril de 2012

Como funciona o atributo "LastLogonTimeStamp"

Seu chefe chega em sua sala, todo pirilampo e saltitante e diz que chegou a hora de fazer uma limpeza de sua base do Active Directory, e todos os computadores e usuários inativos por mais de 90 dias devem ser eliminados.

Você, confiante, lembra-se do atributo lastLogon e prontamente prepara um relatorio para seu chefe. Minutos depois ele volta para sua sala, mas nem tanto saltitante, talvez até com chamas nos olhos, joga o relatorio em sua mesa, e pergunta "Por que metade de nossos computadores/usuarios nunca fizeram logon"?

Já desesperado, você confere os seus domain Controllers vê que o atributo LastLogon aparece em um DC mas não aparece nos outros! Como pode?

A resposta: Isso é por Default do Windows. este atributo NÃO É replicado. Mas calma! Nem tudo está perdido.

O atributo lastLogon não foi desenhado para prover a informação de login reais. Então, a partir do Windows Server 2003 foi introduzido o lastLogontimeStamp!! O atributo perfeito para auxiliar a localização de máquinas e usuários inativos, uma vez que, com as configurações padrão, o lastLogontimeStamp estará em média 9 a 14 dias atrás da data corrente.

NOTA:
Se você procura por um rastreamento "real-time", voce precisará pesquisar os logs de Security Events dos seus DC's

Requerimentos:
Seu domínio precisa ter o nível funcional de NO MINIMO windows 2003.

Atualizações e Replicação do lastLogontimeStamp
Antes de tudo, você precisa se familiarizar com o atributo msDSLogonTimeSyncInterval , que controla o intervalo (em dias) de quando o lastLogontimeStamp é atualizado. Se você olhar o ADSIEDIT.MSC, poderá verificar que o msDSLogonTimeSyncInterval estará como not set, mas não se assuste. O not set indica o padrão de 14 dias.

Se desejar desligá-lo, basta deixar como 0 (zero).


Como saber se o lastLogontimeStamp está replicando
Para verificaar se está replicando corretamente, você pode usar o comando repadmin.exe com o swich showattr. Veja alguns exemplos abaixo:

1. Usando repadmin para verificar o valor do lastLogontimeStamp em todos os DC's para um usuário:

repadmin /showattr * (DN of the target user) /attrs:lastLogontimeStamp >lastLogontimeStamp.txt

Examplo:
repadmin /showattr * CN=user1,OU=accounting,DC=domain,dc=com /attrs:lastLogontimeStamp >lastLogontimeStamp.txt

2. Usando repadmin para fazer um dump do lastLogontimeStamp para todos os usuários de um dominio, incluindo aqueles que estão com o lastLogontimeStamp zerado:

repadmin /showattr * /subtree /filter:"(&(objectCategory=Person)(objectClass=user))" /attrs:lastLogontimeStamp >lastLogontimeStamp.txt

3. Dump lastLogonTimeStamp para todos os usuários com o atributo preenchido:

repadmin /showattr * dc=domain,dc=com /subtree /filter:"((&(lastLogontimeStamp=*)(objectCategory=Person)(objectClass=user)))" /attrs:lastLogontimeStamp > lastLogontimeStamp-2-22-2009.txt



Espero ter ajudado! Se gostou, deixe um comentário!

sexta-feira, 3 de setembro de 2010

The Scripting Fiad - Apagando Temporários do Outlook e Temporary Internet Files

Olá Rapaziada! Atendendo aos milhões de pedidos (...) dos fãs do meu super hiper blog, vai aqui um script que apaga os temporários dos arquivos .PST do Outlook e também todos os Temporary Internet Files.

No meu caso tive que desenvolver este script pois como eu uso perfil móvel, alguns perfis estavam com 5 ou até 8 Giga. Quando fui ver tinha uns 10 arquivos .TMP com o tamanho dao arquivo de dados do Outlook. Não sei porque ele fez isso, mas tudo indica que é quando dava algum problema, ele passava o Reparador de pasta do outlook e criava esses temporários.

Coloquei tanto na inicialização como no encerramento do Windows, e nunca mais tive esse problema.

Abaixo, o script

'Script para apagar arquivos com extensão .TMP do diretório Outlook - Computadores com Windows XP
'Editado em 03 Setembro 2010 - Adicionado apagar todos os Arquivos temporários da internet
'Desenvolvido por Felipe Gustavo Fiad

On Error Resume Next

Dim sDocsAndSettings
Dim strComputer
Dim oFolder
Dim fso
Dim oFolder1
Dim oFolder2
Dim oFolder3
Dim oSubFolder1
Dim oSubFolder2
Dim oSubFolder3
Dim colSubfolders1
Dim colSubfolders2
Dim colSubfolders3
Dim oFile
Dim userProfile
Dim Windir

' Deleta todos os temporários do outlook para evitar demora ao ler perfil

Set DeleteTmp = CreateObject("Scripting.FileSystemObject")

Set objUsuario = CreateObject("Wscript.Network")
Usuario = objUsuario.Username


DeleteTmp.DeleteFile("C:\Documents and Settings\" & Usuario & "\Outlook\*.tmp")

DeleteTmp.DeleteFile("\\srvadm\profiles$\" & Usuario & "\Outlook\*.tmp")


' Deleta todos os arquivos temporários da internet

strComputer = "."
Set fso = createobject("Scripting.FileSystemObject")

'USER PROFILES
sDocsAndSettings = "C:\Documents and Settings\" ' Probably there is an environment variable or other variable

Set colFolders = fso.GetFolder(sDocsAndSettings) 'Collection of all profiles

For Each oFolder In colFolders.SubFolders
Select Case LCase(oFolder.Name)
Case "admin", "administrator", "newuser", "all users", "default user.original", "localservice", "networkservice"
'DO NOTHING
Case Else
'Set up environment
Set WSHShell = CreateObject("WScript.Shell")
Set fso = createobject("Scripting.FileSystemObject")
userProfile = WSHShell.ExpandEnvironmentStrings("%userprofile%")
Windir = WSHShell.ExpandEnvironmentStrings("%windir%")

'start deleting files
Set oFolder1 = fso.GetFolder(userProfile & "\Local Settings\Temp\")
For Each oFile In oFolder1.files
oFile.Delete True
Next

'Delete folders and subfolders
Set colSubfolders1 = oFolder1.Subfolders
On Error Resume Next
For Each oSubfolder in colSubfolders1
fso.DeleteFolder(oSubFolder), True
Next
Set oFolder2 = fso.GetFolder(userProfile & "\Local Settings\Temporary Internet Files\")
For Each oFile In oFolder2.files
oFile.Delete True
Next
Set colSubfolders2 = oFolder2.SubFolders
For Each oSubfolder in colSubfolders2
fso.DeleteFolder(oSubFolder)
Next
Set oFolder3 = fso.GetFolder(Windir & "\Temp\")
For Each oFile In oFolder3.files
oFile.Delete True
Next
Set colSubfolders3 = oFolder1.Subfolders
For Each oSubfolder in colSubfolders3
fso.DeleteFolder(oSubFolder)
Next

End Select
Next

'Clear memory
Set fso = Nothing
Set oFolder1 = Nothing
Set oFolder2 = Nothing
Set oFolder3 = Nothing
Set oSubFolder1 = Nothing
Set oSubFolder2 = Nothing
Set oSubFolder3 = Nothing
Set colSubfolders1 = Nothing
Set colSubfolders2 = Nothing
Set colSubfolders3 = Nothing
Set oFile = Nothing
Set userProfile = Nothing
Set Windir = Nothing

WScript.Quit

Tá Prontinho! É só recortar e colar. Apenas atente ao perfil do Outlook, pode ser que em sua empresa ele esteja em outra pasta. Espero ter ajudado!!

quinta-feira, 2 de setembro de 2010

Renomeando REMOTAMENTE um Computador no Domínio

Olá Pessoal!

Vira e mexe, todo mundo precisa trocar uma estação de lugar, ou pra substituir aquele micro que deu pau, você coloca no lugar aquele reserva que ninguém estava usando.

O Micro já estava todo configurado, não precisa fazer mais nada. Mais tarde, você vê no DNS ou no DHCP um nome nada a ver, e só então se lembra que é aquela máquina que voce substituiu.

Você pensa:

"Puxa, descer 04 andares só pra renomear uma máquina! Justo Hoje que o elevador quebrou!"

ou

"Ah, tá logo na mesa la da frente mas é que eu prefiro evitar a fadiga..."

Então indaga-se: "Caramba se é rede Gerenciada tem que ir na mesa mudar o nome da máquina, reiniciar o micro?"

Eu digo: SEUS PROBLEMAS ACABARAM! TEM COMO FAZER ISTO SEM LEVANTAR DA SUA CONFORTÁVEL CADEIRA DO SETOR DE T.I.!!

Vamos lá:

Para renomear um computador remotamente em sua rede, baixe o arquivo acima chamado “netdom.exe” (que voce encontra no Support Tools de seu CD do windows 2003 Server ou baixe ele aqui, para uma pasta de sua escolha. De preferência na pasta %systemroot%\system32\ pois qualquer arquivo executável que você guarda lá pode ser chamado de qualquer outra pasta, em um prompt de comando.

Vou ensinar a fazer um script em extensão .BAT ou então digite diretamente na linha de comando (Prompt do MS-DOS - Iniciar/Executar/cmd.exe)

Se for fazer o script, no bloco de notas (Iniciar/Executar/Notepad.exe), copie e cole a linha abaixo, alterando as informações em vermelho conforme necessário:

netdom RENAMECOMPUTER COMPUTADORANTIGO /Newname:COMPUTADORNOVO /ud:DOMINIO\USER /PasswordD:SENHA

Salve o arquivo dentro da mesma pasta do “netdom.exe” com extensão .BAT. Caso queira renomear mais de uma máquina, copie e cole a linha abaixo desta, em sequência, alterando somente o que for necessário.

Para executar o script não basta configurar a BAT com senha de administrador. Terá que logar no compuador com senha de administrador do domínio primeiro para depois executá-la.

Se quiser forçar o reboot da máquina, o argumento /REBOOT deverá ser adicionado ao script. Caso receba mensagem de que não foi possível executar devido a algum processo, use também o argumento /FORCE.


Dicas:

  • Assim que reiniciar, o computador estará renomeado!
  • Não precisa resetar a computer accont do seu domain controller, ele renomeia sozinho!


Mais uma peripécia resolvida e com a solução passo-a-passo! Aproveite e veja mais utilidades para o comando NETDOM.EXE em meu outro post!!



terça-feira, 22 de junho de 2010

Limpando a fila de Impressão e "Resetando" o Spooler

Quem é que nunca mandou uma impressão errada, cancelou porém não resolveu? o Windows continua mandando, ou fica travado na fila, emperrando o resto dos seus documentos. Você desliga e liga a impressora, o computador e ainda não resolveu.

Antes de começar a chutar o balde siga estes procedimentos. Testado e funcionando no Windows XP, no Windows 7 e no Windows 2003 Server.

Abra um prompt de comando. Iniciar, executar, CMD.exe

No windows 7 não esqueça de executar como administrador. Voce pode clicar com o botão direito e escolher "Executar como Administrador" ou então ir no iniciar, executar (ÿ + R) e digite runas /user:minhamaquina\administrator cmd

Ao abrir o prompt, digite os passos abaixo, na ordem:

1. net stop spooler -enter-
2. cd c:\windows\system32\spool\PRINTERS -enter-
3. del /f /s *.shd -enter-
4. del /f /s *.spl -enter-
5. net start spooler -enter-
6. exit -enter- (comando opcional caso voce quiser sair do prompt)

Cuidado ao utilizar estes comandos em um servidor de impressão pois isto apagará TODAS as impressões de TODAS as impressoras. Portanto, verifique em qual impressora e em qual fila está o problema. Senão vão arrancar o seu fígado.

Para usar em estações (Win Xp ou Win 7), você pode também fazer um programinha com as extensões .CMD ou .BAT. Dê preferência para extensão .CMD pois executa mais rápido que arquivos de lote (batch ou .bat).

Crie um novo documento de texto, com NOTEPAD, digite um comando em cada linha e na hora de salvar como digite entre aspas "Nomearquivo.CMD"

E uma frase muito boa que um de meus instrutores me disse sobre administrar redes, que também para quem é aquela pessoa que sabe um pouco mais e é alugada pelos colegas: "ACONTEÇA O QUE ACONTECER, A CULPA É SUA"

segunda-feira, 7 de junho de 2010

Erro NetLogon 5719

Um notebook velho da Dell que tinhamos aqui, foi passado para deixar na recepção, pois tem placa de rede wireless e dá pra rodar alguns programas do escritório.

Depois de formatá-lo e instalar o windows e o office via R.I.S. (ou Windows Deployment Services para as versões mais novas), fui aplicar a instalação dos softwares da empresa via GPO.

De jeito nenhum funcionava. Não aplicava a politica para o computador não importa o que eu fizesse, nem gpupdate /sync /force /boot, conforme pode ser visto no meu primeiro post, neste link.

Então, utilizando o Group Policy Management Console (GPMC) fiz algumas simulações de ambiente e obtive o seguinte erro:

Instalação de software

Instalação de software did not complete policy processing because a system restart is required for the settings to be applied.
Group Policy will attempt to apply the settings the next time the computer is restarted.

Additional information may have been logged. Review the Policy Events tab in the console or the application event

log for events between 14/5/2010 15:57:22 and 14/5/2010 15:57:25.

Localizei então no Event Viewer o erro:

Tipo de evento: Erro
Origem do evento: NETLOGON
Categoria do evento: Nenhum
Identificação do evento: 5719
Data: 9/28/2001
Hora: 16:12:55
Usuário: N/D
Computador Server
Descrição:
Nenhum controlador de domínio do Windows NT ou Windows 2000 está disponível para o domínio . O seguinte erro ocorreu: Atualmente não há servidores de logon disponíveis para executar a solicitação de logon.
Dados: 0000: c00000

Verificando na internet, pude localizar a solução na seguinte KB da Microsoft: KB 310339

Mas para facilitar a vida do visitante já vou postar a solução, que requer editar o registro da maquina local que está dando o problema.

Uma possível causa deste erro é a falta de espaço no buffer de datagrama ou NetBT. Para resolver isto, voce precisará abrir o editor de registro do Windows.

Vamos pressupor que será utilizado o REGEDIT, através do Menu Iniciar>Executar>Regedit.exe

Localize a entrada HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\NetBT\Parameters

Após, clique com o botão direito do mouse em Parâmetros, clique em Novo e em REG_DWORD -ou- No menu Editar, clique em Novo e em REG_DWORD e adicione as novas informações da chave de registro conforme abaixo:

Nome do valor: MaxDgramBuffering Tipo de dados: REG_DWORD Valor: 0x40000

Lembre-se: no registro do windows não vai aparecer 0x400000 mas sim 0x00400000 - o que é a mesma coisa.. você, concentrado no problema, vai perceber que não ficou igualzinho a solução e vai achar estranho. Porém está correto.

A Entrada de seu registro deve ficar assim:



Reinicie o computador e verifique se está funcionando!!

Espero ter ajudado! As vezes as soluções das KB's da Microsoft são meio confusas e alguns sites que postam soluções são pagos, requerem registro, ou seja são chatos pra caramba. Quero sempre poder ajudar. Conforme vão surgindo os problemas mais cabeludos vou postando aqui. Se esta solução não funcionou em seu computador, comente e vamos juntos tentar achar a solução.

Abraços!

terça-feira, 4 de maio de 2010

The Scripting Fiad

Bom dia!! Tô gostando de postar as peripécias aqui no blog... E acabei de fazer mais uma.

E é SCRIPT VBS!! hehehe

Aqui no escritório implantei a seguinte estrutura de pastas

FINANCEIRO
|_ (Pasta do Cliente)

COBRANCA
|_ (Pasta do Cliente)

CADASTRO
|_ (Pasta do Cliente)

GERENCIA
|_(Pasta do Cliente)

Esta estrutura é nova e os usuários ainda não se acostumaram. Nossa diretora (Minha sócia e minha mamae.. ai que meigo) criou uma pasta na raiz do compartilhamento com o nome do novo cliente e jogou um monte de coisas lá.

Traduzindo, mais trabalho pra mim. Tive que criar a pasta do cliente em cada sub-diretório da nova estrutura e separar a documentação e jogar cada um na sua respectiva pasta.

Para evitar isto, bloqueei a criação de pastas na raiz do compartilhamento e no lugar deixei um atalho para um script VBS que cria automaticamente a pasta desejada dentro de cada subdiretório corretamente. O script segue abaixo.


'Script para Criação de novo diretório quando empresa adquire novo cliente
'Criado Por Felipe Gustavo Fiad


On Error Resume Next

' Cria objetos padrão
Set objFSO = CreateObject("Scripting.FileSystemObject")

'Caixa de entrada para o usuário digitar a nova pasta
strPasta = InputBox("Digite o nome da Nova Pasta" & VbCrLf & "", ,"" )


' Cria pasta na Gerência
strGerencia = "\\SRVADM\DEPARTAMENTAL\GERENCIA\" & strPasta
Set objFolder = objFSO.CreateFolder(strGerencia)

' Cria pasta no Financeiro
strFinanceiro = "\\SRVADM\DEPARTAMENTAL\FINANCEIRO\" & strPasta
Set objFolder = objFSO.CreateFolder(strFinanceiro)

' Cria pasta na Cobranca
strCobranca = "\\SRVADM\DEPARTAMENTAL\COBRANCA\" & strPasta
Set objFolder = objFSO.CreateFolder(strCobranca)

' Cria pasta no Cadastro
strCadastro = "\\SRVADM\Departamental\Cadastro\" & strPasta
Set objFolder = objFSO.CreateFolder(strCadastro)

segunda-feira, 3 de maio de 2010

Aplicando Política de Grupo em Terminal Services

Pois é. De acordo com meu post anterior, vou publicar aqui algumas dicas e print screens de como solucionei o problema de aplicar a GPO em um servidor virtual de Terminal Services.

Na verdade, pode ser real ou virtual, não importa. Primeiramente coloque o servidor em uma unidade organizacional específica, para que ela herde apenas as políticas de grupo que voce acha necessário. No meu caso, veja o exemplo abaixo:


BANKSERVER = Nome do servidor de Terminal Services
ClientServersAdministradora = Grupo específico para computadores que serão servidores clientes, com acesso a terminal services (No caso de eu precisar fazer mais máquinas para este fim, mas é sempre bom organizar)
RemoteDeskFinanceiro = Usuários do setor financeiro que terão acesso aos servidores presentes em ClientServerAdministradora. (Neste Caso, BANKSERVER)

No servidor em questão (daqui pra frente BANKSERVER) edite as configurações de terminal services, e na guia PERMISSIONS, deixe alguma coisa parecida com isto:



Removendo o grupo padrão REMOTE DESKTOP USERS, voce garante que somente os usuários daquele grupo que voce quer acesse. No meu caso já tenho usuários de outros setores cadastrados em Remote Desktop Users que não devem acessar este servidor.
O grupo de usuários que voce quer permitir utilizar o BANKSERVER não devem possuir direitos de Full Control.

De volta ao Controlador de Domínio, abra o GPMC (Group Policy Management Console - Download). Na política que você acabou de criar com todas as opções desejadas pelo administrador da sua rede ou você mesmo, na guia SCOPE, na opção Security Filtering aplique a GPO somente ao computador e aos usuários que você escolheu, como no exemplo abaixo:



No meu caso, esta política somente será aplicada aos usuários que fazem parte do grupo RemoteDeskFinanceiro e aos computadores que fazem parte do grupo ClientServersAdministradora. Então quaisquer outros computadores ou usuários que eu inserir nestes grupos, automaticamente terão a política aplicada.

Abaixo, O printscreen da árvore das políticas de grupo e como elas estão dispostas, e na guia Inheritance, você poderá ver como a política está sendo aplicada a OU que o Bankserver está alocado.


E para acabar, um relatório completo de todas as configurações das políticas aplicadas a um usuário do setor financeiro que pode acessar o BANKSERVER. O Post vai ficar meio grande, mas pelo menos bem detalhado.

((Não estou conseguindo dar upload no relatório pelo rapidshare nem pelo megaupload. Assim que achar um servidor eu faço))