Windows Script Host  

Ejemplo de secuencia de comandos de WSH para un administrador de red

Este ejemplo de red de Windows Script Host muestra cómo un administrador de red puede utilizar una secuencia de comandos en varios equipos remotos de la red. La secuencia de comandos realiza varias tareas administrativas útiles, como:

El administrador debe establecer la configuración de seguridad necesaria en los equipos remotos. Para obtener más información, consulte Configurar WSH remoto. A continuación, debe copiar y pegar el ejemplo en el procesador de secuencias de comandos y modificar las constantes para que correspondan a las rutas de acceso de red y a los nombres de los equipos remotos. Por último, el administrador puede ejecutar la secuencia de comandos.

Para ejecutar este ejemplo

  1. Configure los parámetros de seguridad necesarios en los equipos remotos.
  2. Copie la secuencia de comandos AdminScript.vbs en el procesador de secuencias de comandos que utilice habitualmente.
  3. Cambie las constantes para que correspondan a las rutas de acceso de red y a los nombres de los equipos remotos.
  4. Sustituya remmachine por el nombre del equipo remoto y ejecute la secuencia de comandos:
    var oController = new ActiveXObject"WSHController"
    var oProcess = oController.CreateScript "c:\MiDirectorioLocal\\AdminScript.vbs", "remmachine"
    oProcess.Execute()
    while (oProcess.Status != 2) 
         WScript.Sleep(100)
    WScript.Echo"Terminado" 

Ejemplo AdminScript.vbs

' Ejemplo de administración de WSH remoto  AdminScript.vbs
'
' El código de este ejemplo realiza algunas tareas administrativas 
' que son habituales para un administrador de red
' en el trabajo diario:  crea un directorio público, lo llena
' con algunos archivos y lo comparte.  También configura 
' la conexión de los equipos con la impresora predeterminada.

' Tenga en cuenta que, para reducir el tamaño del código, el control
' de errores no está incluido.  Si se utilizara en un entorno de producción real
' el control de errores sería necesario, pues muchas de estas operaciones 
' pueden producir errores (por ejemplo, espacio insuficiente en disco).

Option Explicit

Dim FSO
Dim Servicios
Dim SecDescClase
Dim SecDesc
Dim Confianza
Dim ACE
Dim Recurso
Dim InParam
Dim Red

Const NombreCarpeta = "C:\Public"
Const ServidorAdmin = "\\EquipoAdmin"
Const NombreRecurso = "Pubs"
Const RecursoImpresora = "\\ImpresorasCorp\RecursoImpresora"

' Primero se agrega una impresora a este equipo y se configura como predeterminada.

Set Red = CreateObject("WScript.Network")    
Network.AddWindowsPrinterConnection RecursoImpresora
Network.SetDefaultPrinter RecursoImpresora

' Después se crea una carpeta y se copian algunos archivos.

Set FSO = CreateObject("Scripting.FileSystemObject")
If Not FSO.FolderExists(NombreCarpeta) Then 
   FSO.CreateFolder(NombreCarpeta)
End If

Call FSO.CopyFile(ServidorAdmin & "\Public\Imagenes\*.*", NombreCarpeta)

' Utiliza WMI para crear un recurso compartido en la carpeta
' Consulte el SDK de WMI para obtener información acerca de este código.

Set Servicios = GetObject("WINMGMTS:{impersonationLevel=impersonate,(Security)}!" & ServidorAdmin & "\ROOT\CIMV2")
Set SecDescClase = Servicios.Get("Win32_SecurityDescriptor")
Set SecDesc = SecDescClase.SpawnInstance_()
Set Confianza = Servicios.Get("Win32_Trustee").SpawnInstance_
Confianza.Domain = Null
Confianza.Name = "EVERYONE"
Confianza.Properties_.Item("SID") = Array(1, 1, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0)
Set ACE = Servicios.Get("Win32_Ace").SpawnInstance_
ACE.Properties_.Item("AccessMask") = 2032127
ACE.Properties_.Item("AceFlags") = 3
ACE.Properties_.Item("AceType") = 0
ACE.Properties_.Item("Trustee") = Confianza
SecDesc.Properties_.Item("DACL") = Array(ACE)
Set Recurso = Servicios.Get("Win32_Share")
Set InParam = Recurso.Methods_("Create").InParameters.SpawnInstance_()
InParam.Properties_.Item("Access") = SecDesc
InParam.Properties_.Item("Description") = "Recurso compartido público"
InParam.Properties_.Item("Name") = NombreRecurso
InParam.Properties_.Item("Path") = NombreCarpeta
InParam.Properties_.Item("Type") = 0
Share.ExecMethod_("Create", InParam)

' Esto es todo.

Consulte también

Introducción a Windows Scripting Host | Acceso a redes | Configurar WSH remoto | Ejecutar secuencias de comandos de forma remota

Ayuda de Javascript y Vbscript para Javascripts.astalaweb.com.