Windows Script Host
Other names | Windows Scripting Host |
---|---|
Developer(s) | Microsoft |
Stable release | 5.812
|
Operating system | Microsoft Windows |
Type | Automation technology |
License | Proprietary commercial software |
Website | Windows Script Host overview |
The
It is language-independent in that it can make use of different Active Scripting language engines. By default, it interprets and runs plain-text JScript (.JS and .JSE files) and VBScript (.VBS and .VBE files).
Users can install different
WSH engines include various implementations for the Rexx, BASIC, Perl, Ruby, Tcl, PHP, JavaScript, Delphi, Python, XSLT, and other languages.
Windows Script Host is distributed and installed by default on Windows 98 and later versions of Windows. It is also installed if Internet Explorer 5 (or a later version) is installed. Beginning with Windows 2000, the Windows Script Host became available for use with user login scripts.
Usage
Windows Script Host may be used for a variety of purposes, including logon scripts, administration and general automation. Microsoft describes it as an administration tool.
The WSH, the engines, and related functionality are also listed as objects which can be accessed and scripted and queried by means of the VBA and Visual Studio object explorers and those for similar tools like the various script debuggers, e.g. Microsoft Script Debugger, and editors.
WSH implements an
The
As of the most recent releases and going back a number of versions now, the programmability of 4NT / Take Command in the latest implementations (by means of "@REXX" and similar for Perl, Python, Tcl, Ruby, Lua, VBScript, JScript and the like and so on) generally uses the WSH engine.[12] The ZOC terminal emulator gets its ability to be programmed in Rexx by means of an external interpreter, one of which is supplied with the programme, and alternate Rexx interpreters can be specified in the configuration of the programme.[13][14] The MKS Toolkit provides PScript, a WSH engine in addition to the standard Perl interpreter perl.exe which comes with the package.
VBScript, JScript, and some third-party engines have the ability to create and execute scripts in an encoded format which prevents editing with a text editor; the file extensions for these encoded scripts is .vbe and .jse and others of that type.
Unless otherwise specified, any WSH scripting engine can be used with the various Windows server software packages to provide CGI scripting. The current versions of the default WSH engines and all or most of the third party engines have socket abilities as well; as a CGI script or otherwise, PerlScript is the choice of many programmers for this purpose and the VBScript and various Rexx-based engines are also rated as sufficiently powerful in connectivity and text-processing abilities to also be useful. This also goes for file access and processing—the earliest WSH engines for VBScript and JScript do not since the base language did not,[15] whilst PerlScript, ooRexxScript, and the others have this from the beginning.
VBScript is the macro language in
Any scripting language installed under Windows can be accessed by external means of PerlScript, PythonScript, VBScript and the other engines available can be used to access databases (Lotus Notes, Microsoft Access, Oracle Database, Paradox) and spreadsheets (Microsoft Excel, Lotus 1-2-3, Quattro Pro) and other tools like word processors, terminal emulators, command shells and so on. This can be accomplished by means of the WSH, so any language can be used if there is an installed engine.
In recent versions of the Take Command enhanced command prompt and tools, the "script" command typed at the shell prompt will produce a list of the currently installed engines, one to a line and therefore CR-LF delimited.[17][18][19]
Examples
The first example is very simple; it shows some VBScript which uses the root WSH COM object "WScript" to display a message with an 'OK' button. Upon launching this script the CScript or WScript engine would be called and the runtime environment provided.
Content of a file hello0.vbs
WScript.Echo "Hello world"
WScript.Quit
WSH programming can also use the JScript language.
Content of a file hello1.js
WSH.Echo("Hello world");
WSH.Quit();
Or, code can be mixed in one WSF file, such as VBScript and JScript, or any other:
Content of a file hello2.wsf
<job>
<script language="VBScript">
MsgBox "hello world (from vb)"
</script>
<script language="JScript">
WSH.echo("hello world (from js)");
</script>
</job>
Security concerns
Windows applications and processes may be automated using a script in Windows Script Host. Viruses and malware could be written to exploit this ability. Thus, some suggest disabling it for security reasons.[20] Alternatively, antivirus programs may offer features to control .vbs and other scripts which run in the WSH environment.
Since version 5.6 of WSH, scripts can be digitally signed programmatically using the Scripting.Signer object in a script itself, provided a valid certificate is present on the system. Alternatively, the signcode tool from the Platform SDK, which has been extended to support WSH filetypes, may be used at the command line.[21]
By using Software Restriction Policies introduced with Windows XP, a system may be configured to execute only those scripts which are stored in trusted locations, have a known MD5 hash, or have been digitally signed by a trusted publisher, thus preventing the execution of untrusted scripts.[22]
Available scripting engines
Note: By definition, all of these scripting engines can be utilised in
Engine name | Scripting language implemented | Base language | File extensions | Availability | Produced by | Status | Initial release date | Encoded scripts | Notes |
---|---|---|---|---|---|---|---|---|---|
VBScript | Microsoft VBScript | Microsoft Visual Basic | .vbs | Installed by default | Microsoft | default install | 1999 | Yes, .vbe | Default windows host script |
JScript | Microsoft JScript | ECMAScript | .js | Installed by default | Microsoft | default install | 1999 | Yes, .jse | Default java script host |
WinWrap Basic | WinWrap Basic | Basic | .wwb | In the main WWB installation | Polar Engineering | Standard functionality of WWB; Utilises both .NET and COM | 2004 | Yes | |
PerlScript
|
Perl | Perl 5 | .pls | with ActiveState Perl | ActiveState | Open source | 1999 | Reportedly yes | |
PScript | Perl | Perl 5, CGI functionality | .p, .ps | with MKS Toolkit | MKS | Commercial | 2001 | ||
XBScript | xBase Scripting Engine | xBase (Clipper) | .xbs, .prg | Clipper | with XBScript sofrware | Commercial | |||
LotusScript WSH | LotusScript | Microsoft Visual Basic (q.v.) | .nsf | Third party download | Service Desk Plus | Freeware | 2001 | ||
RexxScript | Rexx | Rexx | .rxs, .rx, .rex | With some Rexx implementations | Various | Freeware | 1998 | ||
ooRexxScript | Open Object REXX | REXX | .rxs | with Open Object Rexx or free from some third parties | Open Object Rexx team | Open source | |||
PythonScript | Python | Python | .pys | SourceForge & with ActivePython | The Pywin32 project | Open source | |||
TclScript | Tcl/Tk | Tcl/Tk | .tcls | SourceForge | ActiveState or third party | Open source | |||
ActivePHPScript | PHP | PHP | .phps | with PHP | PHP team | Open source | |||
PHPScript | PHP | PHP | .phps | with PHP | PHP team | Open source | Earlier version of ActivePHPScript | ||
RubyScript | Ruby | Ruby | .rbs | with Ruby distribution | Ruby team | Open source | Yes | ||
XLNTScript | XLNT | DCL | .xcs | with XLNT | Advanced Systems Concepts, Inc.
|
Commercial | 1997 | An OpenVMS DCL-based multi-purpose scripting application for Windows | |
LuaScript | Lua | Lua | .lua | with Lua | Lua organisation | Open Source | |||
Object REXX engine | Object REXX | Rexx | .rex, .rxs | with IBM Object REXX | IBM | Commercial | 2002 | ||
XML Engine | XML parsing | Extended HTML, XML | .xml | with many XML implementations | Elf Data | de facto Default install | 2000 | Macintosh too | |
Kixtart WSH Engine | Kixtart
|
KixTart, MS-DOS, Windows 95. Windows NT shells | .kix | with KixStart | Microsoft Netherlands | Windows Resource Kits and other resources | 1996 | Download from Microsoft or elsewhere, aka KixStart32 | |
NullScript | NullScript | Null language | .ns | with NullScript | NullScript Organisation | Windows Resource Kits and other resources | 1999 | ||
ForthScript | Forth | Forth | .fth, others | Forth | DMOZ | Open Source | |||
Haskell Script
|
Haskell
|
Haskell | *.hsk (provisional), others | free download | Open Source | ||||
XSLT WSH Engine | XSLT | XSLT | .xslt | free download | Open Source | ||||
CobolScript WSH Engine | Cobol
|
Cobol | .cbl. .cob, .cb | Fujitsu Cobol 3 -- free for educational use | Commercialware from Fujitsu free with free compiler for educators &c | Proprietary | |||
Delphi scripting engine | Delphi | Delphi, a Pascal variant | .dlp, .del, . | In some Delphi distributions or resource kits | Commercial | 2003 | |||
DMDScript | DMDScript | D, a major incrementation of C | .dmd | DMD Distributions, download | Freeware | Available on Web | 2014 | DMD | |
C# Script | C# | Microsoft C#.NET | .cs. .c#, others | Source code available | Open Source, active development underway | unclear | 2013 | ||
Small C Scripting Engine | C | C (K&R, Ansi) | .c, others | Various locations, check Web | Freeware | 2009 | |||
JavaScript WSH Engine | JavaScript/Java | Java & variants | .java, .j, jva, others | With many JavaScript implementations | Sun/Other Java Organisations | Freeware | |||
Take Command WSH Engine | Take Command
|
TCC, the current version of 4NT p
|
.btm, .cmd, bat, others | Check JP Software | JP Software | Proprietary | 2015 | Early development | |
92Script WSH Engine | TI-Basic
|
Calculator TI-Basic | .92bs | Project Web/FTP site | Various independent programmers | Experimental, Open Source | 2014 | "possible" | Beta Q4 2015 for main engine; graphing functionality (92Script/Tk) then or later |
48Script WSH Engine | HP-48 Calculator family on-board programming language
|
HP 48 Programming Language, distant relative of Forth, Basic, Lisp | .48s | Project Web/FTP site | Various independent programmers | Experimental | 2015 | Planned | Status as of 2015-09-30. Language has Lisp, Basic, Forth, and other influences. |
Fortran Script | Fortran | Fortran 77 | .for, .ftn. f77, f90, f95 | Various | Various | Experimental proof-of-concept, academic exercise, shareware, commercial, open source. | 2000 | ||
PascalScript | Object Pascal | Pascal 7 | .pas, .ops, other | Object Pascal | RemObjects | Freeware | 2001 | Can also be used with Delphi directly | |
Lisp WSH Engine | Lisp | Lisp | .lisp, .lsp | Various Lisp tools | AutoLisp and others | Freeware or Shareware | |||
BESEN | ECMA-JavaScript | Java and Variants | .bes, .bsn, others | SourceForge | BESEN Organisation | Open Source | 2011 | ||
ECMAScript WSH engines | Java and Variants | Various | Various | Various | Various | Experimental, Freeware, Open Source, Shareware, Proprietary, Commercialware | 2005 | There are numerous ECMAScript implementations but not all have WSH engines | |
CFXScript WSH Engine | Casio CFX-9850 and fx Calculator series on-board programming language | Casio Calculator Programming Language, as ported to various operating systems as CFW | .cfxb | Project Web/FTP Sites | independent programmers | Experimental | 2015 | Planned[23] | Status as of 2015-09-30. Language has elements of Basic, Forth, Fortran, and others. |
SharpCalcScript WSH Engine | Sharp graphing calculators on-board programming language | Sharp S-Basic as ported to windows as NeusSFortran | .scsb | Project Web/FTP Sites | independent programmers | Experimental | 2015 | Planned | Status as of 2015-09-30. Also subsumes the S-Basic language of Sharp's Pocket Computers. |
There have been suggestions of creating engines for other languages, such as
The XLNT language[25] is based on DCL and provides a very large subset of the language along with additional commands and statements and the software can be used in three ways: the WSH engine (*.xcs), the console interpreter (*.xlnt) and as a server and client side CGI engine (*.xgi).[26]When a server implementing CGI such as the Windows Internet Information Server, ports of Apache and others, all or most of the engines can be used; the most commonly used are VBScript, JScript, PythonScript, PerlScript, ActivePHPScript, and ooRexxScript. The MKS Toolkit PScript program also runs Perl. Command shells like cmd.exe, 4NT, ksh, and scripting languages with string processing and preferably socket functionality are also able to be used for CGI scripting; compiled languages like C++, Visual Basic, and Java can also be used like this. All Perl interpreters, ooRexx, PHP, and more recent versions of VBScript and JScript can use sockets for TCP/IP and usually UDP and other protocols for this.
Version history
Windows version | Shipped with WSH version | Last redistributable version |
---|---|---|
Windows 95 | None (separate redistributable) | 5.6 |
Windows NT 4.0 | None (separate redistributable) | 5.6 |
Windows CE 3.0
|
1.0 (optional install on installer disc) | 2.0 |
Windows 98 | 1.0 | 5.6 |
Windows 98 Second Edition
|
1.0 | 5.6 |
Windows 2000 | 2.0 (also termed WSH 5.1) | 5.7 |
Windows 2000 SP3, SP4 and SP5 | 5.6 | 5.7 |
Windows Me | 2.0 (also termed WSH 5.1) | 5.6 |
Windows XP | 5.6 | 5.7 |
Windows XP SP3
|
5.7 | Not applicable |
Windows Server 2003 | 5.6 | 5.7 |
Windows Vista | 5.7 | Not applicable |
Windows Server 2008 | 5.7 | Not applicable |
Windows 7 | 5.8 | Not applicable |
Windows Server 2008 R2 | 5.8 | Not applicable |
Windows 8 | 5.8 | Not applicable |
Windows Server 2012 | 5.8 | Not applicable |
Windows 10 | 5.812 | Not applicable |
Windows Server 2016 | 5.812 | Not applicable |
The redistributable version of WSH version 5.6 can be installed on Windows 95/98/Me and Windows NT 4.0/2000. WSH 5.7 is downloadable for Windows 2000, Windows XP and Windows Server 2003. Recently[when?], redistributable versions for older operating systems (Windows 9x and Windows NT 4.0) are no longer available from the Microsoft Download Center.
Since Windows XP Service Pack 3, release 5.7 is the only version available from Microsoft, with newer revisions being included in newer versions of Windows since.
See also
References
- ^ ?MSDN, "Windows Scripting Host" and "VBScript"
- ^ MSDN April 2000 edition, "Windows Scripting Host"
- ^ The VBScript Bible (1999)
- ^ Windows 2000 Server Resource Kit (documentation
- ^ a b "What Is WSH?". msdn.microsoft.com. 24 October 2011. Archived from the original on 7 January 2018. Retrieved 30 April 2018.
- ^ "Windows Script Host Basics". msdn.microsoft.com. 24 October 2011. Archived from the original on 8 August 2017. Retrieved 30 April 2018.
- ^ "Windows Script Host Object Model". msdn.microsoft.com. 24 October 2011. Archived from the original on 8 August 2017. Retrieved 30 April 2018.
- ^ MSDN "VBA"
- ^ User's Manual, Paint Shop Pro 8
- ^ Paint Shop Pro 8 help, "Automation"
- ^ main help file, Passport for Windows
- ^ Take Command documentation 18.00 documentation hard copy and Help file
- ^ Zoc v 6.0 help
- ^ Zoc 5.0 printed manual
- ^ MSDN documentation
- ^ Windows Office 97 & 2000 Bibles (Wiley)
- ^ Take Command version 18.00 documentation
- ^ JP Software Take Command-4NT-4Dos-4OS/2 site, bulletin board
- ^ Take Command 18.00 help
- ^ "Norman - Antivirus & Security Software for Home & Business". AVG.com. Archived from the original on 21 February 2006. Retrieved 30 April 2018.
- ^ LLC), Tara Meyer (Aquent (30 June 2006). "Providing a Secure eXPerience". msdn.microsoft.com. Archived from the original on 10 November 2017. Retrieved 30 April 2018.
- ^ Windows Script Host 5.6 Boasts Windows XP Integration, Security, New Object Model Archived 2008-02-18 at the Wayback Machine
- ^ CasioCalc.com, msgs of 15.09.2016
- ^ "Notes/Domino 4 and 5 Forum : RE: Suggestion: Make LotusScript a script engine for Windows Scripting Host". Archived from the original on 2015-03-21. Retrieved 2015-03-12.
- ^ ASCI html help file
- ^ ASCI site