none
Serviço mensageiro RRS feed

  • Pergunta

  • Olá galera!

     

    Na minha rede por padrão, o serviço mensageiro fica com o status parado. Estou precisando criar um script para iniciar o serviço - para enviar mensagens para os usuários - e depois parar novamente. Gostaria de fazer essa rotina sem ser por script de logon, pois o serviço só iniciaria qdo o usuario logasse.

    Até consegui alguns scripts, mas apenas para a maquina local. Existe como efetuar um loop para executar este script em toda a rede?

    Segue abaixo um script para tal função:

     

    strComputer = "."
       Set objWMIService = GetObject("winmgmts:" _
        & "{impersonationLevel=impersonate}!\\" & strComputer & "\root\cimv2")

    Set colServiceList = objWMIService.ExecQuery _
        ("Select * from Win32_Service where Name='Messenger'")

    For Each objService in colServiceList
        errReturnCode = objService.Change( , , , , "Enable")  
        errReturn = objService.StopService()
    Next

    Wscript.Sleep 20000

    Set colServiceList = objWMIService.ExecQuery("Associators of " _
       & "{Win32_Service.Name='Messenger'} Where " _
            & "AssocClass=Win32_DependentService " & "Role=Dependent" )
    For Each objService in colServiceList
        objService.StopService()
    Next

    terça-feira, 10 de abril de 2007 12:37

Respostas

  • Sim existe como você executar isso em toda a rede através de um arquivo de texto para que o script leia as máquinas uma a uma e execute nas estações. Somente coloque as máquinas em linhas diferentes, uma embaixo da outra no arquivo TXT.

     

     

    set fso = CreateObject("Scripting.FileSystemObject")
       const ForREAding = 1
       set leia = fso.opentextFile("c:\maquinas.txt",ForREAding)
       Do until leia.AtEndOfStream

     strComputer = leia.Readline
        if strComputer = "" then
           wscript.quit
        end if

       Set objWMIService = GetObject("winmgmts:" _
        & "{impersonationLevel=impersonate}!\\" & strComputer & "\root\cimv2")

    Set colServiceList = objWMIService.ExecQuery _
        ("Select * from Win32_Service where Name='Messenger'")

    For Each objService in colServiceList
        errReturnCode = objService.Change( , , , , "Enable")  
        errReturn = objService.StopService()
    Next

    Wscript.Sleep 20000

    Set colServiceList = objWMIService.ExecQuery("Associators of " _
       & "{Win32_Service.Name='Messenger'} Where " _
            & "AssocClass=Win32_DependentService " & "Role=Dependent" )
    For Each objService in colServiceList
        objService.StopService()
    Next

     

    loop

     

     

    terça-feira, 10 de abril de 2007 13:26
  • Este outro script busca automáticamente as máquinas no seu domínio e executa o script, este eu só testei o loop me trazendo os nomes das máquinas, mas acho que dá certo, testa e depois posta aqui.

     

     

    Const ADS_SCOPE_SUBTREE = 2

    Set objConnection = CreateObject("ADODB.Connection")
    Set objCommand =   CreateObject("ADODB.Command")
    objConnection.Provider = "ADsDSOObject"
    objConnection.Open "Active Directory Provider"

    Set objCOmmand.ActiveConnection = objConnection
    objCommand.CommandText = _
        "Select Name, Location from 'LDAP://DC=SeuDomínio,DC=com,DC=br' " _
            & "Where objectClass='computer'" 
    objCommand.Properties("Page Size") = 1000
    objCommand.Properties("Searchscope") = ADS_SCOPE_SUBTREE
    Set objRecordSet = objCommand.Execute
    objRecordSet.MoveFirst

    Do Until objRecordSet.EOF


        strComputer = objRecordSet.Fields("Name").Value

       

    Set objWMIService = GetObject("winmgmts:" _
        & "{impersonationLevel=impersonate}!\\" & strComputer & "\root\cimv2")

    Set colServiceList = objWMIService.ExecQuery _
        ("Select * from Win32_Service where Name='Messenger'")

    For Each objService in colServiceList
        errReturnCode = objService.Change( , , , , "Enable")  
        errReturn = objService.StopService()
    Next

    Wscript.Sleep 20000

    Set colServiceList = objWMIService.ExecQuery("Associators of " _
       & "{Win32_Service.Name='Messenger'} Where " _
            & "AssocClass=Win32_DependentService " & "Role=Dependent" )
    For Each objService in colServiceList
        objService.StopService()
    Next

       
        objRecordSet.MoveNext
    Loop

     

     

    Abraços


    terça-feira, 10 de abril de 2007 13:39

