Title | Date | Author | Status |
---|---|---|---|
README |
June 14, 2024 |
dotjesper |
In development |
This repository contains the source code for Windows gecko.
This repository is the evolution of the Windows rhythm functional script. During the progression of the solution I introduced braking changes, and to keep evolving the functionality, I decided to rebrand the solution, now Windows gecko.
According to Wikipedia, geckos are small, mostly carnivorous lizards that have a wide distribution, found on every continent except Antarctica. Geckoes are small in size, can adapt to the surroundings and communicating using clicking sounds in their social interactions.
Geckos are small, adapts to the surroundings and have excellent night vision.
Windows gecko is exactly that, a multifunctional script, small in size, designed to adapt to multiple Windows management environments and using “clicking sounds” to ensure every steps is checked and recorded.
This repository is under development and alive and for the most, kicking - I welcome any feedback or suggestions for improvement. Reach out on Twitter, I read Direct Messages (DMs) and allow them from people I do not follow. For other means of contact, please visit https://dotjesper.com/contact/
Do not hesitate to reach out if issues arise or new functionality and improvement comes to mind.
This is a personal development, please respect the community sharing philosophy and be nice!
Feel free to fork and build.
The goal of Windows gecko is to provide a consistent desired state configuration to end user devices in Windows Autopilot scenarios.
Windows gecko can easily be implemented using more traditionally deployment methods, e.g., Operating System Deployment (OSD), Task Sequences deployment or similar methods utilized.
Windows gecko was created to remove some Windows features from Windows devices, managed by Microsoft Intune, and advanced into a tool to match Windows feature configuration, allowing to disable and enable Windows features. While developing the key features, more requirements emerged, and the ability to baseline Windows In-box App was added, allowing administrators to easily uninstall unwanted apps as part of the initial configuration, e.g., when applying corporate defaults as part of Windows Autopilot scenarios.
More enhancements were added, baseline conditions were asked for, and Windows Service configuration and Windows Registry configuration options were included, and more features have been added and more ideas are cocking.
There are several methods to achieve aWindows desired state configuration baseline and several approaches. Windows gecko is based on the requirement to provide a default configuration baseline, or a desired state configuration, and is not meant to prevent the end user from installing a previously uninstalled app, or bypass a desired setting, only to allow device administrators to provide a default baseline, or corporate baseline, to the end user as part of aWindows Autopilot scenario.
The mindset of the solution will aim to allow to limit and/or combine the functionalities best suited for the task, meaning if Windows feature configuration were to be applied, this should be possible without the Windows Registry configuration. Also, especially important, is to be able to apply Windows baselines configuration in one or more packages in either system or user context, without changing the code – which is why all configurations are possible using configuration files (json). This will help ensure minimal effort to create a new Windows desired state configuration, which is easily done without any code changes or re-signing the code.
- WindowsApps: Remove Windows In-box Apps and Store Apps.
- WindowsBranding: Configure OEM information and Registration (PREVIEW)
- WindowsFeatures
- Enable and/or disable Windows features.
- Enable and/or disable Windows optional features.
- WindowsGroups: Add accounts to local groups (Coming soon).
- WindowsFiles: Copy file(s) to device from payload package.
- WindowsRegistry: Modifying Windows registry entries (add, change and remove).
- WindowsRun: Run local executables and/or download and run executables.
- WindowsServices: Configure/re-configure Windows Services.
- WindowsTCR: Windows Time zone, Culture and Regional settings manager (PREVIEW).
Windows gecko is developed and tested for Windows 10 22H2 Pro and Enterprise 64-bit and newer and require PowerShell 5.1.
NOTE Applying Windows desired state configuration, Windows gecko should be configured to run in either SYSTEM or USER context. Applying device Baseline in SYSTEM context, will be required to run with local administrative rights (Local administrator or System). Combining device Baseline across SYSTEM and USER is highly unadvisable and might cause undesired results.
├── assets
│ ├─ LayoutModification-W10.xml
│ ├─ LayoutModification-W11.xml
│ ├─ windowsTCR.json
├── samples
│ ├─ baselineAppsC.json
│ ├─ baselineFeaturesC.json
│ ├─ baselineFileCopy.json
│ ├─ baselineFileExcute.json
│ ├─ baselineFileExplorerSettingsU.json
│ ├─ baselineFileOpenBehaviorC.json
│ ├─ baselineOfficeSettingsC.json
│ ├─ baselineOfficeSettingsU.json
│ ├─ baselineOptional_RSAT_FeaturesC.json
│ ├─ baselineServicesC.json
│ ├─ baselineSettingsC.json
│ ├─ baselineSettingsU.json
│ ├─ baselineWindowsTCR.json
├─ solution
│ ├─ assets.zip
│ ├─ configC.json
│ ├─ configU.json
│ ├─ gecko.png
│ ├─ gecko.ps1
Windows gecko require a configuration file to work. The configuration file should be a valid json file, and the encoding should be UTF-8. The benefit using external configuration files, makes the solution more versatile and you can code sign the script once, and reuse the script for multiply deployment/tasks.
I highly recommend code signing any script used in a deployment scenario.
-configFile
Type: String
Start Windows gecko with the defined configuration file to be used for the task. If no configuration file is defined, the script will look for .\config.json. If the configuration is not found or invalid, the script will exit.
-CID
Type: string
Windows Time zone, culture and regional settings value, allowing configuring culture, homelocation, and timezone from configuration file.
CID Value must match windowsTCR.configuration.[CID], e.g. "da-DK", "565652" or similar. See sample files for examples.
-logFile
Type: String
Start Windows gecko logging to the desired logfile. If no log file is defined, the script will default to Windows gecko log file within %ProgramData%\Microsoft\IntuneManagementExtension\Logs\ folder.
-exitOnError
Type: Switch
If an error occurs, exitOnError control if the script should exit-on-error. Default value is $false.
-uninstall
Type: Switch
Future parameter for use in Micrsoft Intune package deployment scenarios. Default value is $false.
-Verbose
Displays detailed information about the operation performed by Windows gecko. Without the -Verbose parameter, the script will run completely silent and will write output to the log file only.
.\gecko.ps1 -Verbose
.\gecko.ps1 -configFile ".\configC.json" -Verbose
.\gecko.ps1 -configFile ".\configU.json" -logFile ".\logfile.log"
.\gecko.ps1 -configFile ".\usercfg.json" -logFile ".\logfile.log" -CID "da-DK"
powershell.exe -NoLogo -ExecutionPolicy "Bypass" -File ".\gecko.ps1" -configFile ".\configC.json"
This is not an official repository, and is not affiliated with Microsoft, the Windows gecko repository is not affiliated with or endorsed by Microsoft. The names of actual companies and products mentioned herein may be the trademarks of their respective owners. All trademarks are the property of their respective companies.
Windows gecko is licensed under the MIT license.
The information and data of this repository and its contents are subject to change at any time without notice to you. This repository and its contents are provided AS IS without warranty of any kind and should not be interpreted as an offer or commitment on the part of the author(s). The descriptions are intended as brief highlights to aid understanding, rather than as thorough coverage.
See the project Wiki page for full change log information.
--Jesper