This Script installes the Windows Subsystem for Linux and any linux distribution. 
You need the “reboot control” function included in your WINST / OPSI-Script.
Tree:
CLIENT_DATA ├── files │ ├── wsl-debian-gnulinux.appx │ ├── wsl-kalilinux-1140.appx │ ├── wsl-opensuse-42.appx │ ├── wsl-sles-12.appx │ ├── wsl-ubuntu-1604.appx │ └── wsl-ubuntu-1804.appx ├── Microsoft-WSL.png └── setup.opsiscript
[Actions]
importlib "fhg_rebootcontrol.opsiinc"
requiredWinstVersion >= "4.11.4.6"
ScriptErrorMessages=off
DefVar $MsiId$
DefVar $UninstallProgram$
DefVar $LogDir$
DefVar $ProductId$  
DefVar $MinimumSpace$
DefVar $rebootCounter$
DefVar $rebooted$
DefVar $distribution$
Set $LogDir$ = "%opsiLogDir%"
Message "init reboot counter"
set $rebooted$ = rebootcontrol("auto","read")
; ----------------------------------------------------------------
; - Please edit the following values                             -
; ----------------------------------------------------------------
;$ProductId$ should be the name of the product in opsi
; therefore please: only lower letters, no umlauts, 
; no white space use '-' as a seperator
Set $ProductId$       = "Microsoft-WSL"
Set $MinimumSpace$    = "5000 MB"
; the path were we find the product after the installation
; ----------------------------------------------------------------
if not(HasMinimumSpace ("%SystemDrive%", $MinimumSpace$))
	LogError "Not enough space on %SystemDrive%, " + $MinimumSpace$ + " on drive %SystemDrive% needed for " + $ProductId$
	isFatalError "No Space"
	; Stop process and set installation status to failed
else
	comment "Show product picture"
	ShowBitmap "%ScriptPath%\" + $ProductId$ + ".png" $ProductId$
	
	comment "get property value ....."
	set $distribution$ = getProductProperty("distribution", "wsl-ubuntu-1804")
	
	
	Message "Installing " + $ProductId$ + " ..."
	comment "Start setup program"
	ChangeDirectory "%SCRIPTPATH%"
	if $rebooted$ <= "0" 
		powershellCall('Enable-WindowsOptionalFeature -Online -FeatureName Microsoft-Windows-Subsystem-Linux -NoRestart')
		set $rebootCounter$ = rebootcontrol("auto","write")
		ExitWindows /ImmediateReboot
	else
		message "WSL is enabled"
		message "install Distribution"
		powershellCall('Add-AppxProvisionedPackage -SkipLicense -Online -PackagePath %scriptpath%\files\'+$distribution$)
		set $rebootCounter$ = rebootcontrol("auto","delete")
	endif
			
endif
[Package] version: 1 depends: incremental: False [Product] type: localboot id: Microsoft-WSL name: Windows Subsystem for Linux description: A template for opsi products advice: version: 4.0.6 priority: 0 licenseRequired: False productClasses: setupScript: setup.opsiscript uninstallScript: updateScript: alwaysScript: onceScript: customScript: userLoginScript: [ProductProperty] type: unicode name: Distribution multivalue: False editable: True description: Select Distribution values: ["wsl-ubuntu-1804.appx","wsl-debian-gnulinux.appx","wsl-ubuntu-1604.appx","wsl-kalilinux-1140.appx","wsl-sles-12.appx","wsl-opensuse-42.appx"] default: ["wsl-ubuntu-1804.appx"]