SCRIPT (para Ramón Jiménez)

29/08/2006 - 12:15 por ZIDAC | Informe spam
Hola Ramón, no se si te acordarás pero en el post de fecha 16.08.06 llamado
"Migración" me pedistes los datos del script para cambio masivo de DNS, no se
si todavía lo estás mirando, no obstante te lo recuerdo para que no se te
olvide (si puede ser).

Si quieres te vuelvo a postear los datos, OK?

Perdón por ser insistente, pero es que me hace falta.

GRACIAS,
ZIDAC

Preguntas similare

Leer las respuestas

#1 Ramon Jimenez [MVP]
29/08/2006 - 14:13 | Informe spam
Estoy todo el día de hoy y parte de mañana en una reunión...mañana por la
tarde lo tienes listo...

Ramon

"ZIDAC" wrote in message
news:
Hola Ramón, no se si te acordarás pero en el post de fecha 16.08.06
llamado
"Migración" me pedistes los datos del script para cambio masivo de DNS, no
se
si todavía lo estás mirando, no obstante te lo recuerdo para que no se te
olvide (si puede ser).

Si quieres te vuelvo a postear los datos, OK?

Perdón por ser insistente, pero es que me hace falta.

GRACIAS,
ZIDAC
Respuesta Responder a este mensaje
#2 Ramon Jimenez [MVP]
30/08/2006 - 16:55 | Informe spam
Aqui tienes...


'+--+
'| Copyright (C) 2006 Ramon Jiménez
|
'+--+--+
'| File: | ZIDAC.VBS
|
'| Purpose: | Ejecutar una función/script en estaciones remotas
|
'+--+--+
'| Author: | Ramon Jimenez
|
'| Date: | Aug 29, 2006
|
'+--+
'| Parameters | None
|
'+--+
'| Requirements | 1. The user must be logged on with
|
'| | administrative credentials on target systems
|
'| |
|
'| | 2. A file Called "WorkStations.txt" containing target
servers|
'| | must exist in current directory.
|
'| |
|
'+--+--+
'| Version | 1.0
|
'+--+--+
'| File History:
|
'|
+-+-++
|
'| Name: Ramon Jimenez
|
'| Date: Aug 9, 2006
|
'| Desc: Creation and version 1.0
|
'|
+-+-++
|
'+--+

Option Explicit
CONST StrTargetWorkStations = "WorkStations.txt"
CONST StrLogFile = "Results.log"
CONST sWindowTitle = "ZIDAC Script"
CONST ForReading = 1
CONST OverwriteExisting = True
CONST strNeWDNS1 = "172.26.1.100"
CONST strNeWDNS2 = "172.26.1.101"
CONST strNeWWINS = "172.26.1.100"

Dim objIE, objProgressBar, objTextLine1, objTextLine2, objQuitFlag,
objProgBar
Dim oFile, objInputFile, oFileLog, objLogFile, strWorkStationName,
nWorkStations

CheckLocalRequirements
InitializeLogFile
ProcessSourceFile

Sub ProcessSourceFile()
Dim intCount
intCount = 1
OpenSourceFile
StartIE sWindowTitle
While not objInputFile.AtEndOfStream
strWorkStationName = Trim(objInputFile.ReadLine)
SetLine1 "Proccessing WorkStation...: " & strWorkStationName
ChangeDNSWINS(strWorkStationName)
intCount = intCount +1
UpdatePBar intCount, nWorkStations
Wend
objLogFile.Close
SetLine1 "Process Ended"
SetLine2 ""
DeleteProgressbar
End Sub

