This is an old revision of the document!
Tested with opsi 4.0.4.5
requiredWinstVersion >= 4.11.3.6
You need the Dell CCTK
Files can be downloaded at http://en.community.dell.com/techcenter/systems-management/w/wiki/1952.dell-client-configuration-toolkit-cctk.aspx
Tree:
DATA_CLIENT ├ setup.ins └ bin ├ cctk.exe ├ mxml1.dll ├ pci.ids └ HAPI ├ dcdbas32.cat . . . └ omsacntl.exe OPSI └ control
This package can read and set some Dell BIOS Values
Supported Values:
Password
wake on LAN
control wlan radio
control wwan radio
num lock
Simple installation of this package makes an audit of
currently set BIOS Values and reports the state back
into the opsi package properties (it also reports if this
BIOS property is available on the specific computer hardware)
To set BIOS values the _set_bios property must be true.
To set the bios password use the password new property
if the password is set correctly this value gets cleared
and the new password is automatically entered into the
password property field.
if the Value in the password field is wrong (or the BIOS
password is set but not properly configured in the
opsi Package) -–password required–- or -–password wrong–-
will be reported in this field.
Install the Dell CCTK on a development Computer and copy the
%Programfiles%\Dell\CCTK\x86 or %Programfiles%\Dell\CCTK\x64
into the DATA_CLIENT bin folder
[Initial] ExitOnError=true StayOnTop = true [Actions] requiredWinstVersion >= "4.10.5" DefVar $ReportProperty$ DefVar $ReportValue$ DefVar $CommandValue$ DefStringList $CommandResult$ DefVar $CommandResultValue$ DefVar $SetBios$ DefVar $PwdNew$ DefVar $PwdBIOS$ DefVar $PwrMgmtWOL$ DefVar $PwrMgmtConrolWLAN$ DefVar $PwrMgmtConrolWWAN$ DefVar $PostBehaviorNumLock$ set $SetBios$ =GetProductProperty("_set_bios", "no") set $PwdNew$ =GetProductProperty("password_new", " ") set $PwdBIOS$ =GetProductProperty("password", " ") set $PwrMgmtWOL$ =GetProductProperty("pwr-management_wake-on-lan", " ") set $PwrMgmtConrolWLAN$ =GetProductProperty("pwr-management_control-wlan-radio", " ") set $PwrMgmtConrolWWAN$ =GetProductProperty("pwr-management_control-wwan-radio", " ") set $PostBehaviorNumLock$ =GetProductProperty("post-behavior_num-lock", " ") ; Install the BIOS comunication driver DosInAnIcon_HAPIInstall ;if password is one of the reported Values from password state set it blank if ($PwdBIOS$="--password required--") set $PwdBIOS$=" " endif if ($PwdBIOS$="--password wrong--") set $PwdBIOS$=" " endif ;Get Password State set $CommandValue$ = '--numlock' set $CommandResult$ = getOutStreamFromSection('DosInAnIcon_BiosQuery') set $CommandResultValue$ = getValue ("numlock",$CommandResult$) if (getLastExitCode = "0") ;toggle Value to get the errorcode if ($CommandResultValue$="on") set $CommandValue$ = '--numlock="off"' DosInAnIcon_BiosCommand set $CommandValue$ = '--numlock="on"' DosInAnIcon_BiosCommand else set $CommandValue$ = '--numlock="on"' DosInAnIcon_BiosCommand set $CommandValue$ = '--numlock="off"' DosInAnIcon_BiosCommand endif set $ReportProperty$ ="password" if (getLastExitCode = "191") ; 191 password required set $ReportValue$ ="--password required--" opsiServiceCall_configState_Report endif if (getLastExitCode = "157") ; 157 password wrong set $ReportValue$ ="--password wrong--" opsiServiceCall_configState_Report endif endif ; Set Password if ($PwdNew$="--clear--") set $CommandValue$ = '--setuppwd=" "' DosInAnIcon_BiosCommand if (getLastExitCode = "0") set $ReportProperty$ ="password" set $ReportValue$ =" " opsiServiceCall_configState_Report set $ReportProperty$ ="password_new" set $ReportValue$ =" " opsiServiceCall_configState_Report else set $ReportProperty$ ="password_new" set $ReportValue$ =" " opsiServiceCall_configState_Report endif else if (not ($PwdNew$=" ")) set $CommandValue$ = '--setuppwd="$PwdNew$"' DosInAnIcon_BiosCommand if (getLastExitCode = "0") set $ReportProperty$ ="password" set $ReportValue$ =$PwdNew$ opsiServiceCall_configState_Report set $ReportProperty$ ="password_new" set $ReportValue$ =" " opsiServiceCall_configState_Report set $PwdBIOS$=$PwdNew$ set $PwdNew$="" else set $ReportProperty$ ="password_new" set $ReportValue$ =" " opsiServiceCall_configState_Report endif endif endif if ($SetBios$="yes") ;Set Value ;wake on LAN if ($PwrMgmtWOL$="enable") set $CommandValue$ = '--wakeonlan="enable"' DosInAnIcon_BiosCommand endif if ($PwrMgmtWOL$="disable") set $CommandValue$ = '--wakeonlan="disable"' DosInAnIcon_BiosCommand endif if ($PwrMgmtWOL$="addincard") set $CommandValue$ = '--wakeonlan="addincard"' DosInAnIcon_BiosCommand endif if ($PwrMgmtWOL$="onboard") set $CommandValue$ = '--wakeonlan="onboard"' DosInAnIcon_BiosCommand endif if ($PwrMgmtWOL$="enablewakeonwlan") set $CommandValue$ = '--wakeonlan="enablewakeonwlan"' DosInAnIcon_BiosCommand endif if ($PwrMgmtWOL$="lanorwlan") set $CommandValue$ = '--wakeonlan="lanorwlan"' DosInAnIcon_BiosCommand endif if ($PwrMgmtWOL$="lanwithpxeboot") set $CommandValue$ = '--wakeonlan="lanwithpxeboot"' DosInAnIcon_BiosCommand endif ;Control WLAN Radio if ($PwrMgmtConrolWLAN$="yes") set $CommandValue$ = '--controlwlanradio="enable"' DosInAnIcon_BiosCommand endif if ($PwrMgmtConrolWLAN$="no") set $CommandValue$ = '--controlwlanradio="disable"' DosInAnIcon_BiosCommand endif ;Control WWAN Radio if ($PwrMgmtConrolWWAN$="yes") set $CommandValue$ = '--controlwwanradio="enable"' DosInAnIcon_BiosCommand endif if ($PwrMgmtConrolWWAN$="no") set $CommandValue$ = '--controlwwanradio="disable"' DosInAnIcon_BiosCommand endif ;Num lock if ($PostBehaviorNumLock$="on") set $CommandValue$ = '--numlock="on"' DosInAnIcon_BiosCommand endif if ($PostBehaviorNumLock$="off") set $CommandValue$ = '--numlock="off"' DosInAnIcon_BiosCommand endif ;Clear set BIOS flag set $ReportProperty$ ="_set_bios" set $ReportValue$ ="no" opsiServiceCall_configState_Report endif ;Report ;wake on LAN set $CommandValue$ = '--wakeonlan' set $CommandResult$ = getOutStreamFromSection('DosInAnIcon_BiosQuery') set $CommandResultValue$ = getValue ("wakeonlan",$CommandResult$) set $ReportProperty$ ="pwr-management_wake-on-lan" if (not (getLastExitCode = "0")) ;An Error occured do some Errorhandling if (getLastExitCode = "119") ; 119 means funktion not supported by this Computer set $ReportValue$ ="-- not supported --" opsiServiceCall_configState_Report endif else ;No Error occured so report Value if ($CommandResultValue$="enable") set $ReportValue$ ="enable" opsiServiceCall_configState_Report endif if ($CommandResultValue$="disable") set $ReportValue$ ="disable" opsiServiceCall_configState_Report endif if ($CommandResultValue$="addincard") set $ReportValue$ ="addincard" opsiServiceCall_configState_Report endif if ($CommandResultValue$="onboard") set $ReportValue$ ="onboard" opsiServiceCall_configState_Report endif if ($CommandResultValue$="enablewakeonwlan") set $ReportValue$ ="enablewakeonwlan" opsiServiceCall_configState_Report endif if ($CommandResultValue$="lanorwlan") set $ReportValue$ ="lanorwlan" opsiServiceCall_configState_Report endif if ($CommandResultValue$="lanwithpxeboot") set $ReportValue$ ="lanwithpxeboot" opsiServiceCall_configState_Report endif endif ;Control WLAN Radio set $CommandValue$ = '--controlwlanradio' set $CommandResult$ = getOutStreamFromSection('DosInAnIcon_BiosQuery') set $CommandResultValue$ = getValue ("controlwlanradio",$CommandResult$) set $ReportProperty$ ="pwr-management_control-wlan-radio" if (not (getLastExitCode = "0")) ;An Error occured do some Errorhandling if (getLastExitCode = "119") ; 119 means funktion not supported by this Computer set $ReportValue$ ="-- not supported --" opsiServiceCall_configState_Report endif else ;No Error occured so report Value if ($CommandResultValue$="enable") set $ReportValue$ ="yes" opsiServiceCall_configState_Report endif if ($CommandResultValue$="disable") set $ReportValue$ ="no" opsiServiceCall_configState_Report endif endif ;Control WWAN Radio set $CommandValue$ = '--controlwwanradio' set $CommandResult$ = getOutStreamFromSection('DosInAnIcon_BiosQuery') set $CommandResultValue$ = getValue ("controlwwanradio",$CommandResult$) set $ReportProperty$ ="pwr-management_control-wwan-radio" if (not (getLastExitCode = "0")) ;An Error occured do some Errorhandling if (getLastExitCode = "119") ; 119 means funktion not supported by this Computer set $ReportValue$ ="-- not supported --" opsiServiceCall_configState_Report endif else ;No Error occured so report Value if ($CommandResultValue$="enable") set $ReportValue$ ="yes" opsiServiceCall_configState_Report endif if ($CommandResultValue$="disable") set $ReportValue$ ="no" opsiServiceCall_configState_Report endif endif ;Num Lock set $CommandValue$ = '--numlock' set $CommandResult$ = getOutStreamFromSection('DosInAnIcon_BiosQuery') set $CommandResultValue$ = getValue ("numlock",$CommandResult$) set $ReportProperty$ ="post-behavior_num-lock" if (not (getLastExitCode = "0")) ;An Error occured do some Errorhandling if (getLastExitCode = "119") ; 119 means funktion not supported by this Computer set $ReportValue$ ="-- not supported --" opsiServiceCall_configState_Report endif else ;No Error occured so report Value if ($CommandResultValue$="on") set $ReportValue$ ="on" opsiServiceCall_configState_Report endif if ($CommandResultValue$="off") set $ReportValue$ ="off" opsiServiceCall_configState_Report endif endif ; Uninstall the BIOS comunication driver DosInAnIcon_HAPIUninstall [Sub_configState_Report] markErrorNumber opsiServiceCall_configState_Report if errorsOccuredSinceMark > 0 isFatalError endif set $ReportProperty$ ="" set $ReportValue$ ="" [opsiServiceCall_configState_Report] "method": "setProductProperty" "params": [ "$ProductID$", "$ReportProperty$", "$ReportValue$", "%hostid%" ] [DosInAnIcon_BiosCommand] @echo off if "$PwdBIOS$"==" " %ScriptPath%\bin\cctk $CommandValue$ if not "$PwdBIOS$"==" " %ScriptPath%\bin\cctk --valsetuppwd="$PwdBIOS$" $CommandValue$ exit %ERRORLEVEL% [DosInAnIcon_BiosQuery] @echo off %ScriptPath%\bin\cctk $CommandValue$ exit %ERRORLEVEL% [DosInAnIcon_HAPIInstall] "%ScriptPath%\bin\hapi\hapint.exe" -i -k C-C-T-K -p "hapint.exe" -q [DosInAnIcon_HAPIUninstall] "%ScriptPath%\bin\hapi\hapint.exe" -r -k C-C-T-K -q
[Package] version: 1 depends: incremental: False [Product] type: localboot id: dellbios name: DellBIOS description: Managen von Dell Bioseinstellungen advice: version: 1.0 priority: 0 licenseRequired: False productClasses: setupScript: install.ins uninstallScript: updateScript: alwaysScript: onceScript: customScript: userLoginScript: [ProductProperty] type: unicode name: _set_bios multivalue: False editable: False description: Set Bios Values values: ["no", "yes"] default: ["no"] [ProductProperty] type: unicode name: password multivalue: False editable: True description: Bios Password default: [" "] [ProductProperty] type: unicode name: password_new multivalue: False editable: True description: Set new Password values: ["--clear--", "bios"] [ProductProperty] type: unicode name: pwr-management_wake-on-lan multivalue: False editable: False description: enable wake on LAN values: [" ", "addincard", "disable", "enable", "enablewakeonwlan", "lanorwlan", "lanwithpxeboot", "onboard"] default: [" "] [ProductProperty] type: unicode name: pwr-management_control-wlan-radio multivalue: False editable: False description: disable WLAN when LAN is active values: [" ", "no", "yes"] default: [" "] [ProductProperty] type: unicode name: pwr-management_control-wwan-radio multivalue: False editable: False description: disable WWAN (GSM, UMTS,...) when LAN is active values: [" ", "no", "yes"] default: [" "] [ProductProperty] type: unicode name: post-behavior_num-lock multivalue: False editable: False description: Numlock on system start values: [" ", "off", "on"] default: [" "] [Changelog] dellbios (1.0-1) testing; urgency=low * Initial package -- HL <> Mon, 04 Jan 2014 15:45:19 +0000
Da ich nicht gesehen habe das es so eine Art Script schon im WIKI gibt, habe ich ein eigenes geschrieben. Allerdings mit anderen Optionen. Das Script ist in der Lage folgende BIOS Einstellungen vorzunehmen.
Weitere Einstellungen baue ich auf Wunsch mit aufgenommen (Anfrage per Private Message im Forum an Tobias).
Verfügbare Einstellungen: http://www.dell.com/support/manuals/us/en/04/Topic/dell-cmnd-config-v3.1/DCC_CLI-v4/en-us/GUID-F4D70CEF-44A6-4693-BBE3-D40DAABCCD2B
Tree:
├── CLIENT_DATA │ ├── cctkerrorcodes.txt │ ├── custom │ ├── files │ │ ├── x86 │ │ │ ├── cctk.exe │ │ │ ├── cctk_x86_winpe_10.bat │ │ │ ├── cctk_x86_WinPE_3.bat │ │ │ ├── cctk_x86_winpe_4.bat │ │ │ ├── cctk_x86_winpe_5.bat │ │ │ ├── cctk_x86_WinPE.bat │ │ │ ├── HAPI │ │ │ │ ├── dcdbas32.cat │ │ │ │ ├── dcdbas32.inf │ │ │ │ ├── dcdbas32.sys │ │ │ │ ├── dcdesm32.sys │ │ │ │ ├── dcdipm32.sys │ │ │ │ ├── dcdtvm32.sys │ │ │ │ ├── dcesm.sys │ │ │ │ ├── dcesmwdm.sys │ │ │ │ ├── dchapi32.dll │ │ │ │ ├── dchbas32.dll │ │ │ │ ├── dchcfg32.exe │ │ │ │ ├── dchcfl32.dll │ │ │ │ ├── dchesm32.dll │ │ │ │ ├── dchipm32.dll │ │ │ │ ├── dchtst32.exe │ │ │ │ ├── dchtvm32.dll │ │ │ │ ├── dciwds32.exe │ │ │ │ ├── dcmdev32.exe │ │ │ │ ├── dcwipm32.dll │ │ │ │ ├── HAPIInstall.bat │ │ │ │ ├── hapint.exe │ │ │ │ ├── HAPIUninstall.bat │ │ │ │ └── omsacntl.exe │ │ │ ├── mxml1.dll │ │ │ └── pci.ids │ │ └── X86_64 │ │ ├── cctk.exe │ │ ├── cctk_x86_64_winpe_10.bat │ │ ├── cctk_x86_64_WinPE_3.bat │ │ ├── cctk_x86_64_winpe_4.bat │ │ ├── cctk_x86_64_winpe_5.bat │ │ ├── cctk_x86_64_winpe.bat │ │ ├── HAPI │ │ │ ├── dcdbas32.cat │ │ │ ├── dcdbas32.inf │ │ │ ├── dcdbas32.sys │ │ │ ├── dcdbas64.cat │ │ │ ├── dcdbas64.inf │ │ │ ├── dcdbas64.sys │ │ │ ├── dcdipm64.sys │ │ │ ├── dchapi32.dll │ │ │ ├── dchapi64.dll │ │ │ ├── dchbas32.dll │ │ │ ├── dchbas64.dll │ │ │ ├── dchcfg32.exe │ │ │ ├── dchcfg64.exe │ │ │ ├── dchcfl32.dll │ │ │ ├── dchcfl64.dll │ │ │ ├── dchesm32.dll │ │ │ ├── dchipm32.dll │ │ │ ├── dchipm64.dll │ │ │ ├── dchtst32.exe │ │ │ ├── dchtst64.exe │ │ │ ├── dchtvm32.dll │ │ │ ├── dciwds32.exe │ │ │ ├── dcmdev32.exe │ │ │ ├── dcmdev64.exe │ │ │ ├── dcwipm32.dll │ │ │ ├── HAPIInstall.bat │ │ │ ├── hapint64.exe │ │ │ ├── hapint.exe │ │ │ ├── HAPIUninstall.bat │ │ │ └── omsacntl.exe │ │ ├── mxml1.dll │ │ └── pci.ids │ ├── setup3264.opsiscript
[ACTIONS] SetLogLevel = 6 DefVar $INST_SystemType$ DefVar $INST_architecture$ DefVar $ExitCode$ DefStringList $ErrorCodesList$ set $ErrorCodesList$ = loadTextFile ('%scriptpath%\cctkerrorcodes.txt') DefStringList $ErrorCodeString$ DefVar $ErrorCode$ DefVar $ErrorCodeDescription$ Set $INST_SystemType$ = GetSystemType DefVar $RebootWanted$ Set $RebootWanted$ = GetProductProperty("10_RebootWanted", "false") DefVar $SetHDDPassword$ Set $SetHDDPassword$ = GetProductProperty("1_Set_HDDPassword", "false") Defvar $HDDPWDOptions$ DefVar $HDDPassword$ Set $HDDPassword$ = GetProductProperty("1_HDD_Password", "XXXX") DefVar $currentHDDPassword$ Set $currentHDDPassword$ = GetProductProperty("1_current_HDD_Password", "XXXX") DefVar $SetBIOSPassword$ Set $SetBIOSPassword$ = GetProductProperty("2_Set_BIOSPassword", "true") DefVar $BIOSPWDOptions$ DefVar $BIOSPassword$ Set $BIOSPassword$ = GetProductProperty("2_BIOS_Password", "XXXX") DefVar $CurrentBIOSPassword$ Set $CurrentBIOSPassword$ = GetProductProperty("2_current_BIOS_Password", "XXXX") DefVar $SetWOL$ Set $SetWOL$ = GetProductProperty("3_Set_WOL", "true") DefVar $WOL$ Set $WOL$ = GetProductProperty("3_WOL", "enable") DefVar $Change_HDDPassword$ ; ---------------------------------------------------------------- ; - 64Bit - ; ---------------------------------------------------------------- if $INST_SystemType$ = "64 Bit System" if $SetHDDPassword$ = "True" if NOT ($CurrentHDDPassword$ = " ") set $HDDPWDOptions$ = "--hddpwd=$HDDPassword$ --valhddpwd=$CurrentHDDPassword$" else set $HDDPWDOptions$ = "--hddpwd=$HDDPassword$" endif Winbatch_BIOS_Config_HDDPWD_x64 set $exitcode$ = getLastExitcode for %s% in $ErrorCodesList$ do Sub_Check_Exitcode opsiServiceCall_report_new_HDD_password endif if $SetBIOSPassword$ = "True" if NOT ($CurrentHDDPassword$ = " ") set $BIOSPWDOptions$ = "--setuppwd=$BIOSPassword$ --valsetuppwd=$CurrentBIOSPassword$" else set $BIOSPWDOptions$ = "--setuppwd=$BIOSPassword$" endif Winbatch_BIOS_Config_BIOSPWD_x64 set $exitcode$ = getLastExitcode for %s% in $ErrorCodesList$ do Sub_Check_Exitcode opsiServiceCall_report_new_BIOS_password endif if $SetWOL$ = "True" Winbatch_BIOS_Config_WOL_x64 set $exitcode$ = getLastExitcode for %s% in $ErrorCodesList$ do Sub_Check_Exitcode endif endif ; ---------------------------------------------------------------- ; - 32Bit - ; ---------------------------------------------------------------- if $INST_SystemType$ = "x86 System" if $SetHDDPassword$ = "True" Winbatch_BIOS_Config_HDDPWD_x64 set $exitcode$ = getLastExitcode for %s% in $ErrorCodesList$ do Sub_Check_Exitcode opsiServiceCall_report_new_HDD_password endif if $SetBIOSPassword$ = "True" Winbatch_BIOS_Config_BIOSPWD_x64 set $exitcode$ = getLastExitcode for %s% in $ErrorCodesList$ do Sub_Check_Exitcode opsiServiceCall_report_new_BIOS_password endif if $SetWOL$ = "True" Winbatch_BIOS_Config_WOL_x64 set $exitcode$ = getLastExitcode for %s% in $ErrorCodesList$ do Sub_Check_Exitcode endif endif if $RebootWanted$ = "True" ExitWindows /Reboot endif [Winbatch_BIOS_Config_HDDPWD_x64] %scriptpath%\files\x86_64\cctk.exe $HDDPWDOptions$ [Winbatch_BIOS_Config_BIOSPWD_x64] %scriptpath%\files\x86_64\cctk.exe $BIOSPWDOptions$ [Winbatch_BIOS_Config_WOL_x64] %scriptpath%\files\x86_64\cctk.exe --wakeonlan=$WOL$ --valsetuppwd=$CurrentBIOSPassword$ [opsiServiceCall_report_new_BIOS_password] "method": "setProductProperty" "params": [ "dfn_dellbiosconfig", "2_current_BIOS_Password", "$BIOSPassword$", "%hostid%" ] [opsiServiceCall_report_new_HDD_password] "method": "setProductProperty" "params": [ "dfn_dellbiosconfig", "1_current_HDD_Password", "$HDDPassword$", "%hostid%" ] [Sub_Check_Exitcode] SetLogLevel = 5 if takeString(0, splitString ("%s%", ".")) = $ExitCode$ if not ($ExitCode$ = "0") LogError takeString(1, splitString ("%s%", ".")) +" (ExitCode " +$ExitCode$+" )" isFatalError $ExitCode$ else message "BIOS Command was Successful" EndIf endif