Todas as Respostas

  • Sim existe como você executar isso em toda a rede através de um arquivo de texto para que o script leia as máquinas uma a uma e execute nas estações. Somente coloque as máquinas em linhas diferentes, uma embaixo da outra no arquivo TXT.

     

     

    set fso = CreateObject("Scripting.FileSystemObject")
       const ForREAding = 1
       set leia = fso.opentextFile("c:\maquinas.txt",ForREAding)
       Do until leia.AtEndOfStream

     strComputer = leia.Readline
        if strComputer = "" then
           wscript.quit
        end if

       Set objWMIService = GetObject("winmgmts:" _
        & "{impersonationLevel=impersonate}!\\" & strComputer & "\root\cimv2")

    Set colServiceList = objWMIService.ExecQuery _
        ("Select * from Win32_Service where Name='Messenger'")

    For Each objService in colServiceList
        errReturnCode = objService.Change( , , , , "Enable")  
        errReturn = objService.StopService()
    Next

    Wscript.Sleep 20000

    Set colServiceList = objWMIService.ExecQuery("Associators of " _
       & "{Win32_Service.Name='Messenger'} Where " _
            & "AssocClass=Win32_DependentService " & "Role=Dependent" )
    For Each objService in colServiceList
        objService.StopService()
    Next

     

    loop

     

     

    terça-feira, 10 de abril de 2007 13:26
  • Este outro script busca automáticamente as máquinas no seu domínio e executa o script, este eu só testei o loop me trazendo os nomes das máquinas, mas acho que dá certo, testa e depois posta aqui.

     

     

    Const ADS_SCOPE_SUBTREE = 2

    Set objConnection = CreateObject("ADODB.Connection")
    Set objCommand =   CreateObject("ADODB.Command")
    objConnection.Provider = "ADsDSOObject"
    objConnection.Open "Active Directory Provider"

    Set objCOmmand.ActiveConnection = objConnection
    objCommand.CommandText = _
        "Select Name, Location from 'LDAP://DC=SeuDomínio,DC=com,DC=br' " _
            & "Where objectClass='computer'" 
    objCommand.Properties("Page Size") = 1000
    objCommand.Properties("Searchscope") = ADS_SCOPE_SUBTREE
    Set objRecordSet = objCommand.Execute
    objRecordSet.MoveFirst

    Do Until objRecordSet.EOF


        strComputer = objRecordSet.Fields("Name").Value

       

    Set objWMIService = GetObject("winmgmts:" _
        & "{impersonationLevel=impersonate}!\\" & strComputer & "\root\cimv2")

    Set colServiceList = objWMIService.ExecQuery _
        ("Select * from Win32_Service where Name='Messenger'")

    For Each objService in colServiceList
        errReturnCode = objService.Change( , , , , "Enable")  
        errReturn = objService.StopService()
    Next

    Wscript.Sleep 20000

    Set colServiceList = objWMIService.ExecQuery("Associators of " _
       & "{Win32_Service.Name='Messenger'} Where " _
            & "AssocClass=Win32_DependentService " & "Role=Dependent" )
    For Each objService in colServiceList
        objService.StopService()
    Next

       
        objRecordSet.MoveNext
    Loop

     

     

    Abraços


    terça-feira, 10 de abril de 2007 13:39
  • Bom dia,

    Existe alguma forma de ativar o mensageiro no windows vista? Até encontrei uma ferramenta similar par ainstalar no vista, mas só para enviar mensagens. Eu preciso de uma que seja capaz de receber as mensagens enviada pelo mensageiro do windows 2000, 2003, XP, etc.

    Alguém pode me ajudar nisso?

    Atenciosamente

    Edson
    sexta-feira, 7 de março de 2008 14:26