Sub ChangeDNSWINS(strTargetWorkStation)
Dim objWMIService, colNetCards, objNetCard, arrDNSServers
On Error Resume Next
Set objWMIService = GetObject("winmgmts:" &
"{impersonationLevel=impersonate}!\\" & strTargetWorkStation &
"oot\cimv2")
Set colNetCards = objWMIService.ExecQuery ("Select * From
Win32_NetworkAdapterConfiguration Where IPEnabled = True")

For Each objNetCard in colNetCards
arrDNSServers = Array(strNeWDNS1, strNeWDNS2)
objNetCard.SetDNSServerSearchOrder(arrDNSServers)
objNetCard.SetWINSServer strNeWWINS
Next
If Err.Number Then
If Err.Description <> "" Then
objLogFile.WriteLine( "ERROR 0X" & CStr(Hex(Err.Number)) & " : " &
strTargetWorkStation & " - " & Err.Description)
Else
objLogFile.WriteLine( "ERROR 0X" & CStr(Hex(Err.Number)) & " : " &
strTargetWorkStation)
End If
Else
objLogFile.WriteLine( strTargetWorkStation & " - Processed")
End If
End Sub

Sub InitializeLogFile
Set oFileLog = CreateObject("Scripting.FileSystemObject")
Set objLogFile = oFileLog.CreateTextFile(".\\" & StrLogFile)
If Err.Number Then
Print "Error 0X" & CStr(Hex(Err.Number)) & " creating LogFile " &
strLogFile
If Err.Description <> "" Then
Print "Error description: " & Err.Description & "."
End If
objLogFile.Close
WScript.Quit
End If
'Putting header in Log File
objLogFile.WriteLine(CStr(nWorkStations) & " WorkStations Processed")
objLogFile.WriteLine("--")
End Sub

Sub OpenSourceFile()
Set oFile = CreateObject("Scripting.FileSystemObject")
Set objInputFile = oFile.OpenTextFile(".\\" & StrTargetWorkStations)

If Err.Number Then
Print "Error 0X" & CStr(Hex(Err.Number)) & " trying to open" &
StrTargetWorkStations
If Err.Description <> "" Then
Print "Error description: " & Err.Description & "."
End If
objInputFile.Close
WScript.Quit
End If
End Sub

Private Sub StartIE(strTitel)
Dim objDocument
Dim objWshShell

Set objIE = CreateObject("InternetExplorer.Application")
objIE.height = 230
objIE.width = 400
objIE.menubar = False
objIE.toolbar = false
objIE.statusbar = false
objIE.addressbar = false
objIE.resizable = False
objIE.navigate ("about:blank")

' Wait till Browser is loaded
While (objIE.busy)
wend

set objDocument = objIE.document

' Writing content...
InitializeObjects objDocument, strTitel

' Once browser is available, object definition...
set objTextLine1 = objIE.document.all("txtMilestone")
set objTextLine2 = objIE.document.all("txtRemarks")
Set objProgressBar = objIE.document.all("pbText")
set objProgBar = objIE.document.all("objProgress")
objTextLine1.innerTEXT = ""
objTextLine2.innerTEXT = ""

objIE.visible = True

' We set focus on Browser
Set objWSHShell = WScript.CreateObject("WScript.Shell")
objWshShell.AppActivate(sWindowTitle)
End Sub


Private Function CloseIE()
On Error Resume Next
Wscript.Quit
objIE.quit
End Function


Private sub SetLine1(sNewText)
On Error Resume Next
objTextLine1.innerTEXT = sNewText
End Sub


Private sub SetLine2(sNewText)
On Error Resume Next
objTextLine2.innerTEXT = sNewText
End Sub


Private Sub DeleteProgressbar()
On Error Resume Next
objProgBar.className="vis2"
End Sub

Private Sub UpdatePBar(nCompt, nMaxim)
Dim nSteps
On Error Resume Next
nSteps = Cint((nCompt * 34) / nMaxim)
objProgressBar.value = String(nSteps,"n")
End Sub

Private Sub InitializeObjects(objDocument, strTitel)
objDocument.Open
objDocument.Writeln "<title>" & strTitel & "</title> "
objDocument.Writeln "<style>"
objDocument.Writeln " BODY {background: Silver} BODY { overflow:hidden }"
objDocument.Writeln " .vis1 {visibility: visible}"
objDocument.Writeln " .vis2 {visibility: hidden}"
objDocument.Writeln " P.txtStyle {color: Navy; font-family: Verdana; " & "
font-size: 10pt; font-weight: bold; margin-left: 10px } "
objDocument.Writeln " input.pbStyle {color: Navy; font-family: Wingdings;
" & " font-size: 10pt; background: Silver; height: 20px; " & " width:
340px } "
objDocument.Writeln "</style>"


' Defining Text lines...
objDocument.Writeln "<P id=txtMilestone class='txtStyle'
style='margin-left: 10px'> </P>"
objDocument.Writeln "<P id=txtRemarks class='txtStyle'
style='margin-left: 10px' ></P>"
objDocument.Writeln "<CENTER>"

' Progress bar
'objDocument.Writeln "<input type='text' id='pbText' class='pbStyle'
value='' >"
objDocument.Writeln "<div id=""objProgress"" class=""vis1""><input
type='text' id='pbText' class='pbStyle' value='' ></div>"
objDocument.Writeln "<br><br>" ' space down a little

objDocument.Writeln "<SCRIPT LANGUAGE='VBScript' >"

objDocument.Writeln "Sub Window_OnLoad()"
objDocument.Writeln "theleft = (screen.availWidth -
document.body.clientWidth) / 2"
objDocument.Writeln "thetop = (screen.availHeight -
document.body.clientHeight) / 2"
objDocument.Writeln "window.moveTo theleft,thetop"
objDocument.Writeln "End Sub"
objDocument.Writeln "</SCRIPT>"
objDocument.Close
End Sub

