# How to Cooks are in yaml format, and have this structure. First: Name, a line like below, with the name "name: My Super Cook" Then, the revision number, when this number changes, cook will be reapplied "revision: 1" If the cook has to run everytime client is called (And not only one time per new revision), you have to add: "runever: 1" (1-> Everytime, if you change to 0 or delete, it will not do it) If the cook has to run when no user is logued in, add: "atstartup: 1" Be aware that for be able to use this, in task scheduler (Or your favourite method) you have to run client.ps1 with argument "-startup 1" when no users are logued "only64bit: 1"/"only32bit: 1" only for 64 or 32 bit systems (Maybe for some updates can be used) And then, steps. First a "steps:" line, and then line by line the steps of the cook "steps: - PWCMD|White-Output "Hello World" " Steps are ever put like "Type of step" | "Command" You can put comments in every line putting another "|" and comments at finish, like.. "CMD|WinSCP-5.13.4-Setup.exe /VERYSILENT /NORESTART|Note: Installing WinSCP" Cook finishes executing if they had and error (Except inside a NOERROR block), or if finishes right. You have examples in the example_cooks folder Note: Cooks start in directory $env:temp (%TEMP%) from SYSTEM user. # Commands avaiable (LINUX IS NOT SUPPORTED YET) | OS | COMMAND | Description | |----- |------------- |--------------------------------------------------------------------------------------------------------- | | W | CMD | Cmd command. Beware of quotes, because internally is run as cmd /c "" | | W/L | PWCMD | Powershell command, runs using Invoke-Command | | W/L | REPOTOLOCAL | Copy a file from REPO folder configured to local in temp folder. You can copy a file or a folder. Do not put between "" | | W/L | COPY | Copy a file from copied to local (REPOTOLOCAL) to any destiantion. Ex: COPY|filec.cfg;C:\Program\filec.cfg| | W | INSTALLMSI | Installs an MSI file silently (Params /quiet /norestart are put, do not repeat). You can add parameters (Like INSTALLMSI|superapp.msi ADDLOCAL=extension SETASDEFAULT=1) | | W/L | NOERROR | Creates a block of instructions that not captures errors and continues event if fails
Example:
NOERROR|Try to delete a file that maybe can not exist
PWCMD|Remove-Item C:\Windows\loginstall.txt
ENDNOERROR|Finish | | W/L | ENDNOERROR | Finishes NOERROR Block | | W/L | SERV_ENABLE | Enables a service | | W/L | SERV_DISABLE | Disables a service | | W/L | MSG | Shows a message to user | | W/L | REM / COMMENT | Annotation for developers in cooks | | W/L | KILL_PROCESS | Kills a process | | W/L | UNINSTALL | Uninstalls a software by name. (It finishes using * at Windows 'Get-Package -Name "Program*"', be care) | | W/L | REMOVE | Removes a file or folder path from local compuer. It's recursive | | W/L | SLEEP / PAUSE | Pauses execution seconds specified in param (SLEEP|3) | | W/L | DOWNLOAD * | Downloads a file from network to tempFolder/filename. It's required to put a filename like: DOWNLOAD|http://example.org/file.zip;filename.zip. ";" separates URL and filename | | W/L | EXIT | Terminates cook execution. It can take a param as error text (EXIT|Error at removing file) | | L | BASH | Bash command | - *DOWNLOAD: It seems to be a limit in PowerShell Invoke-WebRequest that limits this downloads to some like 128MB Inside of a Cook, you can use a simple IF query: | OS | COMMAND | Runs if when: | |----- |----------------- |--------------------------------------------------------------------------------- | | W/L | IFSOFTWAREINST | When program is installed. | | W/L | IFSOFTWAREVER | When program is installed and has X version (Name;Version) | | W/L | IFPATHEXISTS | When if file exists | | W/L | IFPWCMD | When powershell command returns True (Beware of command executed if using Linux) | | W/L | IF64BIT | When computer is running a 64 Bit operating system | | W/L | IF32BIT | When computer is running a 32 Bit operating system | | W/L | IFWINDOWS | When computer is running Windows | | W/L | IFCOMPUTERNAME | When computer name is Name | | W/L | IFLINUX | When computer is running Linux | | L | IFBASH | When bash command returns True | | W/L | ELSE | Else of IF... | | W/L | ENDIF | Finishes IF block |