Usuário com melhor resposta
Monitorar Grupos no Active Directory

Pergunta
-
Pessoal é o seguinte:
Cada estação que é reinstalada ou estação nova que entra no domínio, o objeto computador para o grupo Unassigned Computers.
Preciso de uma solução que mova estes objetos para a sua OU correta, caso esta solução não exista, gostaria de um script que me informasse sempre que uma estação saiu de uma OU e sempre que uma estação entrar no grupo Unassigned.
Penso em deixar este script rodando em algum servidor de modo que me mande um e-mail sempre que uma dessas alterações ocorrer.
Desde já agradeço a atenção.
Respostas
-
Olá,
Você já utiliza o Redircmp ???? Para alterar o Container default para um especifico??? Segue link sobre:
http://support.microsoft.com/kb/324949
Abaixo, segue um script que verifica se o computador faz parte de um grupo.. se fizer ele move para a OU que precisa:
Option Explicit
On error resume next
Dim objDSE, strDefaultDN, strDN, objContainer, objChild,Userobj,List,GroupObj,FileSystem,OutPutFile
Dim strGrupo,ComputerObj,objNewOU,objMoveComputer
Set objDSE = GetObject("LDAP://rootDSE")
strDefaultDN = "CN=Users," & objDSE.Get("defaultNamingContext")
'alterar essas variaveis abaixo"
strGrupo = "Unassigned"
Set objNewOU = GetObject("LDAP://OU=COMPUTERS,OU=EMPRESA,DC=CONTOSO,DC=LOCAL")
strDN = "ou=computers,dc=contoso,dc=local"
If strDN = "" Then WScript.Quit(1) '
Set objContainer = GetObject("LDAP://" & strDN)
objContainer.Filter = Array("computer")
For Each objChild In objContainer
set ComputerObj = GetObject("LDAP://" & objChild.Name & "," & strDN)
if err.number<>0 then
if ChkEngine = "cscript.exe" then
wscript.echo "Erro conectando ao " & strDN & " ou computador não encontrado."
wscript.quit
else
wscript.quit
end if
end if
For Each GroupObj In ComputerObj.Groups
if instr(GroupObj.Name,strGrupo) > 0 Then
Set objMoveComputer = objNewOU.MoveHere ("LDAP://" & ComputerObj.name & "," & strDN , ComputerObj.name)
End if
Next
Next
wscript.quit
Function ChkEngine()
ON ERROR RESUME NEXT
strEngine=Wscript.FullName
if Err.Number <>0 then
wscript.echo "Error!"
wscript.echo "Erro (" & Err.Number & ") Descrição: " & Err.Description
wscript.quit
end if
PosX=InStrRev(strEngine,"\",-1,vbTextCompare)
ChkEngine=Mid(strEngine,PosX+1)
End Function
Verifique se é isso que precisa e nos retorne.
Até mais,
Jesiel
Obs.: Se útil, classifique
- Marcado como Resposta Paulo Dias Oliveira quinta-feira, 17 de junho de 2010 14:31
Todas as Respostas
-
-
Olá,
Você já utiliza o Redircmp ???? Para alterar o Container default para um especifico??? Segue link sobre:
http://support.microsoft.com/kb/324949
Abaixo, segue um script que verifica se o computador faz parte de um grupo.. se fizer ele move para a OU que precisa:
Option Explicit
On error resume next
Dim objDSE, strDefaultDN, strDN, objContainer, objChild,Userobj,List,GroupObj,FileSystem,OutPutFile
Dim strGrupo,ComputerObj,objNewOU,objMoveComputer
Set objDSE = GetObject("LDAP://rootDSE")
strDefaultDN = "CN=Users," & objDSE.Get("defaultNamingContext")
'alterar essas variaveis abaixo"
strGrupo = "Unassigned"
Set objNewOU = GetObject("LDAP://OU=COMPUTERS,OU=EMPRESA,DC=CONTOSO,DC=LOCAL")
strDN = "ou=computers,dc=contoso,dc=local"
If strDN = "" Then WScript.Quit(1) '
Set objContainer = GetObject("LDAP://" & strDN)
objContainer.Filter = Array("computer")
For Each objChild In objContainer
set ComputerObj = GetObject("LDAP://" & objChild.Name & "," & strDN)
if err.number<>0 then
if ChkEngine = "cscript.exe" then
wscript.echo "Erro conectando ao " & strDN & " ou computador não encontrado."
wscript.quit
else
wscript.quit
end if
end if
For Each GroupObj In ComputerObj.Groups
if instr(GroupObj.Name,strGrupo) > 0 Then
Set objMoveComputer = objNewOU.MoveHere ("LDAP://" & ComputerObj.name & "," & strDN , ComputerObj.name)
End if
Next
Next
wscript.quit
Function ChkEngine()
ON ERROR RESUME NEXT
strEngine=Wscript.FullName
if Err.Number <>0 then
wscript.echo "Error!"
wscript.echo "Erro (" & Err.Number & ") Descrição: " & Err.Description
wscript.quit
end if
PosX=InStrRev(strEngine,"\",-1,vbTextCompare)
ChkEngine=Mid(strEngine,PosX+1)
End Function
Verifique se é isso que precisa e nos retorne.
Até mais,
Jesiel
Obs.: Se útil, classifique
- Marcado como Resposta Paulo Dias Oliveira quinta-feira, 17 de junho de 2010 14:31