none
Script para identificar se objeto que é membro de um grupo é usuário, grupo ou computador. RRS feed

  • Pergunta

  • Fala Scripters!!!

     

    Estou na ativa. Vi este post http://forums.microsoft.com/Technet-BR/ShowPost.aspx?PostID=2220900&SiteID=29 outro dia e fiquei bastante intrigado. Adicionei isto ao PCeX, mas ficou faltando um pouco mais para melhorá-lo. Agora consigo determinar se o objeto é local ou é de domínio, porém não consigo determinar se o objeto é um usuário, grupo ou computador.

     

    O código é o descrito abaixo. Podem me ajudar????

     

    Code Block

    '---[ PCeX - Grupos e Usuários ]-----------------------------|
    Function sGU()
    On Error Resume Next
     aLin = sWin("12", "Grupos e Usuários")
     aLin = aLin & dLine0("divup1", "Grupos e contas de Usuários")
     aLin = aLin & dLine0("divup2", "Informações Gerais")

     Set Dlst = CreateObject("ADOR.Recordset")
     Dlst.Fields.Append "GroupName", adVarChar, MaxCharacters
     Dlst.Open

     Set colItems = GetObject("WinNT://" & strPC)
     colItems.Filter = Array("group")
     For Each objItem In colItems
      iGroup = iGroup + 1
      GroupName = objItem.Name

      Dlst.AddNew
      Dlst("GroupName") = GroupName
      Dlst.Update
     Next

     Dlst.Sort = "GroupName"
     Dlst.MoveFirst
     Do Until Dlst.EOF

      aLin = aLin & dLine0("divcenter2", Dlst.Fields.Item("GroupName"))

      Set Dlst1 = CreateObject("ADOR.Recordset")
      Dlst1.Fields.Append "UserAccName", adVarChar, MaxCharacters
      Dlst1.Fields.Append "UserAccBlk", adVarChar, MaxCharacters
      Dlst1.Fields.Append "UserDef", adVarChar, MaxCharacters
      Dlst1.Open
      
      Dim UserFlag
      Set colItems = GetObject("WinNT://" & strPC & "/"& Dlst.Fields.Item("GroupName") &", Group")
      For Each objItem1 in colItems.Members
       UserAccName = objItem1.Name
       UserAccBlk = gUAccBlk(strFmt, objItem1.AccountDisabled)
       
       If objItem.Class = "user" Then
        UserFlag = "Usuário"
       ElseIf objItem.Class = "group" Then
        UserFlag = "Grupo"
       ElseIf objItem.Class = "computer" Then
        UserFlag = "Computador"
       End If

       If InStr(objItem1.AdsPath, "/" & strPC & "/") Then
        UserDef = UserFlag & " Local"
       ElseIf InStr(objItem1.AdsPath, "/" & ProfLLogon & "/") Then
        UserDef = UserFlag & " do Domínio"
       End If

       Dlst1.AddNew
       Dlst1("UserAccName") = UserAccName
       Dlst1("UserAccBlk") = UserAccBlk
       Dlst1("UserDef") = UserDef
       Dlst1.Update
      Next

      Dlst1.Sort = "UserAccName"
      Dlst1.MoveFirst
      Do Until Dlst1.EOF
       aLin = aLin & aLine0("", fColor, "300", "¬> " & Dlst1.Fields.Item("UserDef") & ":", Dlst1.Fields.Item("UserAccName"), "299", "Bloqueio da Conta:", Dlst1.Fields.Item("UserAccBlk"))
      Dlst1.MoveNext
      Loop
      Dlst1.Close
       aLin = aLin & dLine0("linestyle2", "  ")
     Dlst.MoveNext
     Loop
     Dlst.Close

     If iGroup = 0 Then
      aLin = aLin & vNull(fColor, 2)
      aLin = aLin & dLine0("linestyle2", "  ")
     End If

     aLin = aLin & eWin(2)
     sGU = aLin
    End Function

     

     

     

     

    quinta-feira, 4 de outubro de 2007 23:54

Respostas

