Usuário com melhor resposta
Administradores locais alterar informação do log

Pergunta
-
Ba galera,
Peguei este script aqui no forum que lista os admin locais de uma maquina tche, porem eu gostaria de saber se a conta que ele esta apontando é do dominio ou não, no resultado tche ele coloca só o nome da conta e com isto eu não sei se elaé local ou do dominio tche, alguem consegue me ajudar.
Obrigado tche.
codigo.
on error resume next Set WshNetwork = WScript.CreateObject("WScript.Network") StrComputer = WshNetwork.ComputerName Set objWMIService = GetObject("winmgmts:\\" & StrComputer & "\root\cimv2") if Err.number <> 0 then Err.Clear wscript.quit End if Set colAccounts = objWMIService.ExecQuery _ ("Select * From Win32_Group Where Domain = '" & StrComputer & "'") For Each objAccount in colAccounts If objAccount.SID ="S-1-5-32-544" Then Set ObjAdministrador = GetObject("WinNT://" & strComputer & "/" & objAccount.Name & "") StrGroup = objAccount.Name End if Next Local = "c:\temp\" FileLog = Local & WshNetwork.ComputerName & "_" & StrGroup & ".txt" ActionList = "no" Set ObjFSO = CreateObject("Scripting.FileSystemObject") Const ForReading = 1, ForWriting = 2, ForAppending = 8 Set ObjFileRead = ObjFSO.opentextfile(FileLog, ForReading, True) Set ObjFileAppending = ObjFSO.opentextfile(FileLog, ForAppending, True) Set objNetwork = CreateObject("WScript.Network") Set objGroup = GetObject("WinNT://" & StrComputer & "/" & StrGroup & ",group") StrMemberAdsPath = "WinNT://" & StrComputer & "/" & StrMember AdsPathGroup = objGroup.AdsPath For Each objUser In objGroup.Members WriteLog WshNetwork.ComputerName &","& Ucase(objUser.name) &","& objUser.class ActionList = "yes" Next Function WriteLog (Text) ObjFileAppending.WriteLine Text End Function
Respostas
-
Sim, utilize IFs, com várior ORs (Ous), se não se encaixar em nenhum dos "Ous" então é porque está fora do padrão. Compare com o ADSPath.
Fábio de Paula Junior
- Marcado como Resposta Marcelo TI sexta-feira, 16 de maio de 2014 15:34
Todas as Respostas
-
Marcelo,
Existe um atributo chamado ADSPath que ajuda nesta informação pois:
Quando o usuário é do dominio o formato é: WinNT://<DOMAINNAME>/<USERNAME>
Quando o usuário é local é: WinNT://<DOMAINNAME>/<COMPUTERNAME>/<USERNAME>
Então basta você verificar se existe o nome do computador dentro deste atributo se existir é porque é um objeto local. Fiz a alteração apenas no trecho que resolve, veja:
For Each objUser In objGroup.Members if instr(objUser.ADSPath,StrComputer) then strTipoGrupo="Local" else strTipoGrupo="DOMINIO" end if WriteLog WshNetwork.ComputerName &","& Ucase(objUser.Name) &","& objUser.class & "," & strTipoGrupo ActionList = "yes" Next
Ref.:
Get Windows Group Members Using Powershell
http://www.epcusa.com/blog/2011/04/get-windows-group-members-using-powershell-2/
Fábio de Paula Junior
- Editado Fábio JrModerator quinta-feira, 15 de maio de 2014 19:07
- Marcado como Resposta Marcelo TI quinta-feira, 15 de maio de 2014 21:42
- Não Marcado como Resposta Marcelo TI quinta-feira, 15 de maio de 2014 21:42
- Sugerido como Resposta Fábio JrModerator sexta-feira, 16 de maio de 2014 13:43
-
Ba tche e isto mesmo fabião que eu gostaria ja ajuda muito, mas deixa eu te perguntar tche, tem como eu colocar mas um if ou outra coisa tche que ja tenha uma lista de grupos ou contas padrões para que ele escreva no log, que a conta levantada no grupo é padrão e caso não for ele coloque que esta fora do padrão tche.
obrigado.
-
Sim, utilize IFs, com várior ORs (Ous), se não se encaixar em nenhum dos "Ous" então é porque está fora do padrão. Compare com o ADSPath.
Fábio de Paula Junior
- Marcado como Resposta Marcelo TI sexta-feira, 16 de maio de 2014 15:34
-