Releases: PSAppDeployToolkit/PSAppDeployToolkit
Releases · PSAppDeployToolkit/PSAppDeployToolkit
3.10.2
Version 3.10.2 [08/13/2024]
- Added support for MARKs in VSCode. #994
- Added Pester Tests for Copy-File, Execute-ProcessAsUser and Set-ActiveSetup
- Fixed an issue with Test-ServiceExists / Get-LoggedOnUser working in a Windows Sandbox. #1031 #1032 #1035
- Fixed an issue with log file rotation and log file permissions when running in user context. #1024 #1029 #1030
- Fixed a number of issues relating to Robocopy in Copy-Files. #868 #1015 #1020 #1021 #1038
- Fixed an issue where the Show-InstallationPrompt dialog would not display when run through MCM / SCCM in interactive mode. #1004 #1016
- Fixed an issue where Execute-ProcessAsUser would throw a terminating error when no user logged on #1027
- Fixed escaping of invalid characters in Block-AppExecution. #1036
- Fixed a number of issues in Set-ActiveSetup / Execute-ProcessAsUser. #1017
- Fixed an issue in French translations. #1019
- Fixed an issue with Get-FileVersion #1007
Full Changelog: 3.10.1...3.10.2
PSAppDeployToolkit 3.10.1
Version 3.10.1 [05/03/2024]
What's Changed
- Added Turkish language support. Fixes #973.
- Added parameter sets to Configure-EdgeExtensions to ensure mandatory parameters are correctly grouped.
- Added missing elements to XML for Finnish language. Fixes #967.
- Added -ExcludeServiceProfiles to Get-UserProfiles, add passthru of Exclude-ServiceProfiles/ExcludeSystemProfiles/ExcludeDefaultUser/ExcludeNTAccount to Copy-FileToUserProfiles & Remove-FileFromUserProfiles.
- Added back the folder structure, changelog, license, and examples to the release zip file.
- Added VLC and WinSCP as new example deployment scripts.
- Added ServiceUI launch helper script and launch testing batch files to examples.
- Added Contributing Guide, Code of Conduct, Security Policy and Support docs.
- Added GitHub form-based Bug Report and Feature Request templates.
- Added RoboCopyParams to Copy-File, which allows full override of Robocopy Parameters. Added /IT /IM to default parameters.
- Changed Welcome Prompt so that the Deferral Time Remaining is now bolded. App Title size was also slightly increased so as to remain more prominent.
- Changed button font so that text wasn't cut off for some localized languages. Fixes #980.
- Changed RunHidden.vbs to get rid of use of ArrayList as it caused problems on some systems.
- Changed Robocopy folder creation code to match native PowerShell Copy-File.
- Changed Execute-ProcessAsUser to include an example for executing the function using "LeastPrivilege".
- Fixed an issue where Execute-ProcessAsUser was not able to execute with RunLevel = 'LeastPrivilege' in some cases.
- Fixed an issue in Execute-ProcessAsUser where the command line for two of the examples was incorrect.
- Fixed an issue with Configure-EdgeExtensions where a new extension would not be added if no extensions were configured previously. Fixes #931 and #984.
- Fixed an issue where Robocopy mode of Copy-File fails to copy files or folders when path begis with "." or "..". Fixes #938.
- Fixed AppDeployToolkitExtensions.ps1 dot-sourcing to where it's always been dot-sourced from.
- Fixed PowerShell v2 and .NET 3.5 Compatibility. Fixes #948.
- Removed check on SecurityHealthSystray. Fixes #941.
- Removed the PDF documentation, the website will be the primary source for this going forward.
- Updated existing example deployment scripts.
- Updated Pull Request template.
- Updated Spanish translations. Fixes #805.
New Contributors
- @Mrman1093 made their first contribution in #927
- @khaffner made their first contribution in #928
Full Changelog: 3.10.0...3.10.1
PSAppDeployToolkit 3.10.0
Version 3.10.0 [03/27/2024]
- Added the ability to configure Microsoft Edge Extensions using ExtensionSettings. Function: Configure-EdgeExtensions. This enables Edge Extensions to be installed and managed like applications, enabling extensions to be pushed to specific devices or users alongside existing GPO/Intune extension policies. This should not be used in conjunction with Edge Management Service which leverages the same registry key to configure Edge extensions.
- Added the ability to copy the Toolkit folder and files to a cache folder on the local machine and execute from there.
- Functions: Copy-ContentToCache and Remove-ContentFromCache. The cache path can be configured in the config.xml file, default is $envProgramData\SoftwareCache. When Copy-ContentToCache is used, $dirFiles is updated to point to the local cache path.
- Added the ability to copy files to all user profiles.
- Functions: Copy-FileToUserProfiles and Remove-FileFromUserProfiles
- Changed Copy-File to use Robocopy by default, overcoming the 260-character limitation of native PowerShell Copy-Item and providing more comprehensive file copy functionality and logging. This can be toggled off in the config.xml file by setting Toolkit_UseRobocopy = $false
- Added Log File Rotation
- Added VSCode workspace with default settings for PowerShell code formatting, default version (Windows PowerShell) and PSScriptAnalyzer linting.
- Added ability to position progress dialogs to 'TopLeft', 'Top', 'TopRight', 'TopCenter', 'BottomLeft', 'Bottom', 'BottomRight'
- Added -Wow6432Node switches for 32-bit registry support to all registry functions.
- Improved all user interface components to work correctly in High DPI mode.
- Improved all images and icons for brand consistency and double the resolution for High DPI mode.
- Improved Get-RunningProcesses function, reducing complexity and improving performance
- Improved Russian (RU) translations PR #843
- Improved German (DE) translations PR #854
- Added translations for many missing strings across a number of different languages. Thanks to ChatGPT for being an XML workhorse :)
- Added shortcut keys for UI buttons - Alt-D for Defer, Alt-P for Close Programs, Alt-C for Continue
- Fixed issue with Execute-MSI adding "Transforms" Parameters to uninstall Command Line #828
- Resolved an issue where ConvertTo-NTAccountOrSID would throw an error when attempting to convert orphaned accounts, a warning is now displayed rather than an error. #865
- Resolved an issue where if WindowStyle parameter is set to 'Hidden', then the UseShellExecute parameter to should be set to '$true' #678
- Resolved an issue with how Set-ActiveSetup comma-separated version strings were compared to determine which was greater #743
- Resolved an issue where $IsMultiSessionOS did not return true for Windows 11 Enterprise Multi-Session #807
- Improved detection of OOBE / ESP
- Improved documentation of Set-ActiveSetup function.
- Resolved an issue where Execute-ProcessAsUser ran into issue when called multiple times because it overwrote files from previous invocation #333
- Resolved an issue where Get-LoggedOnUser choose the wrong user session on Windows multi-session workstation operating systems #863
- Improved Execute-Process with a useful example #835
- Improved Execute-MSI so that all repetitive references to .log or .txt file extension in $LogName variable are all removed #759
- Improved Get-HardwarePlatform to add support for detecting Parallels virtual machines #838
- Improved Execute-ProcessAsUser and how it parses and executes command-line arguments. #794 #894 #782 #762 #851
- Improved setup for $ResolveParameters (uses proper filter and piping, supports arrays and dictionaries) #874
- Improved setup for setting $ScriptSource in Write-Log.
- Improve $envOffice variable setup by reducing the number of Get-ItemProperty calls.
- Factor in GPO-configured UpdateChannel property vs. CDNBaseURL property for $envOfficeChannel. #837
- Add "monthly enterprise" UUID to $envOfficeChannel setup.
- Changed when dot-sourcing of AppDeployToolkitExtensions occurs, so that use of custom functions can make use of UI elements, e.g. displaying a progress dialog.
- Improved overall codebase for better compliance with Strict Mode.
- Improved use of arrays throughout in order to improve performance.
- Improved threat safety when using thread on user interface elements should result in fewer issues with progress dialogs.
- Fixed UI message strings being incorrectly spaced on screen.
Thank you for your contributions!
- @mjr4077au made their first contribution in #861 and made a LOT of other contributions too!
- @zaggy made their first contribution in #830
- @forderud made their first contribution in #827
- @ahpooch made their first contribution in #843
- @sabieler made their first contribution in #856
- @grandweb4 made their first contribution in #694
- @VasilyGorborukov made their first contribution in #854
Full Changelog: 3.9.3...3.10.0
PowerShell App Deployment Toolkit 3.9.3
Version 3.9.3 [01/05/2023]
- Improved accuracy of Intune Provisioning/ESP detection #779 #801
- Resolved an issue where Show-InstallationRestartPrompt would not work with -NoSilentRestart $false #785
- Resolved an issue where Execute-ProcessAsUser would not work correctly since 3.9.2 #749 #776 #784
- Resolved an issue where Execute-ProcessAsUser Scheduled Task is not removed after execution since 3.9.0 #791 #793
- Resolved an issue where 3.9.2 would fail on devices running PowerShell versions below 5.1 due to the function Get-ComputerInfo #765
- Resolved an issue where Execute-ProcessAsUser would fail due to a whitespace in the $installName if called prior to the Initialization phase #788
- Resolved an issue where the status text on Show-InstallationProgress was not centered #780
- Fixed French translation for WelcomePrompt_CountdownMessage #796
- Added XML configuration option <Toast_Disable> to turn toast notifications off, default value is TRUE, thus reverting to balloon tip notifications as standard until stability is reached in the toast function.
- Added XML configuration option <Toast_AppName> to define the standard app display name of the toast notification #778
Full Changelog: 3.9.2...3.9.3
PowerShell App Deployment Toolkit 3.9.2
Version 3.9.2 [06/02/2023]
- Toast notifications now show the custom logo in the notification header (#745)
- Added variables for Office C2R: $envOfficeVersion, $envOfficeBitness, $envOfficeCDNBaseURL, $envOfficeChannel
- Resolved an issue where toast notifications invoked from Show-BalloonTip would not work when running as a standard user in scenarios where a standard user does not have access to the $envTemp directory or to the profile of another user. (#741)
- Resolved an issue where Execute-ProcessAsUser fails due to an unexpected VBS file association. (#741)
- Resolved an issue where the script would fail on Windows Home editions due to the check for Power Users Group which doesn't exist on Home editions. (#728)
- Removed the (cosmetic) console output related to creation of a temporary directory. (#739)
Full Changelog: 3.9.1...3.9.2
PowerShell App Deployment Toolkit 3.9.1
Version 3.9.1 [20/01/2023]
- Resolved an issue introduced in v3.9.0 where toast notifications would not display when run in the system context (#733)
- Added Finnish language translations to the UI components (#681)
- Added variable $IsMultiSessionOS for virtual environments (#697)
- Add missing dash before TypeName parameter used with New-Object in the in Set-ItemPermission function which resulted in failing to set read permissions on the BlockExecution path. (#721)
- Resolved an issue introduced in v3.8.4 where registry entries set by Block-AppExecution would not be cleaned up after an interrupted installation (#714)
- Resolved an issue where a PowerShell prompt would flash on screen when invoking a PowerShell script using Execute-ProcessAsUser (#735)
- Added the appropriate exit code 1638 for MSIs that are already installed when using the Execute-MSI function with -PassThru (#736)
- Added creation of the $dirAppDeployTemp directory by default so the variable can be used for general actions (#708)
Full Changelog: 3.9.0...3.9.1
PowerShell App Deployment Toolkit 3.9
Version 3.9.0 [10/01/2023]
- Added refreshed UI components with updated PSAppDeployToolkit branding
- Added support for Windows Toast Notifications, instead of using a BalloonTip (only for Windows 10 and above)
- Changes to dialogs so that the default system font is used for all labels and buttons, adding a more consistnent look and feel.
- Improved documentation - new overview, features and benefits detail to enhance value proposition. Improved Function documentation and overall PDF document layout.
- Updated text and structure for Comment-Based-Help to align with PowerShell Best Practices
- Added detection of defaultuser0 OOBE or ESP process to enable Non-Interactive deployment mode for Intune Autopilot/ESP scenarios.
- Show-InstallationPrompt now has a -TopMost parameter. Fixed the function failing to display a window with -NoWait parameter specified.
- Show-InstallationWelcome will now display the countdown message if there are no processes running when CloseApps timer is enabled.
- Show-InstallationProgress now supports moving the WindowLocation dynamically for existing progress dialogs (#685). When the WindowLocation is set to BottomRight, the position is now offset so as not to overlap with toast notifications (#685)
- Show-InstallationRestartPrompt now has a -TopMost parameter. Resolved an issue where parameters were not handled correctly when running asynchronously. The titlebar now shows the toolkit icon.
- Fixed vulnerability CWE-428 ensuring quotes are added to ActiveSetup paths with spaces (#726)
- Fixed -FilterApplication logic in Remove-Applications (#665)
- Fixed help text for some functions that contained old/incorrect information
- Fixed $LocalPowerUsersGroup throwing errors on machines where it does not exist (e.g. Domain Controllers)
- Resolved an issue with Set-ActiveSetup where the function would not correctly execute the process for the current user (#644)
- Resolved an issue where Set-ActiveSetup would not correctly evaluate whether to execute while running as system (#707)
- Set-ActiveSetup now also checks Version and IsInstalled properties when attempting to run the process for current user. DisableActiveSetup now also disables ExecuteForCurrentUser. Enhanced logging.
- Execute-Process now shows a shorter error description rather than the full error information in the popup window, the full error details are available in the log.
- Changed Block-AppExecution and Unblock-AppExecution so the functions also run during Non-Interactive installs (#699)
- Fixed a bug that caused Update-Desktop/Refresh-Desktop to crash Powershell on 32bit systems
- Improved calculation of dpi scale and pixels in the $GetDisplayScaleFactor variable.
- Resolved an issue where New-Folder would not create the entire path name in some scenarios.
- CHANGE: If the -ContinueOnError parameter on The Remove-Folder function now stops the script on all errors if the -ContinueOnError paramenter is set to $false. The -DisableRecursion parameter now removes everything except non-empty folders.
- Resolved an issue where the $LocalSystemNTAccount variable was not populated.
- Resolved an issue where UNC paths were not handled by New-Shortcut, Set-Shortcut and Get-Shortcut. Minor improvement to $iconIndex logic in New-Shortcut.
- Resolved an issues where the banner file object is locked and cannot be deleted in the same PowerShell session (#717)
- Updated Get-InstalledApplication to make removal of control characters less aggressive (#691)
- Updated entire toolkit to align with toolkit styling and formatting standards
- Updated Execute-MSP functions to utilize toolkit MSI database helper functions
- Added "-Force" and "-ErrorAction" parameters to "Get-ChildItem" calls in "Copy-File" function
- Added Greek translations
- Added the appropriate exit code for MSIs that are already installed to the Execute-MSI function (#686)
- Improved Unblock-AppExecution function removal of the BlockAppExecution Schedule Task XML file
- Updated Set-PinnedApplication to use "OrdinalIgnoreCase" instead of "CurrentCultureIgnoreCase" to ignore case of pin action on Windows 10
- Set the ErrorAction of the "Unregister-Event'" command in the Finally block of the Execute-Process function to "SilentlyContinue"
- Reverted some changes in "Show-InstallationWelcome" and "Show-WelcomePrompt" to maintain compatibility with PowerShell 2.0
- Reverted changes that removed "Select-Object -ExpandProperty" calls to maintain compatibility with PowerShell 2.0
- Reverted unnecessary conversions of Where-Object pipeline pattern to less readable ForEach-Object pattern. Where-Object pattern is not more performant than ForEach-Object (ForEach or For would be, but the micro-optimization is unnecessary for our usecase).
- Reverted Resolve-Error function code to that from v3.8.3 to undo all changes
PowerShell App Deployment Toolkit 3.8.4
Version 3.8.4 [26/01/2021]
- Fixed Boolean parameters not being passed to Execute-Process
- Changed Show-InstallationWelcome:
- Buttons are now wider
- Listbox is also wider so it is aligned with buttons
- Countdown is now bigger and in bold
- Appname is now in bold to be more visible
- Function now internally closes processes by name not by ID
- Fixed the hidden abort button not working on toolkit timeout
- Performance improvements
- Changed Show-InstallationPrompt:
- Fixed the hidden abort button not working on toolkit timeout
- Buttons are now identical in size and position to the ones in Show-InstallationWelcome
- Increased the gap between the banner and the text when the message is too short
- The function now doesn't call Close-InstallationProgress when running in async mode
- Changed Show-InstallationRestartPrompt:
- Reworked the window to look consistent with Show-InstallationWelcome
- Changed Show-InstallationProgress:
- Reworked the window to look consistent with Show-InstallationWelcome
- Function now logs when it is being bypassed due to Deploy Mode
- Changed Set-ActiveSetup:
- Fixed an issue where the function was adding executed active setup registry key when -ExecuteForCurrentUser $false was specified
- Function now checks the Active Setup registry key to evaluate whether to execute the StubPath based on the IsInstalled property
- Fixed typo in Stop-ServiceAndDependencies saying "start" instead of "stop"
- Fixed the toolkit checking task scheduler services twice
- Fixed the toolkit not creating $app variables if they are not created in Deploy-Application.ps1
- Reworked Close-InstallationProgress so it waits a couple of seconds in case the window is not opened yet
- This fixes an issue where the Show-InstallationProgress dialog would not get closed on slower machines where Close-InstallationProgress was called right after Show-InstallationProgress
- Function now gets bypassed in Silent Deploy Mode
- Changed Execute-ProcessAsUser:
- The function now escapes invalid xml characters prior to using them in a xml file
- Fixed signatures for a couple of functions inside AppDeployToolkitMain.cs based on official documentation - No breaking changes
- Performance improvements across the toolkit
- Fixed a bug in Set-ItemPermission where SID translation did not work correctly
- Changed Show-BalloonTip:
- Function Show-BalloonTip now logs when it is being bypassed
- Added parameter -NoWait for asynchronous execution
- The icon tooltip now contains Title - Text
- Fixed an issue where $envLogonServer would start with backslashes
- Fixed an issue where some global variable did not get cleared on exit
- This caused an issue if you ran multiple toolkits in the same powershell session. It would use the same log file for all toolkits.
- This only occured if you used the .ps1 files directly. Deploy-Application.exe opens a new session each time.
- Added function Set-Shortcut that allows you to change existing shortcuts
- Added function Get-Shortcut to retrieve information from a shortcut
- Changed New-Shortcut:
- BREAKING CHANGE: IconIndex parameter is now an Integer. It was previously incorrectly specified as a String.
- Reworked the way this function sets shortcut to run as admin
- Added additional checks for the input Path in order to provide better log messages and better handling of relative paths
- Improved function help text
- Changed the way Execute-MSI handles paths for Transforms and Patches:
- The only accepted separator is now a semi-colon. Commas can be a part of the paths now.
- Double quotes are removed from the paths before the entire string is wrapped in double quotes.
- Encoding of the files has been changed back to UTF8 with BOM, back from UTF8 without BOM:
- We chose to go with UTF8 without BOM because it is the encoding for Powershell v6+ and because it is one of the most popular encodings in the world.
However this caused issues on Windows Powershell for clients that use a different language from English. Due to Microsoft's chaotic coding decisions, Powershell uses the BOM as a verification that the code is written with non-English characters.
In their own words:"It's not possible to force PowerShell to use a specific input encoding. PowerShell 5.1 and below, running on Windows with the locale set to en-US, defaults to Windows-1252 encoding when there's no BOM.
Other locale settings may use a different encoding. To ensure interoperability, it's best to save scripts in a Unicode format with a BOM." - Just like changing to UTF8 without BOM, this will not affect the size of the files or their functionality. BOM or Byte Order Mark is just one special character, placed at the start of the files.
If you do not use the toolkit on machines with a different language, then this will have no effect on you or your clients. It will however help everyone else display the text in their language correctly.
- We chose to go with UTF8 without BOM because it is the encoding for Powershell v6+ and because it is one of the most popular encodings in the world.
PowerShell App Deployment Toolkit 3.8.3
Version 3.8.3 [01/10/2020]
- Added function Set-ItemPermission that allows you to easily change permissions on files or folders.
- Added setting READ permissions to BUITLTIN\Users for toolkit's temporary folder so they can get the popup message.
- Added -AddParameters for Execute-MSP, that lets you add additional parameters.
- Added -ExecuteForCurrentUser for Set-ActiveSetup, which allows you to disable executing the StubExePath for the current user.
- Added -UseShellExecute for Execute-Process:
- WindowStyle Hidden doesnt usually work without this parameter on. CreateNoWindow will usually not work without this off.
- This parameter changes the way the application is started. It is similar to entering a path into the Run dialog or into the Windows Explorer. If it is a file not an application, then the Shell will open it in a program assigned for this extension. The Shell does not stand for command shell but for operating system shell. It also changes how Working Directory is used.
- If this parameter is set to $true there is no output/error stream. Only an exit code. Default value is $false which was also the case before, however you couldnt change it through parameters previously.
- Expanded description for WindowStyle, CreateNoWindow and WorkingDirectory parameters.
- Added return value for Execute-Process with -PassThru and -NoWait specified: Returns an object with Id, Handle and ProcessName.
- Added config paths to the config file for installations where RequireAdmin is False.
- Added revised documentation which is now included as a PDF.
- Changed Variables to no longer rely on the system variable PATH for system applications.
- Changed default -Source value for Write-Log to a more useful value: it will be set to Parent's function name and if not inside a function then the name of the script. If not inside a function or a script, then the value will be set to 'Unknown'.
- Changed UnBlock-AppExecution and Block-AppExecution so they don't run without admin rights. Instead of throwing an error, they only write and entry to the log.
- Changed Execute-MSI so when the action is Patch, two variables REINSTALL and REINSTALLMODE are appended to parameters as specified here: https://docs.microsoft.com/en-us/windows-server/administration/windows-commands/msiexec#update-options
- Changed timestamp of compressed toolkit logs to 24h format to avoid possible double filenames.
- Changed Get-ScheduledTask to Get-SchedulerTask to resolve the conflict on Windows 10 and added an alias on Powershell versions where this function does not exist.
- Changed logging inside Convert-RegistryPath to be disabled by default, to decrease log clutter.
- Changed registry paths to no longer use registry PSDrives and contain full paths.
- Changed Show-InstallationPrompt so the window scales with the amount of text entered and removed unused space. If there is no icon specified, the text will scale the entire width too.
- Changed Show-InstallationRestartPrompt so it restarts the computer in Silent and VerySilent deploy modes.
- Added NoSilentRestart parameter for the function to retain previous behaviour, which defaults to True.
- Renames 'Restart Later' to 'Minimize' to make it more clear to the user.
- Fixed visual bugs in Show-InstallationWelcome.
- The application name is now always displayed.
- Fixed uncentered text.
- Height of the window is now not limited and scales with the text.
- Removes unused variables.
- Fixed uses of Execute-Process throughout the toolkit with the -PassThru parameter since -PassThru no longer ignores exit codes.
- Fixed issue with $envOSVersionRevision not being populated on Windows 8 because the "UBR" registry value is only being checked if "$envOSVersionMajor = 10".
- Fixed an issue where the correct ProgramFiles and CommonProgramFiles paths were not populated if the Toolkit was launched from a 32-bit process on a 64-bit OS.
- Fixed Powershell 2.0 issues with GetHostEntry and GetFolderPath.
- Fixed the issue with config file being read incorrectly and showing incorrect charaters in the UI.
- Fixed Get-UserProfiles so it ignores "defaultuser0" account.
- Fixed a rare issue in Execute-ProcessAsUser causing an error, because of a negative index for SubString.
- Improved logging in the function.
- CMD will now be started silently without a popup just like powershell.
PowerShell App Deployment Toolkit 3.8.2
Version 3.8.2 [08/05/2020]
Security Notice
- Fixed security issue that could allow elevation of privilege related to the toolkit temp file path [Reserved CVE-2020-10962]
- The script temp file path was set to a location that was writeable by a standard user. This is set in the configuration XML.
- This security risk only affects deployments that use the Show-InstallationWelcome function with the parameter -BlockExecution or the internal function Block-AppExecution AND are running with elevated permissions AND can be exploited only while the script is running.
- To further minimize the risk of an attacker using this to gain additional permissions, it has been moved to a write-protected location.
- Note: This change will break deployment scripts that run with Standard User rights. While this has been technically possible to do, we are not aware of anyone doing this. As such, we feel this is the safest course of action for the overall PSADT userbase.
- Additionally, a standalone PowerShell script was created, to identify and remediate the issue on existing PSAppDeployToolkit deployment packages. It can be found here:
Breaking Changes
- Changed behavior of parameters in Execute-Process. This is a breaking change which may require changes to deployment scripts:
- Changes to behavior are being made to reduce confusion around the wording of parameters when a custom workflow is required.
- No changes required if your deployment script does not have custom handling of exceptions / exit codes.
- ContinueOnError was scoped to ignore non-zero exit codes. It now operates at the function level and will allow continuing if an unknown exception occurs.
- If Passthru was specified, all non-zero exit codes and exceptions were ignored. Now, both event types cause a Script Failure.
- To ignore specific exit codes, use the new IgnoreExitCodes parameter, using * to ignore all.
- To stop the script if the process fails, use the ExitOnProcessFailure parameter.
- Execute-Process would fail if an exception occurred, even when ContinueOnError was specified. It now ignores exceptions as expected.
- ContinueOnError now ignores exceptions as expected. To ignore specific exit codes, use the IgnoreExitCodes parameter.
Other
- Added new parameters to the Execute-MSI function:
- NoWait. Allows immediately returning to the script once the process has been started, without waiting for it to complete (Default: False).
- IgnoreExitCodes. Allows ignoring specific or all exit codes returned by the process (Default: None).
- PriorityClass. Allows changing the process priority immediately after process starts (Default: Normal).
- ExitOnProcessFailure. Allows setting the script to immediately stop if the process fails and returns the exit code to the caller (e.g. SCCM) (Default: True).
- RepairFromSource. Allows rewriting local msi cache and repair installation from source
- Added new parameters to the Execute-Process function:
- IgnoreExitCodes. now supports ignoring all exit codes returned by the process (Default: None).
- PriorityClass. Allows changing the process priority immediately after process starts (Default: Normal).
- ExitOnProcessFailure. Allows setting the script to immediately stop if the process fails and returns the exit code to the caller (e.g. SCCM) (Default: True).
- Added async reading of standard error stream to Execute-Process
- Added restoring of PowerShell window title on script exit
- Changed function Remove-InvalidFileNameChars to only retrieve Invalid Filename Characters once per script execution, instead of once per each function call
- Improved handling of application install title / name variables
- Fixed issue where exceptions were bypassed in Execute-Process with PassThru parameter specified.
- Fixed issue where multiple processes were displayed in the Show-InstallationWelcome dialog when the same process has multiple descriptions.
- Fixed a number of typos in the documentation.
- Reverted part of the function Get-InstalledApplication that was causing slowdowns
- Removed unused variable $processStarted.
- Added parameter -WorkingDirectory for Execute-ProcessAsUser
- Fixes for Slovak and Czech translations