Microsoft Windows Script Host ( WSH ) (anteriormente llamado Windows Scripting Host ) es una tecnología de automatización para sistemas operativos Microsoft Windows que proporciona capacidades de secuencias de comandos comparables a los archivos por lotes , pero con una gama más amplia de funciones compatibles. Esta herramienta se proporcionó por primera vez en Windows 95 después de la Build 950a en los discos de instalación como una instalación opcional configurable e instalable mediante el Panel de control , y luego como componente estándar de Windows 98 (Build 1111) y posteriores y Windows NT 4.0 Build 1381 y mediante Service Pack 4. WSH también es un medio de automatización para Internet Explorer a través de los motores WSH instalados a partir de IE versión 3.0; en ese momento, VBScript se convirtió en un medio de automatización para Microsoft Outlook 97. [1] WSH también es una instalación opcional provista con un motor VBScript y JScript para Windows CE 3.0 y siguientes, y algunos motores de terceros, incluidos Rexx y otras formas de Basic, son también disponible. [2] [3] [4]
Es independiente del lenguaje porque puede utilizar diferentes motores de lenguaje Active Scripting . De forma predeterminada, interpreta y ejecuta JScript de texto plano (archivos .JS y .JSE) y VBScript (archivos .VBS y .VBE).
Los usuarios pueden instalar diferentes motores de scripting que les permitan escribir scripts en otros lenguajes, por ejemplo PerlScript . También se puede utilizar la extensión de nombre de archivo independiente del idioma WSF. La ventaja del archivo de secuencias de comandos de Windows (.WSF) es que permite múltiples secuencias de comandos ("trabajos"), así como una combinación de lenguajes de secuencias de comandos dentro de un solo archivo.
Los motores WSH incluyen varias implementaciones para Rexx , BASIC , Perl , Ruby , Tcl , PHP , JavaScript , Delphi , Python , XSLT y otros lenguajes.
Windows Script Host se distribuye e instala de forma predeterminada en Windows 98 y versiones posteriores de Windows. También se instala si está instalado Internet Explorer 5 (o una versión posterior). A partir de Windows 2000 , Windows Script Host estuvo disponible para su uso con scripts de inicio de sesión de usuarios.
Windows Script Host se puede utilizar para diversos fines, incluidos scripts de inicio de sesión, administración y automatización general. Microsoft lo describe como una herramienta de administración . [5] WSH proporciona un entorno para que se ejecuten los scripts: invoca el motor de script apropiado y proporciona un conjunto de servicios y objetos con los que puede trabajar el script. [5] Estos scripts pueden ejecutarse en modo GUI ( WScript .exe) o modo de línea de comandos ( CScript .exe), o desde un objeto COM ( wshom .ocx), ofreciendo flexibilidad al usuario para scripts interactivos o no interactivos. [6] El Instrumental de administración de Windows también se puede programar de esta manera.
El WSH, los motores y la funcionalidad relacionada también se enumeran como objetos a los que se puede acceder, programar y consultar mediante los exploradores de objetos de VBA y Visual Studio y aquellos para herramientas similares como los distintos depuradores de scripts, por ejemplo, Microsoft Script Debugger , y editores. .
WSH implementa un modelo de objetos que expone un conjunto de interfaces del modelo de objetos componentes (COM). [7] Entonces, además de ASP, IIS, Internet Explorer, CScript y WScript, WSH se puede usar para automatizar y comunicarse con cualquier aplicación de Windows con COM y otros objetos expuestos, como el uso de PerlScript para consultar Microsoft Access por varios medios, incluidos varios motores ODBC y SQL , ooRexxScript para crear lo que en realidad son macros Rexx en Microsoft Excel , Quattro Pro, Microsoft Word , Lotus Notes y cualquiera de los similares, el script XLNT para obtener variables de entorno e imprimirlas en un nuevo documento TextPad , y pronto.
La funcionalidad VBA de Microsoft Office, Open Office (así como Python y otros lenguajes de macros instalables) y Corel WordPerfect Office está separada de los motores WSH, aunque Outlook 97 usa VBScript en lugar de VBA como lenguaje de macros. [8]
Python en forma de ActiveState PythonScript se puede utilizar para automatizar y consultar datos en SecureCRT , al igual que con otros lenguajes con motores instalados, por ejemplo, PerlScript , ooRexxScript, PHPScript, RubyScript, LuaScript, XLNT , etc. Una excepción notable es Paint Shop Pro , que puede automatizarse en Python mediante un intérprete de macros dentro del propio programa PSP en lugar de utilizar el motor PythonScript WSH o una implementación externa de Python, como los intérpretes de Python suministrados con los paquetes de software de integración y emulación de Unix o otras implementaciones independientes de Python et al. [9] [10] como intermedio y, de hecho, se puede programar así incluso en ausencia de una instalación de Python de terceros; Lo mismo ocurre con el emulador de terminal programable Passport de Rexx. [11] El emulador de terminal SecureCRT , el cliente FTP SecureFX y los programas de cliente y servidor relacionados de Van Dyke están, a partir de las versiones actuales, automatizados mediante WSH, por lo que se puede utilizar cualquier lenguaje con un motor instalado; El software viene con ejemplos de VBScript, JScript y PerlScript.
A partir de los lanzamientos más recientes y desde varias versiones, la programabilidad de 4NT / Take Command en las últimas implementaciones (mediante "@REXX" y similares para Perl, Python, Tcl, Ruby, Lua, VBScript, JScript y similares, etc.) generalmente utiliza el motor WSH. [12] El emulador de terminal ZOC tiene la capacidad de programarse en Rexx mediante un intérprete externo, uno de los cuales se suministra con el programa, y se pueden especificar intérpretes Rexx alternativos en la configuración del programa. [13] [14] MKS Toolkit proporciona PScript, un motor WSH además del intérprete de Perl estándar perl.exe que viene con el paquete.
VBScript, JScript y algunos motores de terceros tienen la capacidad de crear y ejecutar scripts en un formato codificado que impide la edición con un editor de texto; las extensiones de archivo para estos scripts codificados son .vbe y .jse y otras de ese tipo.
A menos que se especifique lo contrario, cualquier motor de secuencias de comandos WSH se puede utilizar con los distintos paquetes de software de servidor de Windows para proporcionar secuencias de comandos CGI. Las versiones actuales de los motores WSH predeterminados y todos o la mayoría de los motores de terceros también tienen capacidades de socket; como script CGI o no, PerlScript es la elección de muchos programadores para este propósito y VBScript y varios motores basados en Rexx también están calificados como suficientemente potentes en conectividad y capacidades de procesamiento de texto como para ser también útiles. Esto también se aplica al acceso y procesamiento de archivos: los primeros motores WSH para VBScript y JScript no lo hacen, ya que el lenguaje base no lo hacía, [15] mientras que PerlScript, ooRexxScript y los demás tienen esto desde el principio.
WinWrap Basic , SaxBasic y otros son similares a Visual Basic para aplicaciones. Estas herramientas se utilizan para agregar secuencias de comandos y capacidades de macros al software que se está desarrollando y se pueden encontrar en versiones anteriores de Host Explorer, por ejemplo. También se pueden utilizar muchos otros idiomas de esta manera. Otros lenguajes utilizados para la creación de secuencias de comandos de programas incluyen Rexx, Tcl, Perl, Python, Ruby y otros que vienen con métodos para controlar objetos en el sistema operativo y los programas de hojas de cálculo y bases de datos. [16] Una excepción es que el emulador de terminal Zoc está controlado por un intérprete Rexx suministrado con el paquete u otro intérprete especificado por el usuario; Este también es el caso del emulador Passport.
VBScript es el lenguaje de macros de Microsoft Outlook 97, mientras que WordBasic se utiliza para Word hasta 6, Powerpoint y otras herramientas. Excel a 5.0 usa Visual Basic 5.0. A partir de Office 2000, se utiliza Visual Basic para Aplicaciones 6.0 para todos los componentes. Otros componentes utilizan Visual Basic para Aplicaciones . OpenOffice utiliza Visual Basic, Python y varios otros como lenguajes de macros y se pueden agregar otros. LotusScript está muy relacionado con VBA y se utiliza para Lotus Notes y Lotus SmartSuite , que incluye Lotus Word Pro (el actual descendiente de Ami Pro ), Lotus Approach , Lotus FastSite, Lotus 1-2-3 , etc., y VBA puro, con licencia. de Microsoft, se utiliza en productos Corel como WordPerfect , Paradox , Quattro Pro , etc.
Se puede acceder a cualquier lenguaje de script instalado en Windows por medios externos como PerlScript, PythonScript, VBScript y los otros motores disponibles se pueden utilizar para acceder a bases de datos (Lotus Notes, Microsoft Access, Oracle Database , Paradox) y hojas de cálculo (Microsoft Excel, Lotus 1- 2-3, Quattro Pro) y otras herramientas como procesadores de texto, emuladores de terminal, shells de comandos, etc. Esto se puede lograr mediante WSH, por lo que se puede utilizar cualquier idioma si hay un motor instalado.
En versiones recientes del símbolo del sistema mejorado y las herramientas de Take Command , el comando "script" escrito en el símbolo del shell producirá una lista de los motores instalados actualmente, uno por línea y, por lo tanto, delimitado por CR-LF. [17] [18] [19]
El primer ejemplo es muy sencillo; muestra algo de VBScript que utiliza el objeto raíz WSH COM "WScript" para mostrar un mensaje con un botón "Aceptar". Al iniciar este script, se llamará al motor CScript o WScript y se proporcionará el entorno de ejecución.
Contenido de un archivohello0.vbs
WScript . Haga eco de "Hola mundo" WScript . Abandonar
La programación WSH también puede utilizar el lenguaje JScript .
Contenido de un archivohello1.js
WSH . Eco ( "Hola mundo" ); WSH . Abandonar ();
O bien, se puede mezclar código en un archivo WSF , como VBScript y JScript , o cualquier otro:
Contenido de un archivohello2.wsf
<trabajo> <script language= "VBScript" > MsgBox "hola mundo (de vb)" </script> <script language= "JScript" > WSH.echo("hola mundo (de js)");</script> </trabajo>
Las aplicaciones y procesos de Windows se pueden automatizar mediante un script en Windows Script Host. Se podrían escribir virus y malware para aprovechar esta capacidad. Por ello, algunos sugieren desactivarlo por motivos de seguridad. [20] Alternativamente, los programas antivirus pueden ofrecer funciones para controlar .vbs y otros scripts que se ejecutan en el entorno WSH.
Desde la versión 5.6 de WSH, los scripts se pueden firmar digitalmente mediante programación utilizando el objeto Scripting.Signer en un script, siempre que haya un certificado válido en el sistema. Alternativamente, se puede utilizar en la línea de comando la herramienta Signcode del SDK de la plataforma, que se ha ampliado para admitir tipos de archivos WSH. [21]
Al utilizar las políticas de restricción de software introducidas con Windows XP, se puede configurar un sistema para ejecutar solo aquellos scripts que están almacenados en ubicaciones confiables, tienen un hash MD5 conocido o han sido firmados digitalmente por un editor confiable, evitando así la ejecución de scripts que no son confiables. . [22]
Nota : Por definición, todos estos motores de secuencias de comandos se pueden utilizar en la programación CGI en Windows con cualquier número de programas y configuraciones, lo que significa que los archivos de código fuente para una secuencia de comandos utilizada en un servidor con fines CGI podrían tener otras extensiones de archivo como .cgi y así sucesivamente. La capacidad antes mencionada de Windows Script Host para ejecutar un script con varios idiomas en archivos con una extensión .wsh. HTML y XML extendidos también aumentan las posibilidades adicionales cuando se trabaja con scripts para uso en red, al igual que las páginas Active Server , etc. Además, los scripts de shell de Windows y los scripts escritos en shells con capacidades mejoradas como TCC , 4NT , etc. y los shells de Unix bajo software de interoperabilidad como MKS Toolkit también pueden tener scripts integrados.
Ha habido sugerencias de crear motores para otros lenguajes, como LotusScript , SaxBasic, BasicScript, KiXtart , awk , bash , csh y otros shells de Unix, 4NT , cmd.exe (el shell de Windows NT), Windows PowerShell , DCL , C , C++ , Fortran y otros. [24] El lenguaje XLNT [25] se basa en DCL y proporciona un subconjunto muy grande del lenguaje junto con comandos y declaraciones adicionales, y el software se puede utilizar de tres maneras: el motor WSH (*.xcs), el intérprete de consola (*.xlnt) y como motor CGI del lado del servidor y del cliente (*.xgi). [26]
Cuando un servidor implementa CGI como el Windows Internet Information Server, puertos de Apache y otros, se pueden utilizar todos o la mayoría de los motores; los más utilizados son VBScript, JScript, PythonScript, PerlScript, ActivePHPScript y ooRexxScript. El programa MKS Toolkit PScript también ejecuta Perl. Los shells de comandos como cmd.exe, 4NT, ksh y lenguajes de secuencias de comandos con procesamiento de cadenas y preferiblemente funcionalidad de socket también se pueden utilizar para secuencias de comandos CGI; Los lenguajes compilados como C++, Visual Basic y Java también se pueden utilizar así. Todos los intérpretes de Perl, ooRexx, PHP y versiones más recientes de VBScript y JScript pueden utilizar sockets para TCP/IP y normalmente UDP y otros protocolos para esto.
La versión redistribuible de WSH versión 5.6 se puede instalar en Windows 95/98/Me y Windows NT 4.0/2000. WSH 5.7 se puede descargar para Windows 2000, Windows XP y Windows Server 2003. Recientemente [ ¿ cuándo? ] , las versiones redistribuibles para sistemas operativos más antiguos (Windows 9x y Windows NT 4.0) ya no están disponibles en el Centro de descarga de Microsoft.
Desde Windows XP Service Pack 3, la versión 5.7 es la única versión disponible de Microsoft, y desde entonces se incluyen revisiones más recientes en las versiones más recientes de Windows.