Windows Script Host

The icon for Windows Script Host

The Microsoft Windows Script Host (WSH) is an automation technology for Microsoft Windows operating systems that provides scripting abilities comparable to batch files, but with a wider range of supported features. It was originally called Windows Scripting Host, but was renamed for the second release.

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 scripting engines to enable them to script in other languages, for instance PerlScript. The language independent filename extension WSF can also be used. The advantage of the Windows Script File (.WSF) is that it allows the user to use a combination of scripting languages within a single file.

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.[1] WSH provides an environment for scripts to run – it invokes the appropriate script engine and provides a set of services and objects for the script to work with.[1] These scripts may be run in either GUI mode (WScript.exe) or command line mode (CScript.exe) offering flexibility to the user for interactive or non-interactive scripts.[2] WSH implements an object model which exposes a set of Component Object Model (COM) interfaces.[3]

WinWrap Basic, SaxBasic and others are similar to Visual Basic for Applications, These tools are used to add scripting and macro abilities. Many other languages can also be used in this fashion. Other languages used for scripting of programmes include Rexx, Tcl, Perl, Python, Ruby, and others which come with methods to control objects in the operating system and the spreadsheet and database programmes.[4]

VBScript is the macro language in Microsoft Outlook, whilst WordBasic is used for Word, Powerpoint and other tools. In Office 97 forward, true Visual Basic 5.0 is used. Other components use Visual Basic for Applications. OpenOffice uses Visual Basic, Python, and several others as macro languages and others can be added. LotusScript is very closely related to VBA, and pure VBA licensed from Microsoft is used Corel products such as Lotus Notes, Lotus 1·2·3, Quattro Pro &c.

Any scripting language connected to the 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), spreadsheets (Microsoft Excel Lotus 1·2·3, Quattro Pro. This can be accomplished by means of the WSH so any language can be used if there is an installed engine.

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.[5] 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.[6]

By using Software Restriction Policies introduced with Windows XP, a system may be configured to execute only those scripts which have been digitally signed, thus preventing the execution of untrusted scripts.[7]

Available scripting engines

Name Language File extensions Availability Produced By Status Date Notes
VBScript Microsoft VBScript .vbs Installed by default Microsoft default install 1999
JScript Microsoft JScript .js Installed by default Microsoft default install 1999
VBA Microsoft Visual Basic for Applications .mod, other Installed by default Microsoft default install 1999
WinWrap Basic WinWrap Basic .wwb In the main WWB installation Polar Engineering Standard functionality of WWB 2004
PerlScript Perl .pls with ActiveState Perl ActiveState Open source 1999
PScript Perl .p with MKS Toolkit MKS Commercial 2001
ooRexxScript REXX .rxs with Open Object Rexx Open Object Rexx team Open source
PythonScript Python .pys SourceForge & with ActivePython The Pywin32 project Open source
TclScript Tcl/Tk .tcls SourceForge ActiveState or third party Open source
ActivePHPScript PHP .phps with PHP PHP team Open source
RubyScript Ruby .rbs with Ruby Ruby team Open source
XLNTScript XLNT .xcs with XLNT ASCI Commercial
LuaScript Lua .lua with Lua Open Source
Object REXX engine Object REXX with IBM Object REXX IBM Commercial 2002
ForthScript Forth DMOZ Open Source
HaskellScript Haskell free download Open Source
XSLT WSH Engine XSLT free download Open Source
CobolScript WSH Engine Cobol Proprietary
Delphi scripting engine Delphi In some Delphi distributions or resource kits Commercial 2003

There have been suggestions of creating engines for other languages, such as LotusScript, SaxBasic, KiXtart, awk, bash, csh and other Unix shells, 4NT, cmd.exe (the Windows NT shell), Windows PowerShell, DCL, C, C++, Fortran and others.[8]

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 98 1.0 5.6
Windows 2000 2.0 (also termed WSH 5.1) 5.7
Windows Me 2.0 (also termed WSH 5.1) 5.6
Windows XP, Windows Server 2003 5.6 5.7
Windows Vista, Windows Server 2008, Windows XP SP3 5.7 Not applicable
Windows 7, Windows Server 2008 R2 5.8 Not applicable
Windows 8, Windows Server 2012 5.8 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 , redistributable versions for older operating systems (Windows 9x and Windows NT 4.0) are no longer available from the Microsoft Download Center.

As of Windows XP Service Pack 3, release 5.7 is not needed as it is included.

See also

References

External links