Todas as Respostas

  • Use a propriedade Class... vai retornar o tipo do objeto no grupo....

     

     

    Code Block

    If InStr(objItem1.AdsPath, "/" & strPC & "/") Then
        UserDef = UserFlag & " Local"

        objType = objItem1.Class
    ElseIf InStr(objItem1.AdsPath, "/" & ProfLLogon & "/") Then
        UserDef = UserFlag & " do Domínio"

        objType = objItem1.Class
    End If

     

     

     

    O Class retorna strings com o tipo ex.: User, Group, OrganizationalUnit, e etc....

     

    =D

    sexta-feira, 5 de outubro de 2007 17:42
    Moderador
  •  Artur de Souza Aragão wrote:

    Fala Scripters!!!

     

    Estou na ativa. Vi este post http://forums.microsoft.com/Technet-BR/ShowPost.aspx?PostID=2220900&SiteID=29 outro dia e fiquei bastante intrigado. Adicionei isto ao PCeX, mas ficou faltando um pouco mais para melhorá-lo. Agora consigo determinar se o objeto é local ou é de domínio, porém não consigo determinar se o objeto é um usuário, grupo ou computador.

     

    O código é o descrito abaixo. Podem me ajudar????

     

    Code Block

    '---[ PCeX - Grupos e Usuários ]-----------------------------|
    Function sGU()
    On Error Resume Next
     aLin = sWin("12", "Grupos e Usuários")
     aLin = aLin & dLine0("divup1", "Grupos e contas de Usuários")
     aLin = aLin & dLine0("divup2", "Informações Gerais")

     Set Dlst = CreateObject("ADOR.Recordset")
     Dlst.Fields.Append "GroupName", adVarChar, MaxCharacters
     Dlst.Open

     Set colItems = GetObject("WinNT://" & strPC)
     colItems.Filter = Array("group")
     For Each objItem In colItems
      iGroup = iGroup + 1
      GroupName = objItem.Name

      Dlst.AddNew
      Dlst("GroupName") = GroupName
      Dlst.Update
     Next

     Dlst.Sort = "GroupName"
     Dlst.MoveFirst
     Do Until Dlst.EOF

      aLin = aLin & dLine0("divcenter2", Dlst.Fields.Item("GroupName"))

      Set Dlst1 = CreateObject("ADOR.Recordset")
      Dlst1.Fields.Append "UserAccName", adVarChar, MaxCharacters
      Dlst1.Fields.Append "UserAccBlk", adVarChar, MaxCharacters
      Dlst1.Fields.Append "UserDef", adVarChar, MaxCharacters
      Dlst1.Open
      
      Dim UserFlag
      Set colItems = GetObject("WinNT://" & strPC & "/"& Dlst.Fields.Item("GroupName") &", Group")
      For Each objItem1 in colItems.Members
       UserAccName = objItem1.Name
       UserAccBlk = gUAccBlk(strFmt, objItem1.AccountDisabled)
       
       If objItem.Class = "user" Then
        UserFlag = "Usuário"
       ElseIf objItem.Class = "group" Then
        UserFlag = "Grupo"
       ElseIf objItem.Class = "computer" Then
        UserFlag = "Computador"
       End If

       If InStr(objItem1.AdsPath, "/" & strPC & "/") Then
        UserDef = UserFlag & " Local"
       ElseIf InStr(objItem1.AdsPath, "/" & ProfLLogon & "/") Then
        UserDef = UserFlag & " do Domínio"
       End If

       Dlst1.AddNew
       Dlst1("UserAccName") = UserAccName
       Dlst1("UserAccBlk") = UserAccBlk
       Dlst1("UserDef") = UserDef
       Dlst1.Update
      Next

      Dlst1.Sort = "UserAccName"
      Dlst1.MoveFirst
      Do Until Dlst1.EOF
       aLin = aLin & aLine0("", fColor, "300", "¬> " & Dlst1.Fields.Item("UserDef") & ":", Dlst1.Fields.Item("UserAccName"), "299", "Bloqueio da Conta:", Dlst1.Fields.Item("UserAccBlk"))
      Dlst1.MoveNext
      Loop
      Dlst1.Close
       aLin = aLin & dLine0("linestyle2", "  ")
     Dlst.MoveNext
     Loop
     Dlst.Close

     If iGroup = 0 Then
      aLin = aLin & vNull(fColor, 2)
      aLin = aLin & dLine0("linestyle2", "  ")
     End If

     aLin = aLin & eWin(2)
     sGU = aLin
    End Function

     

     

     

    Sem querer Eu apaguei os posts que o Felipe postou aqui.

     

    sexta-feira, 5 de outubro de 2007 21:54
  • hahahah

     

    Apagou não, meus posts estão em outro tópico...

     

    Nesse post só tem esse ai de cima mesm...

     

    =D

     

    terça-feira, 9 de outubro de 2007 19:06
    Moderador
  • OK!!!!

    terça-feira, 9 de outubro de 2007 20:07