Commit Graph

803 Commits

Author SHA1 Message Date
rbalsleyMSFT eb3212ee2d Updates to the UI 2025-05-26 11:32:35 -07:00
rbalsleyMSFT e209251d0b More driver work 2025-05-26 11:32:35 -07:00
rbalsleyMSFT e73fa2d7f9 More driver work 2025-05-26 11:32:35 -07:00
rbalsleyMSFT 8c0ed525b3 Modified the drivers tab 2025-05-26 11:32:35 -07:00
rbalsleyMSFT 31e66c7213 Updated UI 2025-05-26 11:32:34 -07:00
rbalsleyMSFT b3e76f5580 Broke out the xaml to a separate file. Added drivers tab 2025-05-26 11:30:11 -07:00
rbalsleyMSFT f217a819fe First iteration of UI 2025-05-26 11:30:11 -07:00
rbalsleyMSFT 6a784a14fa Merge pull request #167 from rbalsleyMSFT/main
Merge back in changelog.md to be consistent with main
2025-05-21 17:39:09 -07:00
rbalsleyMSFT d809fc021f Updated changelog.md v2505.1 2025-05-21 17:29:12 -07:00
rbalsleyMSFT 582df6e3a8 Merge pull request #165 from rbalsleyMSFT/dev
2505.1
2025-05-21 17:26:25 -07:00
rbalsleyMSFT d5a4f96482 Enhance FFU Development Scripts and Configuration
BuildFFUVM.ps1
- Added parameter definitions that were missing:
  - AppListPath - Path to a JSON file containing a list of applications to install using WinGet. Default is $FFUDevelopmentPath\Apps\AppList.json.
  - PEDriversFolder - Path to the folder containing drivers to be injected into the WinPE deployment media. Default is $FFUDevelopmentPath\PEDrivers.
- Added two new parameters:
  - UpdateLatestMicrocode - This is used for Windows 10/Server. When set to $true, will download and install the latest microcode updates for applicable Windows releases (e.g., Windows Server 2016/2019, Windows 10 LTSC 2016/2019) into the FFU. Default is $false.
  - UpdateADK - Added for airgapped scenarios where you've manually updated the ADK and don't need it to continually check. When set to $true, the script will check for and install the latest Windows ADK and WinPE add-on if they are not already installed or up-to-date. Default is $true.
