none
Script Wins RRS feed

  • Pergunta

  •  

    Olá,

     

    Preciso mudar o wins de 70 servidores, mas não posso usar gpo.

     

    Achei esse script de deploy aqui que teoricamente faz esse trabalho:

    ------------------------//----------------------------------------------------------------------

    Dim objController, objRemoteScript, objFSO
    Dim objTSIn, objTSOut, strComputer

    'Create objects
    Set objController = CreateObject("WshController")
    Set objFSO = CreateObject("Scripting.FileSystemObject")

    'Read computer names from file
    Set objTSIn = objFSO.OpenTextFile("C:\Script\servers.txt")

    'Open output file for log
    Set objTSOut = objFSO.CreateTextFile("C:\Script\log.txt", True)

    Do Until objTSIn.AtEndOfStream
        'Deploy script to remote computer

        strComputer = objTSIn.ReadLine
        objTSOut.WriteLine strComputer & ": Deploying at " & Now
        Set objRemoteScript = objController.CreateScript( _
            "C:\Script\set_wins.vbs", strComputer)
        WScript.ConnectObject objRemoteScript, "remote_"
        objRemoteScript.Execute
        Do Until objRemoteScript.Status = 1
            WScript.Sleep 1000
        Loop
        objTSOut.WriteLine strComputer & " Completed at " & Now
        Set objRemoteScript = Nothing

    Loop

    objTSIn.Close
    objTSOut.Close
    WScript.Echo "Deployment script complete."

    Sub remote_Error
        Dim objError
        Set objError = objRemote.Error
        objTSOut.WriteLine strComputer & ": Error at " & Now
        objTSOut.WriteLine " Line: " & objError.Line & _
            ", Char: " & objError.Character & vbCrLf & _
                "Description: " & objError.Description
        WScript.Quit -1
    End Sub

    --------------------//--------------------------------------------------------------------------

     

    Ele lê o arquivo servers.txt e aplica o script set_wins.vbs nos computadores que estão dentro do arquivo servers.txt

     

    Arquivo set_wins.vbs

     

    -------------------------------------------------------------------------------------------------

    On Error Resume Next

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

    Set colNetCards = objWMIService.ExecQuery _
        ("Select * From Win32_NetworkAdapterConfiguration Where IPEnabled = True")

    For Each objNetCard in colNetCards
        strPrimaryServer = "10.3.19.1"
        strSecondaryServer = ""
        objNetCard.SetWINSServer strPrimaryServer, strSecondaryServer
    Next

    wscript.Echo "Fim da configuração"

    --------------------------------------------------------------------------------------------------

     

    Quando eu executo o Deploy.vbs ele me mostra um erro:

     

    Windows Script Host

    Script: C:\script\Deploy.vbs

    Linha: 19

    caract: 5

    Erro: Permissão Negada

    Código: 800A0046

    Origem: Erro de tempo de execução do Microsoft VBScript

     

    Obs: Executei como administrador.

     

    Obrigado.

     

     

    quinta-feira, 8 de janeiro de 2009 22:23

