Differences

This shows you the differences between two versions of the page.

Link to this comparison view

userspace:library:getos [2014/04/24 20:28] (current)
embl-structures created
Line 1: Line 1:
 +====== Library: GetOS ======
 +
 +
 +Tested with opsi 4.0.2\\
 +required WInst Version: 4.11.3\\
 +By //Frank Thommen, 2014/04/24 20:25//
 +
 +
 +Tree:\\
 +<​code>​
 +%SCRIPTDRIVE%\lib\
 +  └ GetOS.sub
 +</​code>​
 +
 +
 +
 +=== GetOS.sub ===
 +<code winst>
 +;
 +; -----------------------------------------------------------
 +;  GetOS.sub - Retrieve the current OS version
 +; -----------------------------------------------------------
 +;
 +; AUTHOR: Frank Thommen, EMBL Heidelberg
 +; SHORTNAME (for variable names): os
 +;
 +;
 +; PREREQUISITE:​ none
 +;
 +; RETURN VARIABLE: $_os
 +;
 +; PURPOSE: Retrieve the current OS version using a consistent
 +;          naming "​Win"​+version,​ where version can be one of
 +;             XP
 +;             Vista
 +;             7
 +;             8
 +;             8.1
 +;
 +;          The OS version is returned in the variable $_os.  The
 +;          default value of $_os is "​UNKNOWN"​.
 +;
 +;
 +; NOTE: This script implements the informations published at
 +;       ​http://​msdn.microsoft.com/​en-us/​library/​ms724833%28VS.85%29.aspx
 +;       and in the chapter "​7.4.1. Info Maps" of the OPSI Winst manual
 +;       for version 4.11.3. ​ HOWEVER, only a SUBSET of the possible
 +;       OS versions is supported (see above).
 +;
 +;
 +; USAGE:
 +;          Sub "​%SCRIPTDRIVE%\lib\GetOS.sub"​
 +;          if ($_os = "​UNKNKOWN"​)
 +;             PAUSE "This is OS is UNKNOWN"​
 +;          else
 +;             PAUSE "OS is " + $_os
 +;          endif
 +;
 +;
 +; HISTORY: 2013:        Initial version
 +;          12-FEB-2014:​ Added Windows 8 and 8.1 support
 +;
 +;
 +
 +; avoid error message if run several times
 +ScriptErrorMessages = off
 +FatalOnSyntaxError ​ = false
 +  DefVar $_os
 +  Set    $_os = "​UNKNOWN"​
 +
 +  DefStringList $__MSVersionMap
 +  Set           ​$__MSVersionMap = getMSVersionMap
 +
 +  DefVar $__os.majorversion
 +  Set    $__os.majorversion = getValue("​major_version",​ $__MSVersionMap)
 +
 +  DefVar $__os.minorversion
 +  Set    $__os.minorversion = getValue("​minor_version",​ $__MSVersionMap)
 +
 +  ; ProductType:​
 +  ;   1 = VER_NT_WORKSTATION
 +  ;   2 = VER_NT_DOMAIN_CONTROLLER
 +  ;   3 = VER_NT_SERVER
 +  ;
 +  DefVar $__os.producttype
 +  Set    $__os.producttype = getValue("​product_type_nr",​ $__MSVersionMap)
 +ScriptErrorMessages = on
 +FatalOnSyntaxError ​ = true
 +
 +
 +if ( $__os.producttype = "​1"​ )
 +  ; Client OS versions
 +  ;
 +  if ( $__os.majorversion = "​6"​ )
 +    if ( $__os.minorversion = "​3"​)
 +      Set $_os = "​Win8.1"​
 +    else
 +      if ( $__os.minorversion = "​2"​)
 +        Set $_os = "​Win8"​
 +      else
 +        if ( $__os.minorversion = "​1"​)
 +          Set $_os = "​Win7"​
 +        else
 +          if ( $__os.minorversion = "​0"​)
 +            Set $_os = "​WinVista"​
 +          endif
 +        endif
 +      endif
 +    endif
 +  else
 +    if ( $__os.majorversion = "​5"​ )
 +      ; this detection is a pragmatic approach as the
 +      ; detecting Win XP Pro 64bit is more complicated
 +      ; (see http://​msdn.microsoft.com/​en-us/​library/​ms724833%28VS.85%29.aspx) ​
 +      Set $_os = "​WinXP"​
 +    endif
 +  endif
 +endif
 +</​code>​
 +
  

QR Code
QR Code userspace:library:getos (generated for current page)