- Reorganized the WindowsSKU validateset to make it easier to read and added in 2016 LTSB releases
- Changed version to 2505.1
- Reorganized the releasetoMapping SKUs to make it easier to read
- Omitted Defender/Edge from reporting KB ID since neither includes it
- Updated Save-KB with some enhancements from the UI branch which will handle KBs that don't have an architecture defined in their file name that will leverage a new function Get-PEArchitecture that can interrogate the file name and determine the correct architecture
- Updated Get-ShortenedWindowsSKU with LTSB/LTSC SKUs
- Updated New-FFUFileName to use $winverinfo.Name for $WindowsRelease for client OSes to which will set $WindowsRelease to using Win10 or Win11. This fixes a bug where you might see 10 or 11 instead of Win10 or Win11 for FFU builds that use only the VHDX (e.g. `-InstallApps $false`. This keeps the naming consistent with FFUs built via VM.
- Updated Get-WindowsVersionInfo to fix an issue with naming LTSC 2019
- Added Get-PEArchitecture function
- Commented out the Windows Security Platform Update code since the URL is dead for the content. This is fixed in the UI branch and will be reintroduced in Dev and Main at a later date when the UI work is complete.
- Created a new variable `$isLTSC`
- Modified and reorganized the search strings for the various .net framework components. LTSC introduced some complexity with handling the various .net releases.
- VHDXCaching will now recurse the KBPath folder when finding downloaded KBs to include in its config file

Sample_default.json
- Added new/missing parameters
  - ApplistPath
  - UpdateADK
  - UpdateLatestMicrocode

CaptureFFU.ps1
- `$WindowsVersion` 2016 and 2019 for LTSC releases
- Changed some SKU spacing to make things more consistent and included Enterprise N LTSC

ApplyFFU.ps1
- Updated version to 2505.1
2025-05-21 16:44:21 -07:00
rbalsleyMSFT d2fc9cf558 Merge pull request #116 from zehadialam/win-ltsc
Support for Windows LTSC
2025-05-19 11:04:51 -07:00
Zehadi Alam b530ac5a5c Added comment for .NET updates and added condition in CaptureFFU.ps1 to fix naming for LTSC 2019 2025-05-18 22:06:40 -04:00
Zehadi Alam 2659336ee9 Move .NET folder creation code 2025-05-16 00:26:06 -04:00
Zehadi Alam c32a09bfc1 Add .NET update support for Windows LTSC 2025-05-16 00:11:50 -04:00
Zehadi Alam f7ff415374 Merge branch 'dev' into win-ltsc 2025-05-15 11:55:02 -04:00
rbalsleyMSFT 9cac674d7b Marged in changes to Add-WindowsPackage that were missing 2025-05-15 08:38:01 -07:00
Zehadi Alam 2cf7da9c91 Merge branch 'dev' into win-ltsc 2025-05-15 11:02:18 -04:00
rbalsleyMSFT 0d1d3a1ed5 Fix issue with checkpoint CUs and May 2025-05B CU. Should future proof new checkpoint CUs in the future. 2025-05-14 19:59:04 -07:00
rbalsleyMSFT 7e2ebe8013 Merge pull request #150 from JonasKloseBW/2412.3-Set-Computer-Name-through-SerialNumber-List
2412.3 set computer name through serial number list
2025-02-27 10:04:08 -08:00
JonasKloseBW 0606a1278c Update ApplyFFU.ps1
- Allows setting the computer name with a predefined list (SerialComputerNames.csv) of serial numbers and matching computer names
- Defaults to FFU-{Random} if no matching serial number is found in list so FFU deployment can continue without user input
2025-02-27 18:37:29 +01:00
rbalsleyMSFT 7c9f24f695 Fixed issues
- Fixed an issue where if AppsScriptVariables was configured in a config file, the hashtable wasn't being created by the script when setting the variable.
- Fixed a crash where shortening the Windows SKU was creating duplicate shortened names for certain SKUs.
2025-01-16 18:00:08 -08:00
rbalsleyMSFT 227fb4fa94 Merge pull request #129 from JonasKloseBW/2412.3-Add-AppList-Parameter
Add $AppListPath parameter
2025-01-13 09:06:37 -08:00
JonasKloseBW 77ef154941 Add $AppListPath parameter
- Add $AppListPath parameter
- Set default value to "$AppsPath\AppList.json"
- Modify Get-Apps call to use the $AppListPath parameter
2025-01-13 12:51:32 +01:00
rbalsleyMSFT a00aa3ee02 Merge pull request #123 from rbalsleyMSFT/main
2412.3
2025-01-10 13:51:21 -08:00
rbalsleyMSFT 7b6b5efd8d Merge branch 'main' of https://github.com/rbalsleyMSFT/FFU v2412.3 2025-01-10 13:50:03 -08:00
rbalsleyMSFT db62e05275 Bug fixes
- Fixed an issue with WinPE Drivers not being added to Deployment media
- Fixed an issue where Windows SKUs that include spaces in their names (e.g. Pro Education) and `$InstallApps $false`, FFU creation would fail due to the name including a space. Added a new function `Get-ShortenedWindowsSKU` to truncate the SKU for FFU name creation purposes. This required various changes throughout the script that relied on the Windows SKU for naming.
- Updated version 2412.3
2025-01-10 13:50:00 -08:00
rbalsleyMSFT 3db66eb55b Merge pull request #119 from HedgeComp/HP-Versions-Fix
Fix HP Driver Windows Version case sensitivity
v2412.2
2025-01-08 12:08:04 -08:00
HedgeComp 4709177bc3 Fix HP Driver Windows Version case sensitivity 2025-01-08 13:16:08 -05:00
Zehadi Alam e25a890946 Remove extra lines 2024-12-28 20:30:03 -05:00
Zehadi Alam bc4a181182 Add support for LTSC versions of Windows 2024-12-28 20:01:01 -05:00
rbalsleyMSFT ce7af09f25 Update README.md 2024-12-20 13:03:14 -08:00
rbalsleyMSFT e3da438225 Update README.md 2024-12-20 13:02:20 -08:00
rbalsleyMSFT edbb7ccabe Update ChangeLog.md 2024-12-20 13:01:50 -08:00
rbalsleyMSFT f4360b34d9 Merge pull request #113 from rbalsleyMSFT/2410.1
2412.1
v2412.1
2024-12-20 12:42:44 -08:00
rbalsleyMSFT 0ed0cf4aa2 Changed ApplyFFU version to 2412.1 2024-12-19 17:09:06 -08:00
rbalsleyMSFT 61fc2198c9 Updated docs and update parameter descriptions in BuildFFUVM.ps1 2024-12-19 16:52:52 -08:00
rbalsleyMSFT f45f5a899b Added parameter description for ExportConfigFile 2024-12-19 15:47:10 -08:00
rbalsleyMSFT 37f6dce344 Changes
- Updated parameter definition block to be alphabetized (not to be confused by the param block, which is not alphabetized)
- Added $PEDriversFolder script variable to the param block (for some reason it was missing)
- Added ConfigFile and ExportConfigFile parameters to support json config files
- Changed Version to 2412.1
- Modified vhdxCacheItem class to include $LogicalSectorSizeBytes
- Added new function Get-Parameters to help with new config and export config file functionality
- Fixed Get-MicrosoftDrivers function to not require the HTMLFILE COM object, which isn't available in Windows 11. It seems to be installed with Office, which is what was allowing downloads to work and masked the issue.
- Added long path support to prevent issues with oscdimg creating the Apps.iso.
- Fixed an issue where the $PEDriversFolder variable wasn't being used (instead $FFUDevelopment\PEDrivers was used)
- Created a new function New-FFUFileName - this works in conjunction with the new $CustomFFUNameTemplate. The function was needed to support both scenarios where $InstallApps is either $true or $false.
- Added new function Export-ConfigFile. When passing -ExportConfigFile 'Path\To\ConfigFile.json' the script will generate a parameter dump of all of the configured parameters
- Added driver folder validation to throw an error if spaces are detected in the folder name of the drivers folder (e.g. C:\FFUDevelopment\Drivers\Dell 3190). This is due to an issue with Dell drivers and their inability to handle paths with spaces consistently.
- Added back the Windows Security Platform update which grabs it from the web instead of the Microsoft update catalog
- Fixed an issue where the Drivers folder was being completely deleted instead of its sub-folders
- Removed the Requires -PSEdition Desktop. The script works with both Desktop and Core, so pwsh 7 is fine.
- Created a new config folder to hold config files. A new sample_default.json file is provided to show what the format looks like.
- You can now set the computername in the unattend.xml file whereever you want. Prior it required that the computername was the first component element.
2024-12-18 16:10:35 -08:00
rbalsleyMSFT 10624787fe Fix ODT
- Refactored the Get-ODTURL function to fix recent download issues. Also added some better error handling
- Moved the odtsetup.exe download to the FFUDevelopment folder and will clean it up after office has downloaded
2024-12-10 15:39:49 -08:00
rbalsleyMSFT d7a697d68d Misc Fixes
- Added Get-Childprocesses function to return child processes of parent process
- Added a new -Wait boolean parameter to Invoke-Process function. This is to control whether Invoke-Process should wait in order to track stdout and stderr output. This is needed for processes that may hang, waiting for user input and there isn't a way to bypass (some Intel drivers provided by Dell leave dialog windows even when running silently)
-Invoke-Process now returns process information (returns $cmd). This allows for process tracking when calling the function.
- Since Invoke-Process now returns the process information, also needed to add Out-Null to the majority of the Invoke-Process references to prevent Invoke-Process from writing to the terminal
- Refactored a lot of the Get-DellDrivers function due to inconsistencies with how driver extraction behaves between client and server devices. For client, /s /e seemed to work fine, but for server it would only extract the driver installer content and other dell related files, rather than the driver files themselves. We have since switched to using /s /drivers= which will extract the driver content. Not all drivers support /drivers= and may output some information to the terminal that looks like help documentation. If a driver doesn't support /drivers, the script falls back to using /s /e to do the extraction. If this doesn't work for you, you can always provide your own drivers that you manually download from Dell's website.
- Updated Malicious Software Removal Tool (MSRT) code to handle Windows Server
2024-12-09 14:59:02 -08:00
rbalsleyMSFT 97954f59c3 - Added Windows 2025/24H2 mapping 2024-12-03 16:55:40 -08:00
rbalsleyMSFT 3b23e9f420 Merge pull request #91 from JonasKloseBW:Better-Windows-Server-Patch-Search
2410.1 Find better Windows Server patches
2024-12-03 16:14:17 -08:00
rbalsleyMSFT 94712ecbfc Merge remote-tracking branch 'origin/2410.1' into pr/JonasKloseBW/91 2024-12-03 16:13:26 -08:00
Mike Kelly a2c2b69026 Update USBImagingToolCreator.ps1 2024-12-03 13:43:36 -08:00
rbalsleyMSFT 6abc6f9d1a Fixed an error with removing the office variable when capturing the FFU 2024-12-02 18:34:58 -08:00
rbalsleyMSFT db0fbfaaf4 Refactor CaptureFFU.ps1 to use $WindowsVersion and $WindowsRelease for improved clarity and consistency in FFU naming 2024-12-02 18:11:38 -08:00
JonasKloseBW a59210c559 Update CaptureFFU.ps1
- Add $CustomFFUNameTemplate support in Update CaptureFFU.ps1
2024-12-02 18:11:38 -08:00
JonasKloseBW add11b0037 Update BuildFFUVM.ps1
- Add $CustomFFUNameTemplate and the required code into BuildFFUVM.ps1
2024-12-02 18:11:38 -08:00
HedgeComp c26034a89c Update unattend_arm64.xml 2024-12-02 10:40:18 -08:00