Usuário com melhor resposta
Script com estrutura de case Apartir da OU

Pergunta
-
Estou com um problema com meu Script com estrtura de case que faz referencia aos grupos de usuários.. muita intermitência..
gostaria de testar um script com estrutura de case, apartir da OU do usuário, porem não sei como realiza-lo se alguem poder me ajudar fico grato..
vou por o trecho do script que faz o case por grupo de usuário.
Set objSysInfo = CreateObject("ADSystemInfo")
Set objNetwork = CreateObject("Wscript.Network")
strUserPath = "LDAP://" & objSysInfo.UserName
Set objUser = GetObject(strUserPath)
For Each strGroup in objUser.MemberOf
strGroupPath = "LDAP://" & strGroup
Set objGroup = GetObject(strGroupPath)
strGroupName = objGroup.CN
Case "x"
Executar procedimento de x
Case "y"
Executar procedimento de y
End Select
Next.
Respostas
-
Para eu pegar a OU dos usuários eu utilizo este script:
Function fncPegarOU()
Dim oConnection, oCommand, oRecordSet, sVlr, sPos, oWinNT, oNetwork
Set oNetwork = CreateObject("Wscript.Network")
Set oWinNT = GetObject("WinNT://DOMINIO/" & oNetwork.UserName & ",user")
sUser = oWinNt.FullName
Set oWinNT = Nothing
Set oConnection = CreateObject("ADODB.Connection")
Set oCommand = CreateObject("ADODB.Command")
oConnection.Provider = "ADsDSOObject"
oConnection.Open "Active Directory Provider"
Set oCommand.ActiveConnection = oConnection
oCommand.CommandText = "Select ADsPath from 'LDAP://DC=DOMINIO,DC=COM' where objectClass='user' and name='" & sUser & "'"
oCommand.Properties("Page Size") = 1000
oCommand.Properties("Timeout") = 30
oCommand.Properties("Cache Results") = False
Set oRecordSet = oCommand.ExecuteIf not oRecordSet.EOF Then
sVlr = oRecordSet.Fields("ADsPath").Value
sPos = InStr(sVlr,",DC=DOMINIO,DC=COM")
fncPegarOU = LCase(Mid(sVlr, Len(sUser) + 24, sPos - (Len(sUser) + 24)))
Else
fncPegarOU = ""
End IfSet oRecordSet = Nothing
Set oCommand = Nothing
Set oConnection = NothingEnd Function
Ai é só vc utilizar na estrutura case:
Select Case fncPegarOU()
Case "x"
'xxxxxxxxxxxx
Case "y"
'yyyyyyyyyy
End Select
A na variável sVlr ela retornará o ADsPath, por isso que na linha de baixo eu uso instr e o Mid... Qualquer coisa, se vc não entender avise... E alterar os DOMINIOs da vida...
Abraços
- Marcado como Resposta Wagner dos Santos VasconcellosModerator segunda-feira, 4 de junho de 2012 12:04
-
Em qual linha está dando o erro?
Tente tirar este código:
Set oNetwork = CreateObject("Wscript.Network")
Set oWinNT = GetObject("WinNT://xyz.com.br/" & oNetwork.UserName & ",user")
sUser = oWinNt.FullName
Set oWinNT = Nothing
e no lugar coloque:
sUser = SEUALIAS
Eu utilizo este código pq aqui no meu dominio está no modo misto...
Abraços
- Marcado como Resposta Wagner dos Santos VasconcellosModerator segunda-feira, 4 de junho de 2012 12:03
-
Ok o método UserName do objeto Wscript.Network me retorna somente o usuário (Logon), p/ eu pesquisar no AD a partir de OUs, preciso do Alias do user, ai utilizo o método FullName... entendeu?
vc está atribuindo o ALIAS a variável sUser?
como está a estrutura de OU sua? As OUs estão todas abaixo do domínio xyz.com.br?
Abraços
- Marcado como Resposta Wagner dos Santos VasconcellosModerator segunda-feira, 4 de junho de 2012 12:03
-
O problema é mesmo só pegar a OU?
Se precisar do DistinguishedName de um usuário, é mais fácil usar essa função pronta:
http://www.microsoft.com/technet/scriptcenter/csc/scripts/ad/users/cscad085.mspx
[]s,
--
Vinicius Canto <scripterbr_at_gmail_dot_com>
MVP Visual Developer - Scripting
MCP Windows 2000 Server, Windows XP e SQL Server 2000
Blog sobre Scripting: http://viniciuscanto.blogspot.com- Marcado como Resposta Wagner dos Santos VasconcellosModerator segunda-feira, 4 de junho de 2012 12:03
Todas as Respostas
-
Para eu pegar a OU dos usuários eu utilizo este script:
Function fncPegarOU()
Dim oConnection, oCommand, oRecordSet, sVlr, sPos, oWinNT, oNetwork
Set oNetwork = CreateObject("Wscript.Network")
Set oWinNT = GetObject("WinNT://DOMINIO/" & oNetwork.UserName & ",user")
sUser = oWinNt.FullName
Set oWinNT = Nothing
Set oConnection = CreateObject("ADODB.Connection")
Set oCommand = CreateObject("ADODB.Command")
oConnection.Provider = "ADsDSOObject"
oConnection.Open "Active Directory Provider"
Set oCommand.ActiveConnection = oConnection
oCommand.CommandText = "Select ADsPath from 'LDAP://DC=DOMINIO,DC=COM' where objectClass='user' and name='" & sUser & "'"
oCommand.Properties("Page Size") = 1000
oCommand.Properties("Timeout") = 30
oCommand.Properties("Cache Results") = False
Set oRecordSet = oCommand.ExecuteIf not oRecordSet.EOF Then
sVlr = oRecordSet.Fields("ADsPath").Value
sPos = InStr(sVlr,",DC=DOMINIO,DC=COM")
fncPegarOU = LCase(Mid(sVlr, Len(sUser) + 24, sPos - (Len(sUser) + 24)))
Else
fncPegarOU = ""
End IfSet oRecordSet = Nothing
Set oCommand = Nothing
Set oConnection = NothingEnd Function
Ai é só vc utilizar na estrutura case:
Select Case fncPegarOU()
Case "x"
'xxxxxxxxxxxx
Case "y"
'yyyyyyyyyy
End Select
A na variável sVlr ela retornará o ADsPath, por isso que na linha de baixo eu uso instr e o Mid... Qualquer coisa, se vc não entender avise... E alterar os DOMINIOs da vida...
Abraços
- Marcado como Resposta Wagner dos Santos VasconcellosModerator segunda-feira, 4 de junho de 2012 12:04
-
testei seu script mas o mesmo não funcionou!!
não se fiz algo de errado nas alterações, porem acho que não
vou te passar como ficou
Function fncPegarOU()
Dim oConnection, oCommand, oRecordSet, sVlr, sPos, oWinNT, oNetwork
Set oNetwork = CreateObject("Wscript.Network")
Set oWinNT = GetObject("WinNT://xyz.com.br/" & oNetwork.UserName & ",user")
sUser = oWinNt.FullName
Set oWinNT = Nothing
Set oConnection = CreateObject("ADODB.Connection")
Set oCommand = CreateObject("ADODB.Command")
oConnection.Provider = "ADsDSOObject"
oConnection.Open "Active Directory Provider"
Set oCommand.ActiveConnection = oConnection
oCommand.CommandText = "Select ADsPath from 'LDAP://DC=xyz,DC=com,DC=br' where objectClass='user' and name='" & sUser & "'"
oCommand.Properties("Page Size") = 1000
oCommand.Properties("Timeout") = 30
oCommand.Properties("Cache Results") = False
Set oRecordSet = oCommand.ExecuteIf not oRecordSet.EOF Then
sVlr = oRecordSet.Fields("ADsPath").Value
sPos = InStr(sVlr,",DC=xyz,DC=com,DC=br")
fncPegarOU = LCase(Mid(sVlr, Len(sUser) + 24, sPos - (Len(sUser) + 24)))
Else
fncPegarOU = ""
End IfSet oRecordSet = Nothing
Set oCommand = Nothing
Set oConnection = NothingEnd Function
'WScript.Echo oConnection
'WScript.Echo oCommand
'WScript.Echo oRecordSet
'WScript.Echo oRecordSet
'WScript.Echo sVlr
'WScript.Echo sPos
'WScript.Echo oWinNT
'WScript.Echo oNetworkSelect Case fncPegarOU()
Case "teste"
WScript.Echo "Funcionando"
' Case "y"
'yyyyyyyyyy
End Select
Eu até dei um echo nas variáveis pra ver eles retornavam o valor correspondentes a elas, mais não retornaram nenhum valor.
se vc poder rever o código ou meu erro eu ficarei grato!
- Marcado como Resposta Wagner dos Santos VasconcellosModerator segunda-feira, 4 de junho de 2012 12:03
- Não Marcado como Resposta Wagner dos Santos VasconcellosModerator segunda-feira, 4 de junho de 2012 12:04
-
Em qual linha está dando o erro?
Tente tirar este código:
Set oNetwork = CreateObject("Wscript.Network")
Set oWinNT = GetObject("WinNT://xyz.com.br/" & oNetwork.UserName & ",user")
sUser = oWinNt.FullName
Set oWinNT = Nothing
e no lugar coloque:
sUser = SEUALIAS
Eu utilizo este código pq aqui no meu dominio está no modo misto...
Abraços
- Marcado como Resposta Wagner dos Santos VasconcellosModerator segunda-feira, 4 de junho de 2012 12:03
-
-
Ok o método UserName do objeto Wscript.Network me retorna somente o usuário (Logon), p/ eu pesquisar no AD a partir de OUs, preciso do Alias do user, ai utilizo o método FullName... entendeu?
vc está atribuindo o ALIAS a variável sUser?
como está a estrutura de OU sua? As OUs estão todas abaixo do domínio xyz.com.br?
Abraços
- Marcado como Resposta Wagner dos Santos VasconcellosModerator segunda-feira, 4 de junho de 2012 12:03
-
O problema é mesmo só pegar a OU?
Se precisar do DistinguishedName de um usuário, é mais fácil usar essa função pronta:
http://www.microsoft.com/technet/scriptcenter/csc/scripts/ad/users/cscad085.mspx
[]s,
--
Vinicius Canto <scripterbr_at_gmail_dot_com>
MVP Visual Developer - Scripting
MCP Windows 2000 Server, Windows XP e SQL Server 2000
Blog sobre Scripting: http://viniciuscanto.blogspot.com- Marcado como Resposta Wagner dos Santos VasconcellosModerator segunda-feira, 4 de junho de 2012 12:03