Professional Documents
Culture Documents
Autor: Jos Vicente Martnez (Jovi). Industrializador de Aplicaciones. Versin: 1.0 ltima modificacin: 15-11-2007 Esta obra est bajo una licencia Reconocimiento-NoComercialSinObraDerivada-2.5 Espaa de Creative Commons. Para ver una copia de esta licencia, visite http://creativecommons.org/licenses/by-nc-nd/2.5/es o enve una carta a Creative Commons, 559 Nathan Abbott Way, Stanford, California 94305, USA. Usted es libre de: - Copiar, distribuir y comunicar pblicamente la obra. Bajo las condiciones siguientes: - Reconocimiento. Debe reconocer los crditos de la obra de la manera especificada por el autor o el licenciador. - No comercial. No puede utilizar esta obra para fines comerciales. - Compartir bajo la misma licencia. Si altera o transforma esta obra, o genera una obra derivada, slo puede distribuir la obra generada bajo una licencia idntica a sta. - Al reutilizar o distribuir la obra, tiene que dejar bien claro los trminos de la licencia de esta obra. Alguna de estas condiciones puede no aplicarse si se obtiene el permiso del titular de los derechos de autor. Referencias Todos los nombres propios de programas, sistemas operativos, equipos hardware,etc., que aparecen en este documento son marcas registradas de sus respectivas compaas u organizaciones.
o VBSCRIPT
4. Espacio Libre en Disco (Objetos) 5. Espacio Libre en Disco en MB (Variables, Constantes y Conexin Remota) 6. Espacio libre en todos los discos (Colecciones) 7. Lista de Unidades de Cinta (Correccin de Fallo por Lista Vaca) 8. Espacio Libre en Discos cada Hora (For Next y Sleep) 9. Espacio Libre en Grupo de Equipos (Arrays) 10. Espacio Libre en Equipos por paso de Argumentos (Argumentos y Errores) 11. Constantes Intrnsecas. 12. Conversores de Tipos. 13. Trabajo con Fechas. 14. Datepart. Porciones de Fecha. 15. Datepart. Configuracin de la semana del principio del ao. 16. Otras funciones para devolver porciones de Fecha. 17. Porcentajes. 18. Abrir Fichero y Leer lnea a lnea. 19. Ver Impresoras (Select Case) 20. Listar Subcarpetas (Recursividad)
o WSH
21. Crear Cuenta de Usuario. 22. Borrar Archivo. 23. Conectar Unidad de Red Condicional. 24. Detener Servicio. 25. Enviar Salida a Archivo. I. 26. WScript Object. 27. Mtodos y Propiedades de los Objetos TextStream. 28. Argumentos. Argumentos sin nombre. 29. Argumentos. Argumentos con nombre y predefinidos. 30. Funciones en Entorno WHS. II. 31. WshShell Object. 32. Run & Exec. 33. %compsec% 34. Accesos Directos. 35. Identificadores de Carpetas Especiales. 36. Variables de Entorno. 37. LogEvent. Logear Eventos. 38. RegRead. 39. RegWrite. 40. RegDelete. 41. SendKeys. Enviar pulsaciones de teclas. 42. Cambiar y Mostrar el Directorio Actual (CurrentDirectory). 43. Popup. Mostrar MessageBox con cuenta atrs. III. 44. WshNetwork Object. 45. Mapear Unidades de Red. 46. Manejo de Impresoras de Red. 47. Obtener informacin del Usuario y del Equipo. IV. 48. WshController Object. 49. Ejecutar scripts en Ordenadores Remotos. 50. Monitorizar estado de Scripts Remotos. 51. Examinar Errores ocurridos en scripts Remotos. 52. Limitaciones de WSH Remoto.
Windows Script Host Windows Management Instrumentation Active Directory Service Interfaces Component Object Model Application Programming Interfaces
VBSCRIPT
_4. Espacio libre en Disco_____________
(Ejemplo de trabajo con Objetos)
Set objWMIService = GetObject("winmgmts:") Set objLogicalDisk = objWMIService.Get("Win32_LogicalDisk.DeviceID='c:'") Instanciacion Wscript.Echo objLogicalDisk.FreeSpace
Trabajar con Objetos: o Conectando a Objetos: - GetObject - CreateObject o Instanciacin de Objetos: - Set objNombre o Llamar Mtodos: - ObjetoReferencia.Metodo o Recuperar Propiedades: - ObjetoReferencia.Propiedad
Si las propiedades no se borran con el mtodo .Clear estas siguen manteniendo su valor y puede provocar mal funcionamiento del script.
Los valores aceptados como fechas vlidas se basan en el modo de configuracin de fecha y hora del sistema. La funcin IsDate() se puede utilizar para averiguar cuando un valor es una fecha correcta.
Wscript.Echo Wscript.Echo Wscript.Echo Wscript.Echo Wscript.Echo Wscript.Echo Wscript.Echo Wscript.Echo Wscript.Echo Wscript.Echo Wscript.Echo
Now "Year: " & DatePart("yyyy", Now) "Quarter: " & DatePart("q", Now) "Month: " & DatePart("m", Now) "Day of Year: " & DatePart("y", Now) "Day: " & DatePart("d", Now) "Weekday: " & DatePart("w", Now) "Week of Year: " & DatePart("ww", Now) "Hour: " & DatePart("h", Now) "Minute: " & DatePart("n", Now) "Seconds: " & DatePart("s", Now)
TestDate = "1/6/2003" Wscript.Echo TestDate Wscript.Echo "Week of Wscript.Echo "Week of Wscript.Echo "Week of vbFirstFourDays) Wscript.Echo "Week of vbFirstFullWeek)
Year: " & DatePart("ww", TestDate) Year: " & DatePart("ww", TestDate, vbFirstJan1) Year: " & DatePart("ww", TestDate, _ Year: " & DatePart("ww", TestDate, _
CurrentDate = Now Wscript.Echo "Year: " & VbTab & VbTab & Year(CurrentDate) Wscript.Echo "Month: " & VbTab & VbTab & Month(CurrentDate) Wscript.Echo "Day: " & VbTab & VbTab & Day(CurrentDate) Wscript.Echo "Weekday: " & VbTab & Weekday(CurrentDate) Wscript.Echo "Hour: " & VbTab & VbTab & Hour(CurrentDate) Wscript.Echo "Minute: " & VbTab & Minute(CurrentDate) Wscript.Echo "Second: " & VbTab & Second(CurrentDate)
_17. Porcentajes_____________________
Const NoDecimals = 0 NumberToFormat = 1 / 7 Wscript.Echo NumberToFormat Wscript.Echo FormatPercent(NumberToFormat, NoDecimals)
(Ejemplo de Do While)
Const ForReading = 1 Set objFSO = CreateObject("Scripting.FileSystemObject") Set objTextFile = objFSO.OpenTextFile("c:\test.txt", ForReading) Do While Not objTextFile.AtEndOfStream strNextLine = objTextFile.Readline Wscript.Echo strNextLine Loop
10
11
WSH
_21. Crear Cuenta de Usuario_________
Set objOU = script.GetObject _ ("LDAP://OU=management,dc=fabrikam,dc=com") Set objUser = objOU.Create("User", "cn=MyerKen") objUser.Put "sAMAccountName", "myerken" objUser.SetInfo
12
13
Wscript.StdOut.Write "Enter a Decimal Number: " strDecimal = Wscript.StdIn.ReadLine Wscript.StdOut.WriteLine strDecimal & " is equal to " & _ Hex(strDecimal) & " in hex." Set objNetwork = Wscript.CreateObject("Wscript.Network") Set objStdOut = WScript.StdOut objStdOut.Write "User: " objStdOut.Write objNetwork.UserDomain objStdOut.Write "\" objStdOut.Write objNetwork.UserName objStdOut.WriteBlankLines(1) objStdOut.WriteLine objNetwork.ComputerName objStdOut.Write "Information retrieved." objStdOut.Close
14
15
16
Estados de Run: Oculta la ventana y activa otra. 0 Activa y muestra una ventana a su tamao y posicin original. 1 Ventana minimizada. 2 Ventana maximizada. 3 Muestra una ventana copiando e ltimo tamao y posicin. 4 Muestra la ventana en su posicin y tamao normal. 5 Minimiza la ventana y hace activa la ventana anterior. 6 Ventana minimizada. La ventana activa se mantiene sindolo. 7 Muestra la ventana en el estado actual. La ventana activa no vara. 8 Activa y muestra la ventana y deja de estar maximizada o minimizada. 9 Pone la ventana en el mismo estado que el programa que la inici. 10
17
_33. %comspec%________________________
(Especificacin de Run y Exec) %compsec% ejecuta comandos de la lnea de comandos (como dir).
Set objShell = WScript.CreateObject("WScript.Shell") objShell.Run("%comspec% /K dir"), 1, True
%comspec% /c %comspec% /k
La ventana de comandos continua abierta al finalizar el script. La ventana de comandos se cierra al terminar el script.
Set objShell = WScript.CreateObject("WScript.Shell") Set objExecObject = objShell.Exec("%comspec% /c ipconfig.exe") Do Until objExecObject.StdOut.AtEndOfStream strLine = objExecObject.StdOut.ReadLine() strIP = Instr(strLine,"Address") If strIP <> 0 Then Wscript.Echo strLine End If Loop
URL.
Set objShell = WScript.CreateObject("WScript.Shell") strDesktopFld = objShell.SpecialFolders("Desktop") Set objURLShortcut = objShell.CreateShortcut(strDesktopFld & _ "\MSDN.url") objURLShortcut.TargetPath = "http://msdn.microsoft.com" objURLShortcut.Save
18
Set objShell = WScript.CreateObject("WScript.Shell") strFontDirectoryPath = objShell.SpecialFolders.Item("Fonts") Wscript.Echo "Font Directory Path: " & strFontDirectoryPath Set objShell = WScript.CreateObject("WScript.Shell") strSendToFolder = objShell.SpecialFolders("SendTo") strPathToNotepad = objShell.ExpandEnvironmentStrings _ ("%SystemRoot%/system32/notepad.exe") Set objShortcut = objShell.CreateShortcut(strSendToFolder & _ "\notepad.lnk") objShortcut.TargetPath = strPathToNotepad objShortcut.Save
Set objShell = WScript.CreateObject("WScript.Shell") Set colSystemEnvVars = objShell.Environment("System") Set colUserEnvVars = objShell.Environment("User") Wscript.Echo "Computer-specific PATH Environment Variable" Wscript.Echo colSystemEnvVars("PATH") Wscript.Echo "User-specific PATH Environment Variable" Wscript.Echo colUserEnvVars("PATH")
19
Valor 0 1 2 4 8 16
_38. RegRead_______________________________
Set objShell = WScript.CreateObject("WScript.Shell") sngVersion = objShell.RegRead _ ("HKLM\Software\Microsoft\WindowsNT\CurrentVersion\CurrentVersion") Wscript.Echo sngVersion Set objShell = WScript.CreateObject("WScript.Shell") arrValues = objShell.RegRead _ ("HKLM\SYSTEM\CurrentControlSet\Services\EventLog\Security\Sources") For Each strValue In arrValues Wscript.Echo strValue Next
_39. RegWrite_________________________
Set objShell = WScript.CreateObject("WScript.Shell") objShell.RegWrite "HKCU\TestKey\Version", 56, "REG_DWORD"
20
_40. RegDelete_________________________
Set objShell = WScript.CreateObject("WScript.Shell") objShell.RegDelete "HKCU\TestKey\Version"
Tecla BACKSPACE BREAK CAPS LOCK DEL o DELETE DOWN ARROW END ENTER ESC HELP HOME INS o INSERT LEFT ARROW NUM LOCK PAGE DOWN PAGE UP PRINT SCREEN RIGHT ARROW SCROLL LOCK TAB UP ARROW SHIFT CONTROL ALT F1, F2, {a 10}
Representacin {BACKSPACE}, {BS}, or {BKSP} {BREAK} {CAPSLOCK} {DELETE} o {DEL} {DOWN} {END} {ENTER} o ~ {ESC} {HELP} {HOME} {INSERT} or {INS} {LEFT} {NUMLOCK} {PGDN} {PGUP} {PRTSC} {RIGHT} {SCROLLLOCK} {TAB} {UP} + ^ % {F1}, {F2}, 10 veces a. Slo puede usarse con un nico carcter.
21
Const iNormalFocus = 1 Set objShell = WScript.CreateObject("WScript.Shell") objShell.Run "mmc.exe",iNormalFocus Wscript.Sleep 300 objShell.AppActivate "Console1" Wscript.Sleep 100 objShell.SendKeys "^m" Wscript.Sleep 100 objShell.SendKeys "{TAB}" Wscript.Sleep 100 objShell.SendKeys "{TAB}" Wscript.Sleep 100 objShell.SendKeys "{ENTER}"
Constant Value 16 32 48 64
22
Windows Script Technologies Sets de Botones. Button Set OK OK and CANCEL ABORT, RETRY and IGNORE YES, NO and CANCEL YES and NO RETRY and CANCEL Escoger el botn con presencia. Default Button LEFT MIDDLE RIGHT Recoger el Input del usuario. Value 1 2 3 4 5 6 7
Constant Value 0 1 2 3 4 5
Const TIMEOUT = 7 Set objShell = WScript.CreateObject("WScript.Shell") Set objFS = WScript.CreateObject("Scripting.FileSystemObject") strPath = Wscript.FullName strFileVersion = objFS.GetFileVersion(strPath) iRetVal = objShell.Popup(Wscript.FullName & vbCrLf & _ "Version: " & strFileVersion & vbCrLf & _ "Mas detalles?" _ ,TIMEOUT,"Mas informacion?",vbYesNo + vbQuestion) Select Case iRetVal Case vbYes Set objFile = objFS.GetFile(strPath) objShell.Popup WScript.FullName & vbCrLf & vbCrLf & _ "Version: " & strFileVersion & vbCrLf & _ "Tamanyo: " & Round((objFile.Size/1024),2) & " KB" & _ vbCrLf & "Fecha de creacion: " & objFile.DateCreated & vbCrLf & _ "Ultima modificacion: " & objFile.DateLastModified & vbCrLf,TIMEOUT Wscript.Quit Case vbNo Wscript.Quit Case -1 WScript.StdOut.WriteLine "Popup tiempo de espera agotado." Wscript.Quit End Select
23
MapNetworkDrive Trabajo con unidades de red EnumNetworkDrives RemoveNetworkDrive AddPrinterConnection AddWindowsPrinterConnection Trabajo con impresoras de red EnumPrinterConnections SetDefaultPrinter RemovePrinterConnection ComputerName Obtener informacin sobre el usuario logueado UserDomain UserName
24
Requerido
Argumentos de RemovePrinterConnection(PrinterName, [forced], [updProfile]) PrinterName Ruta y nombre de la impresora. [forced] Desconecta la impresora aunque est en uso. [updProdile] El usuario debe ser actualizado para reflejar la desconexin.
25
26
Requisitos: Los ordenadores objetivo y el ordenador local cuentan con WHS 5.6 Todos los ordenadores remotos deben contar con una variable Remote(REG_SZ) en HKEY_LOCAL_ MACHINE\SOFTWARE\ Microsoft\Windows Script Host\Settings con valor 1.
27
Eventos llamados en momentos especiales Evento cuando el script comienza. Start Cuando finaliza. End Error Cuando ocurre un error. Se puede acceder a informacin con WshRemoteError.
strRemoteComputer = "RASServer01" strWorkerScript = "CreateTextFilMapNetworkDrive.vbs" Set objWshController = WScript.CreateObject("WshController") Set objRemoteScript =_ objWshController.CreateScript(strWorkerScript, strRemoteComputer) Wscript.ConnectObject objRemoteScript, "Remote_" objRemoteScript.Execute Do While Not objRemoteScript.Status = 2 Wscript.Sleep(100) Loop Sub Remote_Start Wscript.Echo "Se comienza a ejecutar el script remoto." End Sub Sub Remote_Error Wscript.Echo "Error al ejecutarse el script remoto." objRemoteScript.Terminate Wscript.Quit End Sub Sub Remote_End Wscript.Echo "Termina de ejecutarse el script remoto." End Sub
28
strRemoteComputer = "RASServer01" strWorkerScript = "CreateTestFile.vbs" Set objWshController = WScript.CreateObject("WshController") Set objRemoteScript = _ objWshController.CreateScript(strWorkerScript, strRemoteComputer) Wscript.ConnectObject objRemoteScript, "Remote_" objRemoteScript.Execute Do While Not objRemoteScript.Status = 2 Wscript.Sleep(100) Loop Sub Remote_Error Wscript.Echo "Error durante la ejecucion del script." Set objError = objRemoteScript.Error Wscript.Echo "Caracter :" & objError.Character Wscript.Echo "Descripcion :" & objError.Description Wscript.Echo "Linea :" & objError.Line Wscript.Echo "Numero :" & objError.Number Wscript.Echo "Fuente :" & objError.Source Wscript.Echo "Texto fuente :" & objError.SourceText objRemoteScript.Terminate Wscript.Quit End Sub
29