Respostas

  • Olá Thales,

    Pesquisei na net e vamos precisar fazer da seguinte forma:

    Baixe o Pstools (http://technet.microsoft.com/en-us/sysinternals/bb896649.aspx)

    Descompacte no c:\

    copie o arquivo wins.vbs para um local que o cliente tenha acesso, pode ser um compartilhamento. Segue o script:

    On Error Resume Next

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

    Set colNetCards = objWMIService.ExecQuery _
        ("Select * From Win32_NetworkAdapterConfiguration Where IPEnabled = True")

    For Each objNetCard in colNetCards
        strPrimaryServer = "192.168.1.100" ' COLOQUE AQUI O IP DO SERVIDOR PRIMARIO
        strSecondaryServer = "192.168.1.200" ' COLOQUE AQUI O IP DO SERVIDOR SECUNDÁRIO
        objNetCard.SetWINSServer strPrimaryServer, strSecondaryServer
    Next



    Depois copie o arquivo que irá chamar o script, segue abaixo:

    Dim objController, objRemoteScript, objFSO
    Dim objTSIn, objTSOut, strComputer

    'Create objects
    Set objController = CreateObject("WshController")
    Set objFSO = CreateObject("Scripting.FileSystemObject")

    'Read computer names from file
    Set objTSIn = objFSO.OpenTextFile("C:\Script\servers.txt")

    'Open output file for log
    Set objTSOut = objFSO.CreateTextFile("C:\Script\log.txt", True)

    Do Until objTSIn.AtEndOfStream
        'Deploy script to remote computer

        strComputer = objTSIn.ReadLine
        objTSOut.WriteLine strComputer & ": Deploying at " & Now

    ' AQUI EU ALTEREI, ALTERE O CAMINHO DO WINS.VBS PARA O LOCAL QUE VOCÊ ESCOLHER
    ' LEMBRE-SE QUE O ACESSO É PARA O CLIENTE
    ' NESTE EXEMPLO EU COPIEI O ARQUIVO PARA O C:\ DE UM CLIENTE

        Set WshShell = WScript.CreateObject("WScript.Shell")
        Return = WshShell.Run("c:\pstools\psexec.exe \\" & strComputer &" cscript.exe c:\wins.vbs")

        objTSOut.WriteLine strComputer & " Completed at " & Now
        Set objRemoteScript = Nothing

    Loop

    objTSIn.Close
    objTSOut.Close
    WScript.Echo "Deployment script complete."

    Sub remote_Error
        Dim objError
        Set objError = objRemote.Error
        objTSOut.WriteLine strComputer & ": Error at " & Now
        objTSOut.WriteLine " Line: " & objError.Line & _
            ", Char: " & objError.Character & vbCrLf & _
                "Description: " & objError.Description
        WScript.Quit -1
    End Sub


    Testa aí e nos retorne.

    Até mais,

    Jesiel
    sexta-feira, 9 de janeiro de 2009 17:42

Todas as Respostas

  • Olá,

    faça um teste com esse script:

    Dim objController, objRemoteScript, objFSO
    Dim objTSIn, objTSOut, strComputer

    'Create objects
    Set objController = CreateObject("WshController")
    Set objFSO = CreateObject("Scripting.FileSystemObject")

    'Read computer names from file
    Set objTSIn = objFSO.OpenTextFile("C:\Script\servers.txt")

    'Open output file for log
    Set objTSOut = objFSO.CreateTextFile("C:\Script\log.txt", True)

    Do Until objTSIn.AtEndOfStream
        'Deploy script to remote computer

        strComputer = objTSIn.ReadLine
        objTSOut.WriteLine strComputer & ": Deploying at " & Now
        Set objShell = CreateObject("WScript.Shell")
        objShell.Run "C:\Script\wins.vbs"

    '    Set objRemoteScript = objController.CreateScript("C:\Script\wins.vbs", strComputer)
    '    WScript.ConnectObject objRemoteScript, "remote_"
    '    objRemoteScript.Execute
    '    Do Until objRemoteScript.Status = 1
    '        WScript.Sleep 1000
    '    Loop
        objTSOut.WriteLine strComputer & " Completed at " & Now
        Set objRemoteScript = Nothing

    Loop

    objTSIn.Close
    objTSOut.Close
    WScript.Echo "Deployment script complete."

    Sub remote_Error
        Dim objError
        Set objError = objRemote.Error
        objTSOut.WriteLine strComputer & ": Error at " & Now
        objTSOut.WriteLine " Line: " & objError.Line & _
            ", Char: " & objError.Character & vbCrLf & _
                "Description: " & objError.Description
        WScript.Quit -1
    End Sub

    Poste os resultados.

    Até mais,

    Jesiel
    sexta-feira, 9 de janeiro de 2009 11:20
  • Perfeito,

     

    O script roda sem problemas agora, porém, não muda o ip do servidor wins do servidor em questão.

     

    Obrigado!!

    sexta-feira, 9 de janeiro de 2009 13:50
  • Olá Thales,

    Pesquisei na net e vamos precisar fazer da seguinte forma:

    Baixe o Pstools (http://technet.microsoft.com/en-us/sysinternals/bb896649.aspx)

    Descompacte no c:\

    copie o arquivo wins.vbs para um local que o cliente tenha acesso, pode ser um compartilhamento. Segue o script:

    On Error Resume Next

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

    Set colNetCards = objWMIService.ExecQuery _
        ("Select * From Win32_NetworkAdapterConfiguration Where IPEnabled = True")

    For Each objNetCard in colNetCards
        strPrimaryServer = "192.168.1.100" ' COLOQUE AQUI O IP DO SERVIDOR PRIMARIO
        strSecondaryServer = "192.168.1.200" ' COLOQUE AQUI O IP DO SERVIDOR SECUNDÁRIO
        objNetCard.SetWINSServer strPrimaryServer, strSecondaryServer
    Next



    Depois copie o arquivo que irá chamar o script, segue abaixo:

    Dim objController, objRemoteScript, objFSO
    Dim objTSIn, objTSOut, strComputer

    'Create objects
    Set objController = CreateObject("WshController")
    Set objFSO = CreateObject("Scripting.FileSystemObject")

    'Read computer names from file
    Set objTSIn = objFSO.OpenTextFile("C:\Script\servers.txt")

    'Open output file for log
    Set objTSOut = objFSO.CreateTextFile("C:\Script\log.txt", True)

    Do Until objTSIn.AtEndOfStream
        'Deploy script to remote computer

        strComputer = objTSIn.ReadLine
        objTSOut.WriteLine strComputer & ": Deploying at " & Now

    ' AQUI EU ALTEREI, ALTERE O CAMINHO DO WINS.VBS PARA O LOCAL QUE VOCÊ ESCOLHER
    ' LEMBRE-SE QUE O ACESSO É PARA O CLIENTE
    ' NESTE EXEMPLO EU COPIEI O ARQUIVO PARA O C:\ DE UM CLIENTE

        Set WshShell = WScript.CreateObject("WScript.Shell")
        Return = WshShell.Run("c:\pstools\psexec.exe \\" & strComputer &" cscript.exe c:\wins.vbs")

        objTSOut.WriteLine strComputer & " Completed at " & Now
        Set objRemoteScript = Nothing

    Loop

    objTSIn.Close
    objTSOut.Close
    WScript.Echo "Deployment script complete."

    Sub remote_Error
        Dim objError
        Set objError = objRemote.Error
        objTSOut.WriteLine strComputer & ": Error at " & Now
        objTSOut.WriteLine " Line: " & objError.Line & _
            ", Char: " & objError.Character & vbCrLf & _
                "Description: " & objError.Description
        WScript.Quit -1
    End Sub


    Testa aí e nos retorne.

    Até mais,

    Jesiel
    sexta-feira, 9 de janeiro de 2009 17:42
  •  

    Muito Obrigado!

     

    Resolveu aqui.

     

    Smile

    segunda-feira, 12 de janeiro de 2009 11:59