none
Ajuda com Script...(script nao respeita condicao por grupo) RRS feed

  • Pergunta

  • Senhores, tenho o seguinte script:

    Dim objNetwork, sDomain, sUser, objUser

    Set objNetwork = CreateObject("WScript.Network")

    sDomain = objNetwork.UserDomain

    sUser = objNetwork.UserName

    Set objUser = GetObject("WinNT://" & sDomain & "/" & sUser)

    Set oShell= CreateObject("Wscript.Shell") 

    strPrograma = "\\SERVIDOR\COMPARTILHAMENTO\PROGRAMA.EXE"


    For each oGroup in objUser.Groups

        If UCase(oGroup.Name) = "NAO_EXECUTAR" Then

    wscript.quit

        else

           oShell.Run strPrograma,, True

        end if

    next

    wscript.quit


    Meu problema é o seguinte, ELE NAO APRESENTA ERRO, estou executando com o meu usuario de rede, e o mesmo está nesse grupo NAO_EXECUTAR. Mas mesmo assim ele está executando o programa e ALEM DISSO, o serviço WSCRIPT nao finaliza, fica tipo em algum looping sei la...

    Alguem pode me ajudar com isso?! Grato.


    Albert Santos
    sexta-feira, 27 de agosto de 2010 19:52

Todas as Respostas

  • Alberto,

    Acho que seu script nao funcionava pois ele acabava testando apenas o primeiro grupo.

    Veja o script abaixo comentado.

     

    Dim objNetwork, sDomain, sUser, objUser
    
    Set objNetwork = CreateObject("WScript.Network")
    
    sDomain = objNetwork.UserDomain
    
    sUser = objNetwork.UserName
    
    Set objUser = GetObject("WinNT://" & sDomain & "/" & sUser)
    
    Set oShell= CreateObject("Wscript.Shell") 
    
    strPrograma = "\\SERVIDOR\COMPARTILHAMENTO\PROGRAMA.EXE"
    
    booINGROUP=false 'Criei esta variavel com valor False, se falso quer dizer que o usuario nao esta dentro do grupo
    
    
    For each oGroup in objUser.Groups
      'Verifica cada grupo, se o usuario estiver dentro do grupo seta boINGROUP com TRUE e sai do FOR
      If UCase(oGroup.Name) = "nome_do_grupo" Then
    	booINGROUP = True
    	EXIT FOR
      end if
    
    next
    
    'Se nao fizer parte do grupo entao roda o programa
    IF not(booINGROUP) then oShell.Run strPrograma,, True
    

    Fábio de Paula Junior
    sábado, 28 de agosto de 2010 12:41
    Moderador
  • Infelizmente, nao funcionou.

     

    O script nao apresenta nenhuma mensagem de erro, porem ele nao executa o programa. Usei exatamente seu script alterando apenas o caminho do executável e o nome do grupo. 

     

    Alguma outra sugestao? 


    Albert Santos
    segunda-feira, 6 de setembro de 2010 17:02
  • Tente Assim:

    Dim objNetwork, sDomain, sUser, objUser

    Set objNetwork = CreateObject("WScript.Network")
    sDomain = objNetwork.UserDomain
    sUser = objNetwork.UserName
    Set objUser = GetObject("WinNT://" & sDomain & "/" & sUser)
    Set oShell= CreateObject("Wscript.Shell")
    strPrograma = "\\SERVIDOR\COMPARTILHAMENTO\PROGRAMA.EXE"
    For each oGroup in objUser.Groups
        If UCase(oGroup.Name) = "NAO_EXECUTAR" Then
      WScript.Quit
     End If     
    Next
    oShell.Run strPrograma,, True
    WScript.Quit

    Abraço. 


    Gabriel Nascimento MCP / MCTS / MCSA / MCSE / CCNA http://gabrielnascimentoit.spaces.live.com -- Se for útil vote.
    segunda-feira, 6 de setembro de 2010 18:44
  • Albert

    Os scripts não geram erro porque não estão errados. Tanto o meu script quanto o do Gabriel estão corretos. A única observação a fazer é que você deve escrever o nome do seu grupo em MAIUSCULAS.

    if UCase(oGroup.Name) = "O NOME DO SEU GRUPO DEVE SER EM MAIUSCULAS" then


    Fábio de Paula Junior
    terça-feira, 7 de setembro de 2010 00:28
    Moderador
  • Tente Assim:

    Dim objNetwork, sDomain, sUser, objUser

    Set objNetwork = CreateObject("WScript.Network")
    sDomain = objNetwork.UserDomain
    sUser = objNetwork.UserName
    Set objUser = GetObject("WinNT://" & sDomain & "/" & sUser)
    Set oShell= CreateObject("Wscript.Shell")
    strPrograma = "\\SERVIDOR\COMPARTILHAMENTO\PROGRAMA.EXE"
    For each oGroup in objUser.Groups
        If UCase(oGroup.Name) = "NAO_EXECUTAR" Then
      WScript.Quit
     End If     
    Next
    oShell.Run strPrograma,, True
    WScript.Quit

    Abraço. 


    Gabriel Nascimento MCP / MCTS / MCSA / MCSE / CCNA http://gabrielnascimentoit.spaces.live.com -- Se for útil vote.

    Gabriel, o eu ja tinha tentado dessa maneira, EXATAMENTE igual, mas nao sei onde est'a o ERRO.

     

    Segue abaixo o script q to tentando executar e nao funciona. Ele aparece o servi'co WSCRIPT.EXE nos processos mas nao executa o arquivo TXT.

     

    SCRIPT:

    ____________________________-

    Dim objNetwork, sDomain, sUser, objUser

     

    Set objNetwork = CreateObject("WScript.Network")

    sDomain = objNetwork.UserDomain

    sUser = objNetwork.UserName

    Set objUser = GetObject("WinNT://" & sDomain & "/" & sUser)

    Set oShell= CreateObject("Wscript.Shell") 

    strPrograma = "c:\ok.txt"

    For each oGroup in objUser.Groups

        If UCase(oGroup.Name) = "GRUPO01" Then

      WScript.Quit

     End If      

    Next

    oShell.Run strPrograma,, True 

    WScript.Quit

    ______________________________

    O meu usuario est'a dentro desse GRUPO01 e quando executo o vbs ele nao abre o arquivo txt. Simplesmente nao acontece nada.


    Albert Santos
    sexta-feira, 10 de setembro de 2010 14:33
  • Alberto,

    Adicione a linha em negrito e execute seu script a partir do prompt de comando (cscript nomedoseuscript.vbs)

    Se estiver entrando dentro do "For each" deve aparecer todos os grupos que o usuário faz parte, rode e retorne aqui pro forum o que aconteceu no teste,

     

    For each oGroup in objUser.Groups

        wscript.echo oGroup.Name

        If UCase(oGroup.Name) = "GRUPO01" Then

      WScript.Quit

     End If      


    Fábio de Paula Junior
    sexta-feira, 10 de setembro de 2010 17:41
    Moderador