Private Sub CheckLocalRequirements()
Dim objFSO
Set objFSO = CreateObject("Scripting.FileSystemObject")
If Not objFSO.FileExists(".\" & StrTargetWorkStations) Then
Msgbox "The source file containing target workstations does not exist
in current directory. Please check ensure that all requirements are met", 0,
"Local requirements error"
ShowLocalRequirements
Wscript.quit
End If
nWorkStations = CountNumberOfLines(StrTargetWorkStations)
If nWorkStations = 0 Then
MsgBox "There are no WorkStations to process. Check source file and
populate it with workstations to process", 0, "Local requirements error"
ShowLocalRequirements
Wscript.quit
End If

End Sub

Private sub ShowLocalRequirements()
MsgBox "The following requirements have to be met: " & vbcrlf & vbcrlf &
_
"1. The user must be logged on with administrative credentials on
target systems" & vbcrlf & vbcrlf & _
"2. The workstations.txt file containing target workstations must
exist in current directory", 0, "Local requirements error"
End Sub

Function CountNumberOfLines(strFile)
Dim nLineCount, sReadLine, ObjFSO, objFile
Set objFSO = CreateObject("Scripting.FileSystemObject")
Set objFile = objFSO.OpenTextFile(StrFile, ForReading)
CountNumberOfLines = 0
On Error Resume next
nLineCount = 1
sReadLine = objFile.ReadLine
If err = 0 Then
Do While Not objFile.AtEndOfStream
sReadLine = objFile.ReadLine
nLineCount = nLineCount + 1
loop
set sReadLine = Nothing
ObjFile.Close
Set ObjFSO = Nothing
Set ObjFile = Nothing
CountNumberOfLines = nLineCount
End If
End Function


"ZIDAC" wrote in message
news:
Hola Ramón, no se si te acordarás pero en el post de fecha 16.08.06
llamado
"Migración" me pedistes los datos del script para cambio masivo de DNS, no
se
si todavía lo estás mirando, no obstante te lo recuerdo para que no se te
olvide (si puede ser).

Si quieres te vuelvo a postear los datos, OK?

Perdón por ser insistente, pero es que me hace falta.

GRACIAS,
ZIDAC
Respuesta Responder a este mensaje
#3 ZIDAC
31/08/2006 - 09:13 | Informe spam
Ramón, muchas gracias por tu interés y por tu scrpit, lo que pasa (y no
quiero ser miy pesado) es que tengo algunos contratiempos:

1) No cambia WINS
2) Sólo hace cambios en la maquina local, en las demás da este error:
ERROR 0X1C3 : PC001 - El objeto no es una colección

Este error lo da en cualquier otra PC que no sea la local, he mirado
permisos y está correcto y conectividad también.

GRACIAS por ser tan paciente,
SALUDOS,
ZIDAC
Respuesta Responder a este mensaje
#4 Ramon Jimenez [MVP]
31/08/2006 - 16:55 | Informe spam
Zidac,

la verdad es que no lo probé. Despues de verlo, parece ser que la función
necesita cambiar Wins primario y secundario (ambos), por lo que si solo
tienes un servidor Wins, podrías ponerlo 2 veces.

objNetCard.SetWINSServer strNeWWINS, strNeWWINS

Por otra parte, antes de hacer cambios, montate un script que compruebe que
eres capaz de leer maquinas remotas (FNS resuelve, etc)

Yo lo he probado con 3 maquinas remotas en casa y me ha funcionado

"ZIDAC" wrote in message
news:
Ramón, muchas gracias por tu interés y por tu scrpit, lo que pasa (y no
quiero ser miy pesado) es que tengo algunos contratiempos:

1) No cambia WINS
2) Sólo hace cambios en la maquina local, en las demás da este error:
ERROR 0X1C3 : PC001 - El objeto no es una colección

Este error lo da en cualquier otra PC que no sea la local, he mirado
permisos y está correcto y conectividad también.

GRACIAS por ser tan paciente,
SALUDOS,
ZIDAC
Respuesta Responder a este mensaje
#5 Ramon Jimenez [MVP]
31/08/2006 - 17:42 | Informe spam
objNetCard.SetWINSServer strNeWWINS, ""


"Ramon Jimenez [MVP]" wrote in message
news:
Zidac,

la verdad es que no lo probé. Despues de verlo, parece ser que la función
necesita cambiar Wins primario y secundario (ambos), por lo que si solo
tienes un servidor Wins, podrías ponerlo 2 veces.

objNetCard.SetWINSServer strNeWWINS, strNeWWINS

Por otra parte, antes de hacer cambios, montate un script que compruebe
que eres capaz de leer maquinas remotas (FNS resuelve, etc)

Yo lo he probado con 3 maquinas remotas en casa y me ha funcionado

"ZIDAC" wrote in message
news:
Ramón, muchas gracias por tu interés y por tu scrpit, lo que pasa (y no
quiero ser miy pesado) es que tengo algunos contratiempos:

1) No cambia WINS
2) Sólo hace cambios en la maquina local, en las demás da este error:
ERROR 0X1C3 : PC001 - El objeto no es una colección

Este error lo da en cualquier otra PC que no sea la local, he mirado
permisos y está correcto y conectividad también.

GRACIAS por ser tan paciente,
SALUDOS,
ZIDAC




email Siga el debate Respuesta Responder a este mensaje
Ads by Google
Help Hacer una preguntaRespuesta Tengo una respuesta
Search Busqueda sugerida