P Sapp Deploy Toolkit
P Sapp Deploy Toolkit
https://psappdeploytoolkit.com
v3.9.3 - May 2nd 2023
Overview
Features and Benefits
Capability / Feature Details
System Requirements and Support
Donations
Licensing
Getting Started
Downloading & Preparing
Folders and Files Structure
Deploying an Application
Using the PSAppDeployToolkit
Adding User Interface Elements
Customizing the PSAppDeployToolkit
Executing a Deployment Script
Example Deployment (Basic) - Adobe Reader
Example Deployment (Advanced) - Office 2013 SP1
Toolkit Reference - Exit Codes
Toolkit Reference - Variables
Toolkit Reference - Functions
Convert-RegistryPath
Copy-File
Disable-TerminalServerInstallMode
Enable-TerminalServerInstallMode
Execute-MSI
Execute-MSP
Execute-Process
Execute-ProcessAsUser
Exit-Script
Get-FileVersion
Get-FreeDiskSpace
Get-HardwarePlatform
Get-IniValue
Get-InstalledApplication
Get-LoggedOnUser
Get-PendingReboot
Get-RegistryKey
Get-SchedulerTask
Get-ServiceStartMode
Get-Shortcut
Get-UniversalDate
Get-UserProfiles
Get-WindowTitle
Install-MSUpdates
Install-SCCMSoftwareUpdates
Invoke-HKCURegistrySettingsForAllUsers
Invoke-RegisterOrUnregisterDLL
Invoke-SCCMTask
New-Folder
New-MsiTransform
New-Shortcut
Remove-File
Remove-Folder
Remove-InvalidFileNameChars
Remove-MSIApplications
Remove-RegistryKey
Resolve-Error
Send-Keys
Set-ActiveSetup
Set-IniValue
Set-ItemPermission
Set-PinnedApplication
Set-RegistryKey
Set-ServiceStartMode
Set-Shortcut
Show-BalloonTip
Show-DialogBox
Show-InstallationProgress
Show-InstallationPrompt
Show-InstallationRestartPrompt
Show-InstallationWelcome
Start-ServiceAndDependencies
Stop-ServiceAndDependencies
Test-Battery
Test-MSUpdates
Test-NetworkConnection
Test-PowerPoint
Test-RegistryValue
Test-ServiceExists
Update-Desktop
Update-GroupPolicy
Update-SessionEnvironmentVariables
Write-Log
Overview
The PowerShell App Deployment Toolkit (or the PSAppDeployToolkit) provides a
framework for deploying applications in a business / corporate environment. It contains a
set of well-defined functions for common application deployment tasks, as well as user
interface elements for end user interaction during a deployment. It simplifies the complex
scripting challenges of deploying applications in the enterprise, provides a consistent
deployment experience for your end users and as a result of this, improves the overall
success rate of your deployments.
The PSAppDeployToolkit was built with large enterprise environments in mind, where
stability is absolutely crucial to ensure the success of mass deployments. That stability is
exactly why the PSAppDeployToolkit is used by Fortune 500 companies and federal
governments, banks, globally recognized brands, white-label packaging factories, defence
contractors and military, in-house IT teams, consultants and managed service providers to
deploy applications on millions of Windows endpoints all over the world every day.
The PSAppDeployToolkit best practice workflow uses robust functions that handle errors
and exceptions gratefully, providing extensive logging of all script actions, as well as
automatically capturing Windows Installer logs in one place. This, along with optional on-
screen messaging, makes it easy to quickly identify any issues in your script and quickly
remediate them.
Tanium Deploy
IBM BigFix
Localizable
The UI is localized in more than 20 languages and more can easily be added using the
XML configuration file.
Updateable
The logic engine and functions are separated from per-application scripts, so that you can
update the PSAppDeployToolkit when a new version is released and maintain backwards
compatibility with your deployment scripts.
Extensible
The PSAppDeployToolkit can be easily extended to add custom scripts and functions.
Helpful
The PSAppDeployToolkit provides detailed logging of all actions performed and even
includes a graphical console to browse the help documentation for the
PSAppDeployToolkit functions.
Provides the ability to execute any type of setup (Windows Installer or Executable-
based) with automated exit code handling, as well as MSI-based installers having their
logs captured and stored alongside the PSAppDeployToolkit logs.
Mass remove MSI applications with a partial match (e.g. remove all versions of all MSI
applications which match "Office")
Perform MEMCM actions such as Machine and User Policy Refresh, Inventory Update
and Software Update
Check whether a PowerPoint slide show is running in full screen presentation mode
User Experience
An interface to prompt the user to close specified applications that are open prior to
starting the application deployment. The user is prompted to save their documents
and has the option to close the programs themselves, have the PSAppDeployToolkit
close the programs, or optionally defer. Optionally, a countdown can be displayed until
the applications are automatically closed.
The ability to allow the user to defer an installation X number of times, X number of
days or until a deadline date is reached.
The ability to prevent the user from launching the applications that need to be closed
while the application installation is in progress.
An indeterminate progress dialog with customizable message text that can be updated
throughout the deployment.
A restart prompt with an option to restart later or restart now and a countdown to
automatic restart.
The ability to notify the user if disk space requirements are not met.
Custom dialog boxes with options to customize title, text, buttons & icon.
Balloon tip notifications to indicate the beginning and end of an installation and the
success or failure of an installation.
Branding of the above UI components using a custom logo icon and banner for your
own Organization.
The ability to run in interactive, silent (no dialogs) or non-interactive mode (default for
running MEMCM task sequence or session 0).
The UI is localized into several languages and more can be easily added using the XML
configuration file.
Handles MEMCM exit codes, including time sensitive dialogs supporting "MEMCM Fast
Retry" - providing more accurate Reporting (no more Failed due to timeout errors).
Ability to prevent reboot codes (3010) from being passed back to MEMCM, which would
cause a reboot prompt.
Documentation
PowerShell 2.0
While we have attempted to maintain this backwards compatibility through the life cycle
of the PSAppDeployToolkit, the degree of testing performed across older Operating
Systems such as XP and Vista is limited as the bulk of testing is performed on the latest OS
versions. However, the PSAppDeployToolkit has widespread adoption in the enterprise
from SMEs to large multinationals so there is safety in numbers and the assurance that
the PSAppDeployToolkit has been put through its paces VERY extensively on a large
number of Windows clients around the globe.
From the customers that we are aware of using the PSAppDeployToolkit, we estimate it is
used to deploy software on over 5 million endpoints.
Donations
We have invested our spare time in the creation and ongoing development, maintenance
and support of this community tool on a voluntary basis - it is not part of our day jobs.
Donations to the project are welcome, please visit the following page for details on
making a contribution:
http://psappdeploytoolkit.com/donate
Licensing
PSAppDeployToolkit - Copyright © 2023 The PSAppDeployToolkit Team.
This program is free software: you can redistribute it and/or modify it under the terms of
the GNU Lesser General Public License as published by the Free Software Foundation,
either version 3 of the License, or any later version. This program is distributed in the
hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied
warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
General Public License for more details.
You should have received a copy of the GNU Lesser General Public License along with this
program. If not, see http://www.gnu.org/licenses.
Getting Started
Downloading & Preparing
The PSAppDeployToolkit doesn't actually need to be installed, but we did need an
‘installation' section for our documentation :) The easiest way to get the
PSAppDeployToolkit is to download the latest version from GitHub.
The PSAppDeployToolkit package is provided in a Zip file archive. Once extracted, you'll
see a folder structure similar to that outlined in the next section.
Root Folder
This contains all of the files needed to create a new deployment package
AppDeployToolkit Folder
File Name Description
The Deploy-Application.ps1 script is the only one you need to modify to deploy your
application.
The PSAppDeployToolkit has a zero-config MSI install feature which allows you to quickly
execute an installation with zero configuration of the Deploy-Application.ps1 file. To use
this feature:
1. Place your MSI file into the Files folder of the PSAppDeployToolkit. This method only
support the installation of one MSI, so if more than one MSI is found, then only the
first one is selected.
2. If you have an MST file, then place it into the Files folder of the PSAppDeployToolkit.
The MST file must have the same name as the MSI file. For example, if your MSI file
name is test01.msi, then the MST file must be named test01.mst.
3. If you have any MSP files, then place it into the Files folder of the PSAppDeployToolkit.
You can place more than one MSP file in the folder, but you must name the files in
alphabetical order to control the order in which they are installed. MSP file will be
installed in alphabetical order.
Using the PSAppDeployToolkit
Adding User Interface Elements
The user interface consists of several components detailed below. It can be branded with
a custom logo and banner, and all on-screen messaging can be customized in
AppDeployToolkitConfig.xml. Apart from the default of English, the User Interface has also
been localized in the following languages:
Danish
Dutch
French
German
Italian
Japanese
Norwegian
Portuguese
Spanish
Swedish
The user interface can be suppressed by specifying the deploy mode parameter as
follows:
The progress message can be dynamically updated to show the installation stage or to
display custom messages, using Show-InstallationProgress.
AppDeployToolkitConfig.xml
Configure the default UI messages, MSI parameters, log file location, whether Admin
rights should be required, whether log files should be compressed, log style (CMTrace or
Legacy), max log size, whether debug messages should be logged, whether log entries
should be written to the console, whether toolkit should re-launch as elevated logged-on
console user when in SYSTEM context, whether toolkit should fall back to SYSTEM context
if failure to launch toolkit as user, and whether toolkit should attempt to launch as a non-
console logged on user (e.g. user logged on via terminal services) when in SYSTEM
context.
AppDeployToolkitLogo.ico
To brand the balloon notifications and UI window title bars with your own
custom/corporate logo, replace the AppDeployToolkitLogo.ico file with your own .ico file
(retaining the file name)
AppDeployToolkitBanner.png
To brand the PSAppDeployToolkit UI prompts with your own custom/corporate banner,
replace the AppDeployToolkitBanner.png file with your own .png file (retaining the file name).
The file must be in PNG format and must be 450 x 50 in size.
Logging
The PSAppDeployToolkit generates extensive logging for all toolkit and MSI operations.
The default log folder for the PSAppDeployToolkit and MSI log files can be specified in the
XML configuration file. The default folder is C:\Windows\Logs\Software.
The PSAppDeployToolkit log file is named after the application with _PSAppDeployToolkit
appended to the end, e.g.
Oracle_JavaRuntime_1.7.0.17_EN_01_PSAppDeployToolkit.log
All MSI actions are logged and the log file is named according to the MSI file used on the
command line, with the action appended to the log file name. For uninstallations, the MSI
product code is resolved to the MSI application name and version to keep the same log
file format, e.g.
Oracle_JavaRuntimeEnvironmentx86_1.7.0.17_EN_01_Install.log
Oracle_JavaRuntimeEnvironmentx86_1.7.0.17_EN_01_Repair.log
Oracle_JavaRuntimeEnvironmentx86_1.7.0.17_EN_01_Patch.log
Oracle_JavaRuntimeEnvironmentx86_1.7.0.17_EN_01_Uninstall.log
Log Compression
<Toolkit_CompressLogs>True</Toolkit_CompressLogs>
Both toolkit and MSI logs are temporally placed in $envTemp$installName which gets
cleaned up at the end of the install.
At the end of the install / uninstall, the logs are compressed into a new zip file which is
placed in the LogFolder location in the config file.
The Zip file name indicates whether it is an Install / Uninstall and has the timestamp in
the filename so previous logs do not get overwritten.
If your package creates other log files, you can send them to the temporary logging
folder at $envTemp$installName.
Deploy-Application.ps1
Deploy an application for uninstallation using PowerShell x86, suppressing the PowerShell
console window and deploying in silent mode.
Deploy an application for installation, suppressing the PowerShell console window and
allowing reboot codes to be returned to the parent process.
Deploy-Application.exe -AllowRebootPassThru
Deploy-Application.exe 'Custom-Script.ps1'
Remove an application with a custom name and custom location for the script file.
Toolkit Parameters
The following parameters are accepted by Deploy-Application.ps1:
-DeploymentType
-DeploymentType 'Uninstall'
-DeployMode
-DeployMode 'Silent'
-DeployMode 'NonInteractive'
-AllowRebootPassthru
Specify whether to allow the 3010 exit code (reboot required) to be passed back to the
parent process (e.g. MEMCM) if detected during an installation. If a 3010 code is passed to
MEMCM, the MEMCM client will display a reboot prompt. If set to false, the 3010 return
code will be replaced by a "0" (successful, no restart required).
-AllowRebootPassThru $false
-TerminalServerMode
Changes to user install mode and back to user execute mode for installing/uninstalling
applications on Remote Desktop Session Host/Citrix servers
-TerminalServerMode $false
-DisableLogging
-DisableLogging
This is a switch parameter, so setting this enables it. When not present, the default is false.
Example Deployment (Basic) - Adobe
Reader
In this example, we will build an Adobe Reader installation which provides the following
benefits over using a standard MSI based MEMCM deployment:
The ability to close any applications that could cause errors during the installation
Full removal of any previous version of Adobe Reader (to prevent issues sometimes
seen when doing an MSI upgrade, i.e. Missing previous installation source files)
Installation of any subsequent patches required after the base MSI installation
This example is provided as a script with the PSAppDeployToolkit, in the Examples folder.
Script Customisation
Customize the Deploy-Application.ps1 script using the example code below:
Initialization
Pre-Install
## Prompt the user to close the following applications if they are running and
## allow the option to defer the installation up to 3 times:
Show-InstallationWelcome -CloseApps 'iexplore,AcroRd32,cidaemon' -AllowDefer -
DeferTimes 3
Installation
Post-Installation
Uninstallation
## Prompt the user to close the following applications if they are running:
Show-InstallationWelcome -CloseApps 'iexplore,AcroRd32,cidaemon'
On the Environment page, ensure you use a combination of settings that allows the
user to interact with the application. Failure to do so will result in the application
installing silently:
Accept the defaults for the rest of the program (or modify according to your
environment)
Create a new Advertisement for the Package and set your target collection accordingly:
Set a recurring schedule for the Mandatory Assignment. This dictates how frequently
the application should attempt to install. Additionally, ensure that "Rerun if failed
previous attempt" is enabled. These settings are required when using the deferral
system and ensure that if a user defers the install, the install will retry after the
specified interval:
When prompted with the following dialog box, select Yes:
Accept the defaults for the rest of the advertisement (or modify according to your
environment). The deployment should start on your target machines shortly.
Add a new Deployment Type and manually specify the deployment type information:
Populate the deployment type details accordingly:
Set the content location. Additionally, set the Install and Uninstall programs
accordingly. They should be:
And:
Create a new detection rule. Specify the base MSI product code and modify the Version
to be the same as the final version after all patches are installed:
On the User Experience page, ensure you use a combination of settings that allows the
user to interact with the application. Failure to do so will result in the application
installing silently:
Leave the requirements page blank (or modify according to your environment)
Leave the software dependencies page blank (or modify according to your
environment)
The ability to close any applications that could cause errors during the installation
Full removal of any previous version of Microsoft Office 2007, 2010 or 2013
Files
Office Configuration MSP created with the Office Customisation Tool should be
placed in the Config subfolder and be named Office2013ProPlus.MSP. Modify the
script accordingly if you wish to change. For a basic MSP, you should probably
configure Access, Word, Excel and PowerPoint to be the only core applications to
install. We can add everything else as components.
CompletionNotice = "no"
SuppressModal = "yes"
NoCancel = "yes"
AcceptEula = "yes"
Security updates and service pack extracted MSPs should be placed in the
Updates subfolder.
SupportFiles
Contains custom Config.XML files which are used to add specific components that
might be considered unnecessary in a standard Office install, but could be added
later using command-line switches
Contains Office Scrub tools for Office 2007, 2010 and 2013
Once the folder structure is laid out correctly and the custom Deploy-Application.ps1 is
added (as well as the PSAppDeployToolkit package files themselves), the following
command-lines are valid:
Deploy-Application.exe
Deploy-Application.exe -AddInfoPath
69000 -
Recommended for user customized exit codes in Deploy-Application.ps1.
69999
70000 -
Recommended for user customized exit codes in Deploy-Application.ps1.
79999
If Execute-Process function captures an exit code out of range for int32 then
60013
return this custom exit code.
Toolkit Reference - Variables
The PSAppDeployToolkit has a number of internal variables which can be used in your
script. Outlined below are each of them:
Toolkit Name
Variable Description
Script Info
Variable Description
Current Windows two letter ISO language name (e.g. EN, FR,
$currentLanguage
DE, JA etc)
Current Windows two letter UI ISO language name (e.g. EN, FR,
$currentUILanguage
DE, JA etc)
Environment Variables
Path examples are for Windows 7 and higher
Variable Description
$envUserCookies C:\Users\%USERNAME%\AppData\Local\Microsoft\Windows\INetCookies
$envUserDesktop C:\Users\%USERNAME%\Desktop
$envUserFavorites C:\Users\%USERNAME%\Favorites
$envUserInternetCache C:\Users\%USERNAME%\AppData\Local\Microsoft\Windows\INetCache
$envUserInternetHistory C:\Users\%USERNAME%\AppData\Local\Microsoft\Windows\History
$envUserMyDocuments C:\Users\%USERNAME%\Documents
$envUserName %USERNAME%
$envUserSendTo C:\Users\%USERNAME%\AppData\Roaming\Microsoft\Windows\SendTo
C:\Users\%USERNAME%\AppData\Roaming\Microsoft\Windows\Start
$envUserStartMenu
Menu
C:\Users\%USERNAME%\AppData\Roaming\Microsoft\Windows\Start
$envUserStartMenuPrograms
Menu\Programs
C:\Users\%USERNAME%\AppData\Roaming\Microsoft\Windows\Start
$envUserStartUp
Menu\Programs\Startup
$envSystem32Directory C:\WINDOWS\system32
Operating System
Variable Description
$envOSServicePack Latest service pack installed on the system (e.g. Service Pack 3)
Permissions / Accounts
RegEx Patterns
Variable Description
Registry Keys
Variable Description
Array containing the path to the 32-bit and 64-bit portions of the
registry that contain information about programs installed on
$regKeyApplications
the system.
HKLM:SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall
The path in the registry where the defer history for the package
being installed is stored.
$regKeyDeferHistory
$configToolkitRegPath +
\$appDeployToolkitName\DeferHistory\$installName
COM Objects
Variable Description
Log File
Variable Description
Script Parameters
Variable Description
Logged On Users
Variable Description
Miscellaneous
Variable Description
Convert-RegistryPath
SYNOPSIS
Converts the specified registry key path to a format that is compatible with built-in
PowerShell cmdlets.
SYNTAX
DESCRIPTION
Converts the specified registry key path to a format that is compatible with built-in
PowerShell cmdlets.
EXAMPLES
EXAMPLE 1
Convert-RegistryPath -Key
'HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall\{1AD147D0-
BE0E-3D6C-AC11-64F6DC4163F1}'
EXAMPLE 2
Convert-RegistryPath -Key
'HKLM:SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall\{1AD147D0-BE0E-3D6C-AC11-
64F6DC4163F1}'
PARAMETERS
-DisableFunctionLogging
Type: Boolean
Parameter Sets: (All)
Aliases:
Required: False
Position: 3
Default value: True
Accept pipeline input: False
Accept wildcard characters: False
-Key
Path to the registry key to convert (can be a registry hive or fully qualified path)
Type: String
Parameter Sets: (All)
Aliases:
Required: True
Position: 1
Default value: None
Accept pipeline input: False
Accept wildcard characters: False
-SID
Type: String
Parameter Sets: (All)
Aliases:
Required: False
Position: 2
Default value: None
Accept pipeline input: False
Accept wildcard characters: False
CommonParameters
INPUTS
None
OUTPUTS
System.String
Copy-File
SYNOPSIS
Copy a file or group of files to a destination path.
SYNTAX
DESCRIPTION
Copy a file or group of files to a destination path.
EXAMPLES
EXAMPLE 1
EXAMPLE 2
-ContinueFileCopyOnError
Type: Boolean
Parameter Sets: (All)
Aliases:
Required: False
Position: 4
Default value: False
Accept pipeline input: False
Accept wildcard characters: False
-ContinueOnError
Type: Boolean
Parameter Sets: (All)
Aliases:
Required: False
Position: 3
Default value: True
Accept pipeline input: False
Accept wildcard characters: False
-Destination
Type: String
Parameter Sets: (All)
Aliases:
Required: True
Position: 2
Default value: None
Accept pipeline input: False
Accept wildcard characters: False
-Flatten
Type: SwitchParameter
Parameter Sets: (All)
Aliases:
Required: False
Position: Named
Default value: False
Accept pipeline input: False
Accept wildcard characters: False
-Path
Required: True
Position: 1
Default value: None
Accept pipeline input: False
Accept wildcard characters: False
-Recurse
Type: SwitchParameter
Parameter Sets: (All)
Aliases:
Required: False
Position: Named
Default value: False
Accept pipeline input: False
Accept wildcard characters: False
CommonParameters
OUTPUTS
None
RELATED LINKS
https://psappdeploytoolkit.com
Disable-TerminalServerInstallMode
SYNOPSIS
Changes to user install mode for Remote Desktop Session Host/Citrix servers.
SYNTAX
DESCRIPTION
Changes to user install mode for Remote Desktop Session Host/Citrix servers.
EXAMPLES
EXAMPLE 1
Disable-TerminalServerInstallMode
PARAMETERS
-ContinueOnError
Type: Boolean
Parameter Sets: (All)
Aliases:
Required: False
Position: 1
Default value: True
Accept pipeline input: False
Accept wildcard characters: False
CommonParameters
INPUTS
None
RELATED LINKS
https://psappdeploytoolkit.com
Enable-TerminalServerInstallMode
SYNOPSIS
Changes to user install mode for Remote Desktop Session Host/Citrix servers.
SYNTAX
DESCRIPTION
Changes to user install mode for Remote Desktop Session Host/Citrix servers.
EXAMPLES
EXAMPLE 1
Enable-TerminalServerInstallMode
PARAMETERS
-ContinueOnError
Type: Boolean
Parameter Sets: (All)
Aliases:
Required: False
Position: 1
Default value: True
Accept pipeline input: False
Accept wildcard characters: False
CommonParameters
INPUTS
None
OUTPUTS
None
Execute-MSI
SYNOPSIS
Executes msiexec.exe to perform the following actions for MSI & MSP files and MSI
product codes: install, uninstall, patch, repair, active setup.
SYNTAX
DESCRIPTION
Executes msiexec.exe to perform the following actions for MSI & MSP files and MSI
product codes: install, uninstall, patch, repair, active setup.
If the -Action parameter is set to "Install" and the MSI is already installed, the function will
exit.
Sets default switches to be passed to msiexec based on the preferences in the XML
configuration file.
Automatically generates a log file name and creates a verbose log file for all msiexec
operations.
Expects the MSI or MSP file to be located in the "Files" sub directory of the App Deploy
Toolkit.
Expects transform files to be in the same directory as the MSI file.
EXAMPLES
EXAMPLE 1
Installs an MSI
EXAMPLE 2
Installs an MSI, applying a transform and overriding the default MSI toolkit parameters
EXAMPLE 3
Installs an MSI and stores the result of the execution into a variable by using the -
PassThru option
EXAMPLE 4
EXAMPLE 5
Installs an MSP
PARAMETERS
-Action
Type: String
Parameter Sets: (All)
Aliases:
Required: False
Position: 1
Default value: Install
Accept pipeline input: False
Accept wildcard characters: False
-AddParameters
Required: False
Position: 5
Default value: None
Accept pipeline input: False
Accept wildcard characters: False
-ContinueOnError
Type: Boolean
Parameter Sets: (All)
Aliases:
Required: False
Position: 14
Default value: False
Accept pipeline input: False
Accept wildcard characters: False
-ExitOnProcessFailure
Specifies whether the function should call Exit-Script when the process returns an exit
code that is considered an error/failure.
Default: $true
Type: Boolean
Parameter Sets: (All)
Aliases:
Required: False
Position: 12
Default value: True
Accept pipeline input: False
Accept wildcard characters: False
-IgnoreExitCodes
Type: String
Parameter Sets: (All)
Aliases:
Required: False
Position: 10
Default value: None
Accept pipeline input: False
Accept wildcard characters: False
-IncludeUpdatesAndHotfixes
Required: False
Position: Named
Default value: False
Accept pipeline input: False
Accept wildcard characters: False
-LoggingOptions
Overrides the default logging options specified in the XML configuration file.
Default options are: "/L*v".
Type: String
Parameter Sets: (All)
Aliases:
Required: False
Position: 7
Default value: None
Accept pipeline input: False
Accept wildcard characters: False
-NoWait
Required: False
Position: Named
Default value: False
Accept pipeline input: False
Accept wildcard characters: False
-Parameters
Type: String
Parameter Sets: (All)
Aliases: Arguments
Required: False
Position: 4
Default value: None
Accept pipeline input: False
Accept wildcard characters: False
-PassThru
Required: False
Position: Named
Default value: False
Accept pipeline input: False
Accept wildcard characters: False
-Patch
The name of the patch (msp) file(s) to be applied to the MSI for use with the "Install"
action.
The patch file is expected to be in the same directory as the MSI file.
Multiple patches have to be separated by a semi-colon.
Type: String
Parameter Sets: (All)
Aliases:
Required: False
Position: 6
Default value: None
Accept pipeline input: False
Accept wildcard characters: False
-Path
The path to the MSI/MSP file or the product code of the installed MSI.
Type: String
Parameter Sets: (All)
Aliases: FilePath
Required: True
Position: 2
Default value: None
Accept pipeline input: False
Accept wildcard characters: False
-PriorityClass
Type: ProcessPriorityClass
Parameter Sets: (All)
Aliases:
Accepted values: Normal, Idle, High, RealTime, BelowNormal, AboveNormal
Required: False
Position: 11
Default value: Normal
Accept pipeline input: False
Accept wildcard characters: False
-private:LogName
Type: String
Parameter Sets: (All)
Aliases: LogName
Required: False
Position: 8
Default value: None
Accept pipeline input: False
Accept wildcard characters: False
-RepairFromSource
Type: Boolean
Parameter Sets: (All)
Aliases:
Required: False
Position: 13
Default value: False
Accept pipeline input: False
Accept wildcard characters: False
-SecureParameters
Hides all parameters passed to the MSI or MSP file from the toolkit Log file.
Type: SwitchParameter
Parameter Sets: (All)
Aliases:
Required: False
Position: Named
Default value: False
Accept pipeline input: False
Accept wildcard characters: False
-SkipMSIAlreadyInstalledCheck
Skips the check to determine if the MSI is already installed on the system.
Default is: $false.
Type: SwitchParameter
Parameter Sets: (All)
Aliases:
Required: False
Position: Named
Default value: False
Accept pipeline input: False
Accept wildcard characters: False
-Transform
Required: False
Position: 3
Default value: None
Accept pipeline input: False
Accept wildcard characters: False
-WorkingDirectory
Type: String
Parameter Sets: (All)
Aliases:
Required: False
Position: 9
Default value: None
Accept pipeline input: False
Accept wildcard characters: False
CommonParameters
OUTPUTS
PSObject
ExitCode
STDOut
STDErr
RELATED LINKS
https://psappdeploytoolkit.com
Execute-MSP
SYNOPSIS
Reads SummaryInfo targeted product codes in MSP file and determines if the MSP file
applies to any installed products
If a valid installed product is found, triggers the Execute-MSI function to patch the
installation.
Uses default config MSI parameters.
You can use -AddParameters to add additional parameters.
SYNTAX
EXAMPLE 1
EXAMPLE 2
PARAMETERS
-AddParameters
Additional parameters
Type: String
Parameter Sets: (All)
Aliases:
Required: False
Position: 2
Default value: None
Accept pipeline input: False
Accept wildcard characters: False
-Path
Required: True
Position: 1
Default value: None
Accept pipeline input: False
Accept wildcard characters: False
CommonParameters
INPUTS
None
OUTPUTS
None
RELATED LINKS
https://psappdeploytoolkit.com
Execute-Process
SYNOPSIS
Execute a process with optional arguments, working directory, window style.
SYNTAX
DESCRIPTION
Executes a process, e.g.
a file included in the Files directory of the App Deploy Toolkit, or a file on the local
machine.
Provides various options for handling the return codes (see Parameters).
EXAMPLES
EXAMPLE 1
If the file is in the "Files" directory of the App Deploy Toolkit, only the file name needs to
be specified.
EXAMPLE 2
EXAMPLE 3
EXAMPLE 4
Launch InstallShield "setup.exe" from the ".\Files" sub-directory and force log files to the
logging folder.
EXAMPLE 5
Launch InstallShield "setup.exe" with embedded MSI and force log files to the logging
folder.
PARAMETERS
-ContinueOnError
Type: Boolean
Parameter Sets: (All)
Aliases:
Required: False
Position: 10
Default value: False
Accept pipeline input: False
Accept wildcard characters: False
-CreateNoWindow
Specifies whether the process should be started with a new window to contain it.
Only works for Console mode applications.
UseShellExecute should be set to $false.
Default is false.
Type: SwitchParameter
Parameter Sets: (All)
Aliases:
Required: False
Position: Named
Default value: False
Accept pipeline input: False
Accept wildcard characters: False
-ExitOnProcessFailure
Specifies whether the function should call Exit-Script when the process returns an exit
code that is considered an error/failure.
Default: $true
Type: Boolean
Parameter Sets: (All)
Aliases:
Required: False
Position: 8
Default value: True
Accept pipeline input: False
Accept wildcard characters: False
-IgnoreExitCodes
Type: String
Parameter Sets: (All)
Aliases:
Required: False
Position: 6
Default value: None
Accept pipeline input: False
Accept wildcard characters: False
-MsiExecWaitTime
Specify the length of time in seconds to wait for the msiexec engine to become available.
Default: 600 seconds (10 minutes).
Type: Int32
Parameter Sets: (All)
Aliases:
Required: False
Position: 5
Default value: $configMSIMutexWaitTime
Accept pipeline input: False
Accept wildcard characters: False
-NoWait
Type: SwitchParameter
Parameter Sets: (All)
Aliases:
Required: False
Position: Named
Default value: False
Accept pipeline input: False
Accept wildcard characters: False
-Parameters
Required: False
Position: 2
Default value: None
Accept pipeline input: False
Accept wildcard characters: False
-PassThru
If NoWait is not specified, returns an object with ExitCode, STDOut and STDErr output
from the process.
If NoWait is specified, returns an object with Id, Handle and ProcessName.
Type: SwitchParameter
Parameter Sets: (All)
Aliases:
Required: False
Position: Named
Default value: False
Accept pipeline input: False
Accept wildcard characters: False
-Path
Required: True
Position: 1
Default value: None
Accept pipeline input: False
Accept wildcard characters: False
-PriorityClass
Type: ProcessPriorityClass
Parameter Sets: (All)
Aliases:
Accepted values: Normal, Idle, High, RealTime, BelowNormal, AboveNormal
Required: False
Position: 7
Default value: Normal
Accept pipeline input: False
Accept wildcard characters: False
-SecureParameters
Hides all parameters passed to the executable from the Toolkit log file
Type: SwitchParameter
Parameter Sets: (All)
Aliases:
Required: False
Position: Named
Default value: False
Accept pipeline input: False
Accept wildcard characters: False
-UseShellExecute
Specifies whether to use the operating system shell to start the process.
$true if the shell should be used when starting the process; $false if the process should be
created directly from the executable file.
The word "Shell" in this context refers to a graphical shell (similar to the Windows shell)
rather than command shells (for example, bash or sh) and lets users launch graphical
applications or open documents.
It lets you open a file or a url and the Shell will figure out the program to open it with.
The WorkingDirectory property behaves differently depending on the value of the
UseShellExecute property.
When UseShellExecute is true, the WorkingDirectory property specifies the location of the
executable.
When UseShellExecute is false, the WorkingDirectory property is not used to find the
executable.
Instead, it is used only by the process that is started and has meaning only within the
context of the new process.
If you set UseShellExecute to $true, there will be no available output from the process.
Default: $false
Type: Boolean
Parameter Sets: (All)
Aliases:
Required: False
Position: 9
Default value: False
Accept pipeline input: False
Accept wildcard characters: False
-WaitForMsiExec
Type: SwitchParameter
Parameter Sets: (All)
Aliases:
Required: False
Position: Named
Default value: False
Accept pipeline input: False
Accept wildcard characters: False
-WindowStyle
Type: ProcessWindowStyle
Parameter Sets: (All)
Aliases:
Accepted values: Normal, Hidden, Minimized, Maximized
Required: False
Position: 3
Default value: Normal
Accept pipeline input: False
Accept wildcard characters: False
-WorkingDirectory
Type: String
Parameter Sets: (All)
Aliases:
Required: False
Position: 4
Default value: None
Accept pipeline input: False
Accept wildcard characters: False
CommonParameters
INPUTS
None
OUTPUTS
None
RELATED LINKS
https://psappdeploytoolkit.com
Execute-ProcessAsUser
SYNOPSIS
Execute a process with a logged in user account, by using a scheduled task, to provide
interaction with user in the SYSTEM context.
SYNTAX
EXAMPLES
EXAMPLE 1
Execute process under a user account by specifying a username under which to execute it.
EXAMPLE 2
Execute process under a user account by using the default active logged in user that was
detected when the toolkit was launched.
PARAMETERS
-ContinueOnError
Required: False
Position: 7
Default value: True
Accept pipeline input: False
Accept wildcard characters: False
-Parameters
Type: String
Parameter Sets: (All)
Aliases:
Required: False
Position: 4
Default value: None
Accept pipeline input: False
Accept wildcard characters: False
-PassThru
Returns the exit code from this function or the process launched by the scheduled task.
Type: SwitchParameter
Parameter Sets: (All)
Aliases:
Required: False
Position: Named
Default value: False
Accept pipeline input: False
Accept wildcard characters: False
-Path
Type: String
Parameter Sets: (All)
Aliases:
Required: True
Position: 2
Default value: None
Accept pipeline input: False
Accept wildcard characters: False
-RunLevel
Specifies the level of user rights that Task Scheduler uses to run the task.
The acceptable values for this parameter are:
HighestAvailable: Tasks run by using the highest available privileges (Admin privileges
for Administrators).
Default Value.
LeastPrivilege: Tasks run by using the least-privileged user account (LUA) privileges.
Type: String
Parameter Sets: (All)
Aliases:
Required: False
Position: 5
Default value: HighestAvailable
Accept pipeline input: False
Accept wildcard characters: False
-SecureParameters
Hides all parameters passed to the executable from the Toolkit log file.
Type: SwitchParameter
Parameter Sets: (All)
Aliases:
Required: False
Position: Named
Default value: False
Accept pipeline input: False
Accept wildcard characters: False
-TempPath
Path to the temporary directory used to store the script to be executed as user.
If using a user writable directory, ensure you select -RunLevel 'LeastPrivilege'.
Type: String
Parameter Sets: (All)
Aliases:
Required: False
Position: 3
Default value: None
Accept pipeline input: False
Accept wildcard characters: False
-UserName
Type: String
Parameter Sets: (All)
Aliases:
Required: False
Position: 1
Default value: $RunAsActiveUser.NTAccount
Accept pipeline input: False
Accept wildcard characters: False
-Wait
Wait for the process, launched by the scheduled task, to complete execution before
accepting more input.
Default is $false.
Type: SwitchParameter
Parameter Sets: (All)
Aliases:
Required: False
Position: Named
Default value: False
Accept pipeline input: False
Accept wildcard characters: False
-WorkingDirectory
Type: String
Parameter Sets: (All)
Aliases:
Required: False
Position: 6
Default value: None
Accept pipeline input: False
Accept wildcard characters: False
CommonParameters
OUTPUTS
System.Int32.
Returns the exit code from this function or the process launched by the scheduled task.
RELATED LINKS
https://psappdeploytoolkit.com
Exit-Script
SYNOPSIS
Exit the script, perform cleanup actions, and pass an exit code to the parent process.
SYNTAX
DESCRIPTION
Always use when exiting the script to ensure cleanup actions are performed.
EXAMPLES
EXAMPLE 1
Exit-Script
EXAMPLE 2
PARAMETERS
-ExitCode
The exit code to be passed from the script to the parent process, e.g.
SCCM
Type: Int32
Parameter Sets: (All)
Aliases:
Required: False
Position: 1
Default value: 0
Accept pipeline input: False
Accept wildcard characters: False
CommonParameters
INPUTS
None
OUTPUTS
None
RELATED LINKS
https://psappdeploytoolkit.com
Get-FileVersion
SYNOPSIS
Gets the version of the specified file
SYNTAX
EXAMPLES
EXAMPLE 1
PARAMETERS
-ContinueOnError
Type: Boolean
Parameter Sets: (All)
Aliases:
Required: False
Position: 2
Default value: True
Accept pipeline input: False
Accept wildcard characters: False
-File
Required: True
Position: 1
Default value: None
Accept pipeline input: False
Accept wildcard characters: False
-ProductVersion
Type: SwitchParameter
Parameter Sets: (All)
Aliases:
Required: False
Position: Named
Default value: False
Accept pipeline input: False
Accept wildcard characters: False
CommonParameters
OUTPUTS
System.String
RELATED LINKS
https://psappdeploytoolkit.com
Get-FreeDiskSpace
SYNOPSIS
Retrieves the free disk space in MB on a particular drive (defaults to system drive)
SYNTAX
DESCRIPTION
Retrieves the free disk space in MB on a particular drive (defaults to system drive)
EXAMPLES
EXAMPLE 1
PARAMETERS
-ContinueOnError
Type: Boolean
Parameter Sets: (All)
Aliases:
Required: False
Position: 2
Default value: True
Accept pipeline input: False
Accept wildcard characters: False
-Drive
Required: False
Position: 1
Default value: $envSystemDrive
Accept pipeline input: False
Accept wildcard characters: False
CommonParameters
INPUTS
None
OUTPUTS
System.Double
RELATED LINKS
https://psappdeploytoolkit.com
Get-HardwarePlatform
SYNOPSIS
Retrieves information about the hardware platform (physical or virtual)
SYNTAX
DESCRIPTION
Retrieves information about the hardware platform (physical or virtual)
EXAMPLES
EXAMPLE 1
Get-HardwarePlatform
PARAMETERS
-ContinueOnError
Required: False
Position: 1
Default value: True
Accept pipeline input: False
Accept wildcard characters: False
CommonParameters
INPUTS
None
OUTPUTS
System.String
RELATED LINKS
https://psappdeploytoolkit.com
Get-IniValue
SYNOPSIS
Parses an INI file and returns the value of the specified section and key.
SYNTAX
DESCRIPTION
Parses an INI file and returns the value of the specified section and key.
EXAMPLES
EXAMPLE 1
PARAMETERS
-ContinueOnError
Required: False
Position: 4
Default value: True
Accept pipeline input: False
Accept wildcard characters: False
-FilePath
Type: String
Parameter Sets: (All)
Aliases:
Required: True
Position: 1
Default value: None
Accept pipeline input: False
Accept wildcard characters: False
-Key
Required: True
Position: 3
Default value: None
Accept pipeline input: False
Accept wildcard characters: False
-Section
Type: String
Parameter Sets: (All)
Aliases:
Required: True
Position: 2
Default value: None
Accept pipeline input: False
Accept wildcard characters: False
CommonParameters
OUTPUTS
System.String
RELATED LINKS
https://psappdeploytoolkit.com
Get-InstalledApplication
SYNOPSIS
Retrieves information about installed applications.
SYNTAX
DESCRIPTION
Retrieves information about installed applications by querying the registry.
You can specify an application name, a product code, or both.
Returns information about application publisher, name & version, product code, uninstall
string, install source, location, date, and application architecture.
EXAMPLES
EXAMPLE 1
EXAMPLE 2
PARAMETERS
-Exact
Specifies that the named application must be matched using the exact name.
Type: SwitchParameter
Parameter Sets: (All)
Aliases:
Required: False
Position: Named
Default value: False
Accept pipeline input: False
Accept wildcard characters: False
-IncludeUpdatesAndHotfixes
Required: False
Position: Named
Default value: False
Accept pipeline input: False
Accept wildcard characters: False
-Name
Type: String[]
Parameter Sets: (All)
Aliases:
Required: False
Position: 1
Default value: None
Accept pipeline input: False
Accept wildcard characters: False
-ProductCode
Required: False
Position: 2
Default value: None
Accept pipeline input: False
Accept wildcard characters: False
-RegEx
Specifies that the named application must be matched using a regular expression search.
Type: SwitchParameter
Parameter Sets: (All)
Aliases:
Required: False
Position: Named
Default value: False
Accept pipeline input: False
Accept wildcard characters: False
-WildCard
Specifies that the named application must be matched using a wildcard search.
Type: SwitchParameter
Parameter Sets: (All)
Aliases:
Required: False
Position: Named
Default value: False
Accept pipeline input: False
Accept wildcard characters: False
CommonParameters
INPUTS
None
OUTPUTS
PSObject
Publisher
DisplayName
DisplayVersion
ProductCode
UninstallString
InstallSource
InstallLocation
InstallDate
Architecture
For every detected matching Application the Function puts out a custom Object
containing the following Properties:
RELATED LINKS
https://psappdeploytoolkit.com
Get-LoggedOnUser
SYNOPSIS
Get session details for all local and RDP logged on users.
SYNTAX
Get-LoggedOnUser [<CommonParameters>]
DESCRIPTION
Get session details for all local and RDP logged on users using Win32 APIs.
Get the following session details:
NTAccount, SID, UserName, DomainName, SessionId, SessionName, ConnectState,
IsCurrentSession, IsConsoleSession, IsUserSession, IsActiveUserSession
IsRdpSession, IsLocalAdmin, LogonTime, IdleTime, DisconnectTime, ClientName,
ClientProtocolType, ClientDirectory, ClientBuildNumber
EXAMPLES
EXAMPLE 1
Get-LoggedOnUser
PARAMETERS
CommonParameters
INPUTS
None
OUTPUTS
None
NOTES
Description of ConnectState property:
Value Description
If a console user exists, then that will be the active user session.
If no console user exists but users are logged in, such as on terminal servers, then the
first logged-in non-console user that has ConnectState either 'Active' or 'Connected' is
the active user.
Gets a value indicating whether the user is associated with an RDP client session.
RELATED LINKS
https://psappdeploytoolkit.com
Get-PendingReboot
SYNOPSIS
Get the pending reboot status on a local computer.
SYNTAX
Get-PendingReboot [<CommonParameters>]
DESCRIPTION
Check WMI and the registry to determine if the system has a pending reboot operation
from any of the following:
a) Component Based Servicing (Vista, Windows 2008)
b) Windows Update / Auto Update (XP, Windows 2003 / 2008)
c) SCCM 2012 Clients (DetermineIfRebootPending WMI method)
d) App-V Pending Tasks (global based Appv 5.0 SP2)
e) Pending File Rename Operations (XP, Windows 2003 / 2008)
EXAMPLES
EXAMPLE 1
Get-PendingReboot
ComputerName
LastBootUpTime
IsSystemRebootPending
IsCBServicingRebootPending
IsWindowsUpdateRebootPending
IsSCCMClientRebootPending
IsFileRenameRebootPending
PendingFileRenameOperations
ErrorMsg
EXAMPLE 2
(Get-PendingReboot).IsSystemRebootPending
Returns boolean value determining whether or not there is a pending reboot operation.
PARAMETERS
CommonParameters
INPUTS
None
OUTPUTS
PSObject
ComputerName
LastBootUpTime
IsSystemRebootPending
IsCBServicingRebootPending
IsWindowsUpdateRebootPending
IsSCCMClientRebootPending
IsFileRenameRebootPending
PendingFileRenameOperations
ErrorMsg
NOTES
ErrorMsg only contains something if an error occurred
RELATED LINKS
https://psappdeploytoolkit.com
Get-RegistryKey
SYNOPSIS
Retrieves value names and value data for a specified registry key or optionally, a specific
value.
SYNTAX
DESCRIPTION
Retrieves value names and value data for a specified registry key or optionally, a specific
value.
If the registry key does not exist or contain any values, the function will return $null by
default.
To test for existence of a registry key path, use built-in Test-Path cmdlet.
EXAMPLES
EXAMPLE 1
EXAMPLE 2
EXAMPLE 3
EXAMPLE 4
PARAMETERS
-ContinueOnError
Type: Boolean
Parameter Sets: (All)
Aliases:
Required: False
Position: 4
Default value: True
Accept pipeline input: False
Accept wildcard characters: False
-DoNotExpandEnvironmentNames
Required: False
Position: Named
Default value: False
Accept pipeline input: False
Accept wildcard characters: False
-Key
Type: String
Parameter Sets: (All)
Aliases:
Required: True
Position: 1
Default value: None
Accept pipeline input: False
Accept wildcard characters: False
-ReturnEmptyKeyIfExists
Return the registry key if it exists but it has no property/value pairs underneath it.
Default is: $false.
Type: SwitchParameter
Parameter Sets: (All)
Aliases:
Required: False
Position: Named
Default value: False
Accept pipeline input: False
Accept wildcard characters: False
-SID
Type: String
Parameter Sets: (All)
Aliases:
Required: False
Position: 3
Default value: None
Accept pipeline input: False
Accept wildcard characters: False
-Value
Required: False
Position: 2
Default value: None
Accept pipeline input: False
Accept wildcard characters: False
CommonParameters
INPUTS
None
OUTPUTS
System.String
RELATED LINKS
https://psappdeploytoolkit.com
Get-SchedulerTask
SYNOPSIS
Retrieve all details for scheduled tasks on the local computer.
SYNTAX
DESCRIPTION
Retrieve all details for scheduled tasks on the local computer using schtasks.exe.
All property names have spaces and colons removed.
EXAMPLES
EXAMPLE 1
Get-SchedulerTask
EXAMPLE 2
Get-SchedulerTask | Out-GridView
PARAMETERS
-ContinueOnError
Type: Boolean
Parameter Sets: (All)
Aliases:
Required: False
Position: 2
Default value: True
Accept pipeline input: False
Accept wildcard characters: False
-TaskName
Required: False
Position: 1
Default value: None
Accept pipeline input: False
Accept wildcard characters: False
CommonParameters
INPUTS
None
OUTPUTS
PSOjbect. This function returns a PSObject with all scheduled task properties.
NOTES
This function has an alias: Get-ScheduledTask if Get-ScheduledTask is not defined
RELATED LINKS
https://psappdeploytoolkit.com
Get-ServiceStartMode
SYNOPSIS
Get the service startup mode.
SYNTAX
DESCRIPTION
Get the service startup mode.
EXAMPLES
EXAMPLE 1
PARAMETERS
-ComputerName
Required: False
Position: 2
Default value: $env:ComputerName
Accept pipeline input: False
Accept wildcard characters: False
-ContinueOnError
Type: Boolean
Parameter Sets: (All)
Aliases:
Required: False
Position: 3
Default value: True
Accept pipeline input: False
Accept wildcard characters: False
-Name
Required: True
Position: 1
Default value: None
Accept pipeline input: False
Accept wildcard characters: False
CommonParameters
INPUTS
None
OUTPUTS
System.ServiceProcess.ServiceController.
RELATED LINKS
https://psappdeploytoolkit.com
Get-Shortcut
SYNOPSIS
Get information from a new .lnk or .url type shortcut
SYNTAX
DESCRIPTION
Get information from a new .lnk or .url type shortcut.
Returns a hashtable.
EXAMPLES
EXAMPLE 1
PARAMETERS
-ContinueOnError
Required: False
Position: Named
Default value: True
Accept pipeline input: False
Accept wildcard characters: False
-Path
Type: String
Parameter Sets: (All)
Aliases:
Required: True
Position: 1
Default value: None
Accept pipeline input: False
Accept wildcard characters: False
CommonParameters
OUTPUTS
System.Collections.Hashtable.
TargetPath
Arguments
Description
WorkingDirectory
WindowStyle
Hotkey
IconLocation
IconIndex
RunAsAdmin
NOTES
Url shortcuts only support TargetPath, IconLocation and IconIndex.
RELATED LINKS
https://psappdeploytoolkit.com
Get-UniversalDate
SYNOPSIS
Returns the date/time for the local culture in a universal sortable date time pattern.
SYNTAX
DESCRIPTION
Converts the current datetime or a datetime string for the current culture into a universal
sortable date time pattern, e.g.
2013-08-22 11:51:52Z
EXAMPLES
EXAMPLE 1
Get-UniversalDate
EXAMPLE 2
Returns the date for the current culture in a universal sortable date time pattern.
PARAMETERS
-ContinueOnError
Type: Boolean
Parameter Sets: (All)
Aliases:
Required: False
Position: 2
Default value: False
Accept pipeline input: False
Accept wildcard characters: False
-DateTime
Type: String
Parameter Sets: (All)
Aliases:
Required: False
Position: 1
Default value: ((Get-Date -Format
($culture).DateTimeFormat.UniversalDateTimePattern).ToString())
Accept pipeline input: False
Accept wildcard characters: False
CommonParameters
INPUTS
None
OUTPUTS
System.String
Returns the date/time for the local culture in a universal sortable date time pattern.
RELATED LINKS
https://psappdeploytoolkit.com
Get-UserProfiles
SYNOPSIS
Get the User Profile Path, User Account Sid, and the User Account Name for all users that
log onto the machine and also the Default User (which does not log on).
SYNTAX
Please note that the NTAccount property may be empty for some user profiles but the SID
and ProfilePath properties will always be populated.
EXAMPLES
EXAMPLE 1
Get-UserProfiles
Returns the following properties for each user profile on the system: NTAccount, SID,
ProfilePath
EXAMPLE 2
EXAMPLE 3
Returns the user profile path for each user on the system.
This information can then be used to make modifications under the user profile on the
filesystem.
PARAMETERS
-ExcludeDefaultUser
Type: SwitchParameter
Parameter Sets: (All)
Aliases:
Required: False
Position: Named
Default value: False
Accept pipeline input: False
Accept wildcard characters: False
-ExcludeNTAccount
Specify NT account names in Domain\Username format to exclude from the list of user
profiles.
Type: String[]
Parameter Sets: (All)
Aliases:
Required: False
Position: 1
Default value: None
Accept pipeline input: False
Accept wildcard characters: False
-ExcludeSystemProfiles
Type: Boolean
Parameter Sets: (All)
Aliases:
Required: False
Position: 2
Default value: True
Accept pipeline input: False
Accept wildcard characters: False
CommonParameters
INPUTS
None
OUTPUTS
PSObject. Returns a PSObject with the following properties: NTAccount, SID, ProfilePath
RELATED LINKS
https://psappdeploytoolkit.com
Get-WindowTitle
SYNOPSIS
Search for an open window title and return details about the window.
SYNTAX
SearchWinTitle
GetAllWinTitles
DESCRIPTION
Search for a window title.
If window title searched for returns more than one result, then details for each window
will be displayed.
Function does not work in SYSTEM context unless launched with "psexec.exe -s -i" to run it
as an interactive process under the SYSTEM account.
EXAMPLES
EXAMPLE 1
Gets details for each window that has the words "Microsoft Word" in the title.
EXAMPLE 2
Get-WindowTitle -GetAllWindowTitles
EXAMPLE 3
Get details for all windows belonging to Microsoft Word process with name "WINWORD".
PARAMETERS
-DisableFunctionLogging
Required: False
Position: Named
Default value: False
Accept pipeline input: False
Accept wildcard characters: False
-GetAllWindowTitles
Type: SwitchParameter
Parameter Sets: GetAllWinTitles
Aliases:
Required: True
Position: Named
Default value: False
Accept pipeline input: False
Accept wildcard characters: False
-WindowTitle
The title of the application window to search for using regex matching.
Type: String
Parameter Sets: SearchWinTitle
Aliases:
Required: True
Position: Named
Default value: None
Accept pipeline input: False
Accept wildcard characters: False
CommonParameters
INPUTS
None
OUTPUTS
System.Management.Automation.PSObject
RELATED LINKS
https://psappdeploytoolkit.com
Install-MSUpdates
SYNOPSIS
Install all Microsoft Updates in a given directory.
SYNTAX
DESCRIPTION
Install all Microsoft Updates of type ".exe", ".msu", or ".msp" in a given directory
(recursively search directory).
EXAMPLES
EXAMPLE 1
PARAMETERS
-Directory
Required: True
Position: 1
Default value: None
Accept pipeline input: False
Accept wildcard characters: False
CommonParameters
INPUTS
None
OUTPUTS
None
RELATED LINKS
https://psappdeploytoolkit.com
Install-SCCMSoftwareUpdates
SYNOPSIS
Scans for outstanding SCCM updates to be installed and installs the pending updates.
SYNTAX
DESCRIPTION
Scans for outstanding SCCM updates to be installed and installs the pending updates.
EXAMPLES
EXAMPLE 1
Install-SCCMSoftwareUpdates
PARAMETERS
-ContinueOnError
Required: False
Position: 3
Default value: True
Accept pipeline input: False
Accept wildcard characters: False
-SoftwareUpdatesScanWaitInSeconds
The amount of time to wait in seconds for the software updates scan to complete.
Default is: 180 seconds.
Type: Int32
Parameter Sets: (All)
Aliases:
Required: False
Position: 1
Default value: 180
Accept pipeline input: False
Accept wildcard characters: False
-WaitForPendingUpdatesTimeout
The amount of time to wait for missing and pending updates to install before exiting the
function.
Default is: 45 minutes.
Type: TimeSpan
Parameter Sets: (All)
Aliases:
Required: False
Position: 2
Default value: $(New-TimeSpan -Minutes 45)
Accept pipeline input: False
Accept wildcard characters: False
CommonParameters
INPUTS
None
OUTPUTS
None
RELATED LINKS
https://psappdeploytoolkit.com
Invoke-HKCURegistrySettingsForAllUsers
SYNOPSIS
Set current user registry settings for all current users and any new users in the future.
SYNTAX
DESCRIPTION
Set HKCU registry settings for all current and future users by loading their NTUSER.dat
registry hive file, and making the modifications.
This function will modify HKCU settings for all users even when executed under the
SYSTEM account.
To ensure new users in the future get the registry edits, the Default User registry hive
used to provision the registry for new users is modified.
This function can be used as an alternative to using ActiveSetup for registry settings.
The advantage of using this function over ActiveSetup is that a user does not have to log
off and log back on before the changes take effect.
EXAMPLES
EXAMPLE 1
[ScriptBlock]$HKCURegistrySettings = {
Set-RegistryKey -Key 'HKCU\Software\Microsoft\Office\14.0\Common' -Name 'qmenable' -
Value 0 -Type DWord -SID $UserProfile.SID
PARAMETERS
-RegistrySettings
Script block which contains HKCU registry settings which should be modified for all users
on the system.
Must specify the -SID parameter for all HKCU settings.
Type: ScriptBlock
Parameter Sets: (All)
Aliases:
Required: True
Position: 1
Default value: None
Accept pipeline input: False
Accept wildcard characters: False
-UserProfiles
Required: False
Position: 2
Default value: (Get-UserProfiles)
Accept pipeline input: False
Accept wildcard characters: False
CommonParameters
INPUTS
None
OUTPUTS
None
RELATED LINKS
https://psappdeploytoolkit.com
Invoke-RegisterOrUnregisterDLL
SYNOPSIS
Register or unregister a DLL file.
SYNTAX
DESCRIPTION
Register or unregister a DLL file using regsvr32.exe.
Function can be invoked using alias: 'Register-DLL' or 'Unregister-DLL'.
EXAMPLES
EXAMPLE 1
Register DLL file using the "Register-DLL" alias for this function
EXAMPLE 2
Unregister DLL file using the "Unregister-DLL" alias for this function
EXAMPLE 3
PARAMETERS
-ContinueOnError
Type: Boolean
Parameter Sets: (All)
Aliases:
Required: False
Position: 3
Default value: True
Accept pipeline input: False
Accept wildcard characters: False
-DLLAction
Required: False
Position: 2
Default value: None
Accept pipeline input: False
Accept wildcard characters: False
-FilePath
Type: String
Parameter Sets: (All)
Aliases:
Required: True
Position: 1
Default value: None
Accept pipeline input: False
Accept wildcard characters: False
CommonParameters
OUTPUTS
None
RELATED LINKS
https://psappdeploytoolkit.com
Invoke-SCCMTask
SYNOPSIS
Triggers SCCM to invoke the requested schedule task id.
SYNTAX
DESCRIPTION
Triggers SCCM to invoke the requested schedule task id.
EXAMPLES
EXAMPLE 1
Invoke-SCCMTask 'SoftwareUpdatesScan'
EXAMPLE 2
Invoke-SCCMTask
PARAMETERS
-ContinueOnError
Type: Boolean
Parameter Sets: (All)
Aliases:
Required: False
Position: 2
Default value: True
Accept pipeline input: False
Accept wildcard characters: False
-ScheduleID
Type: String
Parameter Sets: (All)
Aliases:
Required: True
Position: 1
Default value: None
Accept pipeline input: False
Accept wildcard characters: False
CommonParameters
INPUTS
None
RELATED LINKS
https://psappdeploytoolkit.com
New-Folder
SYNOPSIS
Create a new folder.
SYNTAX
DESCRIPTION
Create a new folder if it does not exist.
EXAMPLES
EXAMPLE 1
-ContinueOnError
Type: Boolean
Parameter Sets: (All)
Aliases:
Required: False
Position: 2
Default value: True
Accept pipeline input: False
Accept wildcard characters: False
-Path
Type: String
Parameter Sets: (All)
Aliases:
Required: True
Position: 1
Default value: None
Accept pipeline input: False
Accept wildcard characters: False
CommonParameters
INPUTS
None
OUTPUTS
None
RELATED LINKS
https://psappdeploytoolkit.com
New-MsiTransform
SYNOPSIS
Create a transform file for an MSI database.
SYNTAX
EXAMPLES
EXAMPLE 1
[Hashtable]$TransformProperties = {
'ALLUSERS' = '1'
'AgreeToLicense' = 'Yes'
'REBOOT' = 'ReallySuppress'
'RebootYesNo' = 'No'
'ROOTDRIVE' = 'C:'
}
New-MsiTransform -MsiPath 'C:\Temp\PSADTInstall.msi' -TransformProperties
$TransformProperties
PARAMETERS
-ApplyTransformPath
Specify the path to a transform which should be applied to the MSI database before any
new properties are created or modified.
Type: String
Parameter Sets: (All)
Aliases:
Required: False
Position: 2
Default value: None
Accept pipeline input: False
Accept wildcard characters: False
-ContinueOnError
Type: Boolean
Parameter Sets: (All)
Aliases:
Required: False
Position: 5
Default value: True
Accept pipeline input: False
Accept wildcard characters: False
-MsiPath
Required: True
Position: 1
Default value: None
Accept pipeline input: False
Accept wildcard characters: False
-NewTransformPath
Specify the path where the new transform file with the desired properties will be created.
If a transform file of the same name already exists, it will be deleted before a new one is
created.
Type: String
Parameter Sets: (All)
Aliases:
Required: False
Position: 3
Default value: None
Accept pipeline input: False
Accept wildcard characters: False
-TransformProperties
Hashtable which contains calls to Set-MsiProperty for configuring the desired properties
which should be included in new transform file.
Required: True
Position: 4
Default value: None
Accept pipeline input: False
Accept wildcard characters: False
CommonParameters
INPUTS
None
OUTPUTS
None
RELATED LINKS
https://psappdeploytoolkit.com
New-Shortcut
SYNOPSIS
Creates a new .lnk or .url type shortcut
SYNTAX
DESCRIPTION
Creates a new shortcut .lnk or .url file, with configurable options
EXAMPLES
EXAMPLE 1
PARAMETERS
-Arguments
Required: False
Position: Named
Default value: None
Accept pipeline input: False
Accept wildcard characters: False
-ContinueOnError
Type: Boolean
Parameter Sets: (All)
Aliases:
Required: False
Position: Named
Default value: True
Accept pipeline input: False
Accept wildcard characters: False
-Description
Required: False
Position: Named
Default value: None
Accept pipeline input: False
Accept wildcard characters: False
-Hotkey
Type: String
Parameter Sets: (All)
Aliases:
Required: False
Position: Named
Default value: None
Accept pipeline input: False
Accept wildcard characters: False
-IconIndex
Required: False
Position: Named
Default value: 0
Accept pipeline input: False
Accept wildcard characters: False
-IconLocation
Type: String
Parameter Sets: (All)
Aliases:
Required: False
Position: Named
Default value: None
Accept pipeline input: False
Accept wildcard characters: False
-Path
Required: True
Position: 1
Default value: None
Accept pipeline input: False
Accept wildcard characters: False
-RunAsAdmin
Type: SwitchParameter
Parameter Sets: (All)
Aliases:
Required: False
Position: Named
Default value: False
Accept pipeline input: False
Accept wildcard characters: False
-TargetPath
Required: True
Position: Named
Default value: None
Accept pipeline input: False
Accept wildcard characters: False
-WindowStyle
Type: String
Parameter Sets: (All)
Aliases:
Required: False
Position: Named
Default value: None
Accept pipeline input: False
Accept wildcard characters: False
-WorkingDirectory
Required: False
Position: Named
Default value: None
Accept pipeline input: False
Accept wildcard characters: False
CommonParameters
INPUTS
None
OUTPUTS
None. This function does not return any output.
NOTES
Url shortcuts only support TargetPath, IconLocation and IconIndex.
Other parameters are ignored.
RELATED LINKS
https://psappdeploytoolkit.com
Remove-File
SYNOPSIS
Removes one or more items from a given path on the filesystem.
SYNTAX
Path
LiteralPath
DESCRIPTION
Removes one or more items from a given path on the filesystem.
EXAMPLES
EXAMPLE 1
PARAMETERS
-ContinueOnError
Type: Boolean
Parameter Sets: (All)
Aliases:
Required: False
Position: Named
Default value: True
Accept pipeline input: False
Accept wildcard characters: False
-LiteralPath
Required: True
Position: Named
Default value: None
Accept pipeline input: False
Accept wildcard characters: False
-Path
Type: String[]
Parameter Sets: Path
Aliases:
Required: True
Position: Named
Default value: None
Accept pipeline input: False
Accept wildcard characters: False
-Recurse
Deletes the files in the specified location(s) and in all child items of the location(s).
Type: SwitchParameter
Parameter Sets: (All)
Aliases:
Required: False
Position: Named
Default value: False
Accept pipeline input: False
Accept wildcard characters: False
CommonParameters
INPUTS
None
OUTPUTS
None
RELATED LINKS
https://psappdeploytoolkit.com
Remove-Folder
SYNOPSIS
Remove folder and files if they exist.
SYNTAX
DESCRIPTION
Remove folder and all files with or without recursion in a given path.
EXAMPLES
EXAMPLE 1
Deletes all files and subfolders in the Windows\Downloads Program Files folder
EXAMPLE 2
Deletes all files in the Temp\MyAppCache folder but does not delete any subfolders.
PARAMETERS
-ContinueOnError
Type: Boolean
Parameter Sets: (All)
Aliases:
Required: False
Position: 2
Default value: True
Accept pipeline input: False
Accept wildcard characters: False
-DisableRecursion
Type: SwitchParameter
Parameter Sets: (All)
Aliases:
Required: False
Position: Named
Default value: False
Accept pipeline input: False
Accept wildcard characters: False
-Path
Type: String
Parameter Sets: (All)
Aliases:
Required: True
Position: 1
Default value: None
Accept pipeline input: False
Accept wildcard characters: False
CommonParameters
INPUTS
None
OUTPUTS
None
RELATED LINKS
https://psappdeploytoolkit.com
Remove-InvalidFileNameChars
SYNOPSIS
Remove invalid characters from the supplied string.
SYNTAX
DESCRIPTION
Remove invalid characters from the supplied string and returns a valid filename as a
string.
EXAMPLES
EXAMPLE 1
PARAMETERS
-Name
Required: True
Position: 1
Default value: None
Accept pipeline input: True (ByPropertyName, ByValue)
Accept wildcard characters: False
CommonParameters
INPUTS
System.String
OUTPUTS
System.String
NOTES
This functions always returns a string however it can be empty if the name only contains
invalid characters.
Do no use this command for an entire path as '' is not a valid filename character.
RELATED LINKS
https://psappdeploytoolkit.com
Remove-MSIApplications
SYNOPSIS
Removes all MSI applications matching the specified application name.
SYNTAX
DESCRIPTION
Removes all MSI applications matching the specified application name.
Enumerates the registry for installed applications matching the specified application
name and uninstalls that application using the product code, provided the uninstall string
matches "msiexec".
EXAMPLES
EXAMPLE 1
EXAMPLE 2
EXAMPLE 3
Removes all versions of software that match the name "Java 8 Update" where the software
is 32-bits and the publisher is "Oracle Corporation".
EXAMPLE 4
Removes all versions of software that match the name "Java 8 Update" and also have
"Oracle Corporation" as the Publisher; however, it does not uninstall "Java 8 Update 45" of
the software.
NOTE: If only specifying a single row in the two-dimensional arrays, the array must have
the extra parentheses and leading comma as in this example.
EXAMPLE 5
Removes all versions of software that match the name "Java 8 Update"; however, it does
not uninstall "Java 8 Update 45" of the software.
NOTE: If only specifying a single row in the two-dimensional array, the array must have
the extra parentheses and leading comma as in this example.
EXAMPLE 6
Removes all versions of software that match the name "Java 8 Update"; however, it does
not uninstall 64-bit versions of the software, Update 45 of the software, or any Update
that starts with 4.
PARAMETERS
-AddParameters
Required: False
Position: 3
Default value: None
Accept pipeline input: False
Accept wildcard characters: False
-ContinueOnError
Type: Boolean
Parameter Sets: (All)
Aliases:
Required: False
Position: 8
Default value: True
Accept pipeline input: False
Accept wildcard characters: False
-Exact
Specifies that the named application must be matched using the exact name.
Type: SwitchParameter
Parameter Sets: (All)
Aliases:
Required: False
Position: Named
Default value: False
Accept pipeline input: False
Accept wildcard characters: False
-ExcludeFromUninstall
Two-dimensional array that contains one or more (property, value, match-type) sets that
should be excluded from uninstall if found.
Properties that can be excluded: ProductCode, DisplayName, DisplayVersion,
UninstallString, InstallSource, InstallLocation, InstallDate, Publisher, Is64BitApplication
Type: Array
Parameter Sets: (All)
Aliases:
Required: False
Position: 5
Default value: @(@())
Accept pipeline input: False
Accept wildcard characters: False
-FilterApplication
Two-dimensional array that contains one or more (property, value, match-type) sets that
should be used to filter the list of results returned by Get-InstalledApplication to only
those that should be uninstalled.
Properties that can be filtered upon: ProductCode, DisplayName, DisplayVersion,
UninstallString, InstallSource, InstallLocation, InstallDate, Publisher, Is64BitApplication
Type: Array
Parameter Sets: (All)
Aliases:
Required: False
Position: 4
Default value: @(@())
Accept pipeline input: False
Accept wildcard characters: False
-IncludeUpdatesAndHotfixes
Type: SwitchParameter
Parameter Sets: (All)
Aliases:
Required: False
Position: Named
Default value: False
Accept pipeline input: False
Accept wildcard characters: False
-LoggingOptions
Overrides the default logging options specified in the XML configuration file.
Default options are: "/L*v".
Type: String
Parameter Sets: (All)
Aliases:
Required: False
Position: 6
Default value: None
Accept pipeline input: False
Accept wildcard characters: False
-Name
Type: String
Parameter Sets: (All)
Aliases:
Required: True
Position: 1
Default value: None
Accept pipeline input: False
Accept wildcard characters: False
-Parameters
Required: False
Position: 2
Default value: None
Accept pipeline input: False
Accept wildcard characters: False
-PassThru
Type: SwitchParameter
Parameter Sets: (All)
Aliases:
Required: False
Position: Named
Default value: False
Accept pipeline input: False
Accept wildcard characters: False
-private:LogName
Type: String
Parameter Sets: (All)
Aliases: LogName
Required: False
Position: 7
Default value: None
Accept pipeline input: False
Accept wildcard characters: False
-WildCard
Specifies that the named application must be matched using a wildcard search.
Type: SwitchParameter
Parameter Sets: (All)
Aliases:
Required: False
Position: Named
Default value: False
Accept pipeline input: False
Accept wildcard characters: False
CommonParameters
OUTPUTS
PSObject
ExitCode
StdOut
StdErr
NOTES
More reading on how to create arrays if having trouble with -FilterApplication or -
ExcludeFromUninstall parameter: http://blogs.msdn.com/b/powershell/archive/2007/01/2
3/array-literals-in-powershell.aspx
RELATED LINKS
https://psappdeploytoolkit.com
Remove-RegistryKey
SYNOPSIS
Deletes the specified registry key or value.
SYNTAX
EXAMPLES
EXAMPLE 1
Remove-RegistryKey -Key
'HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\RunOnce'
EXAMPLE 2
EXAMPLE 3
PARAMETERS
-ContinueOnError
Required: False
Position: 4
Default value: True
Accept pipeline input: False
Accept wildcard characters: False
-Key
Type: String
Parameter Sets: (All)
Aliases:
Required: True
Position: 1
Default value: None
Accept pipeline input: False
Accept wildcard characters: False
-Name
Required: False
Position: 2
Default value: None
Accept pipeline input: False
Accept wildcard characters: False
-Recurse
Type: SwitchParameter
Parameter Sets: (All)
Aliases:
Required: False
Position: Named
Default value: False
Accept pipeline input: False
Accept wildcard characters: False
-SID
Required: False
Position: 3
Default value: None
Accept pipeline input: False
Accept wildcard characters: False
CommonParameters
INPUTS
None
OUTPUTS
None
RELATED LINKS
https://psappdeploytoolkit.com
Resolve-Error
SYNOPSIS
Enumerate error record details.
SYNTAX
DESCRIPTION
Enumerate an error record, or a collection of error record, properties.
By default, the details for the last error will be enumerated.
EXAMPLES
EXAMPLE 1
Resolve-Error
EXAMPLE 2
Resolve-Error -Property *
EXAMPLE 3
EXAMPLE 4
Resolve-Error -GetErrorInvocation:$false
PARAMETERS
-ErrorRecord
Type: Array
Parameter Sets: (All)
Aliases:
Required: False
Position: 1
Default value: None
Accept pipeline input: True (ByPropertyName, ByValue)
Accept wildcard characters: False
-GetErrorException
Required: False
Position: 5
Default value: True
Accept pipeline input: False
Accept wildcard characters: False
-GetErrorInnerException
Type: SwitchParameter
Parameter Sets: (All)
Aliases:
Required: False
Position: 6
Default value: True
Accept pipeline input: False
Accept wildcard characters: False
-GetErrorInvocation
Required: False
Position: 4
Default value: True
Accept pipeline input: False
Accept wildcard characters: False
-GetErrorRecord
Type: SwitchParameter
Parameter Sets: (All)
Aliases:
Required: False
Position: 3
Default value: True
Accept pipeline input: False
Accept wildcard characters: False
-Property
Required: False
Position: 2
Default value: ('Message', 'InnerException', 'FullyQualifiedErrorId',
'ScriptStackTrace', 'PositionMessage')
Accept pipeline input: False
Accept wildcard characters: False
CommonParameters
INPUTS
System.Array.
OUTPUTS
System.String
RELATED LINKS
https://psappdeploytoolkit.com
Send-Keys
SYNOPSIS
Send a sequence of keys to one or more application windows.
SYNTAX
DESCRIPTION
Send a sequence of keys to one or more application window.
If window title searched for returns more than one window, then all of them will receive
the sent keys.
Function does not work in SYSTEM context unless launched with "psexec.exe -s -i" to run it
as an interactive process under the SYSTEM account.
EXAMPLES
EXAMPLE 1
Send the sequence of keys "Hello world" to the application titled "foobar - Notepad".
EXAMPLE 2
EXAMPLE 3
Send the sequence of keys "Hello world" to the application with a Window Handle of
'17368294'.
PARAMETERS
-GetAllWindowTitles
Type: SwitchParameter
Parameter Sets: (All)
Aliases:
Required: False
Position: 2
Default value: False
Accept pipeline input: False
Accept wildcard characters: False
-Keys
Required: False
Position: 4
Default value: None
Accept pipeline input: False
Accept wildcard characters: False
-WaitSeconds
Type: Int32
Parameter Sets: (All)
Aliases:
Required: False
Position: 5
Default value: 0
Accept pipeline input: False
Accept wildcard characters: False
-WindowHandle
Send keys to a specific window where the Window Handle is already known.
Type: IntPtr
Parameter Sets: (All)
Aliases:
Required: False
Position: 3
Default value: None
Accept pipeline input: False
Accept wildcard characters: False
-WindowTitle
The title of the application window to search for using regex matching.
Type: String
Parameter Sets: (All)
Aliases:
Required: False
Position: 1
Default value: None
Accept pipeline input: False
Accept wildcard characters: False
CommonParameters
OUTPUTS
None
RELATED LINKS
[http://msdn.microsoft.com/en-us/library/System.Windows.Forms.SendKeys(v=vs.100).asp
x
https://psappdeploytoolkit.com](http://msdn.microsoft.com/en-us/library/System.Window
s.Forms.SendKeys(v=vs.100).aspx
https://psappdeploytoolkit.com)
Set-ActiveSetup
SYNOPSIS
Creates an Active Setup entry in the registry to execute a file for each user upon login.
SYNTAX
Create
DESCRIPTION
Active Setup allows handling of per-user changes registry/file changes upon login.
A registry key is created in the HKLM registry hive which gets replicated to the HKCU hive
when a user logs in.
If the "Version" value of the Active Setup entry in HKLM is higher than the version value in
HKCU, the file referenced in "StubPath" is executed.
This Function:
- Creates the registry entries in HKLM:SOFTWARE\Microsoft\Active Setup\Installed
Components$installName.
- Creates StubPath value depending on the file extension of the $StubExePath
parameter.
- Handles Version value with YYYYMMDDHHMMSS granularity to permit re-installs on
the same day and still trigger Active Setup after Version increase.
- Copies/overwrites the StubPath file to $StubExePath destination path if file exists in
'Files' subdirectory of script directory.
- Executes the StubPath file for the current user based on $ExecuteForCurrentUser (no
need to logout/login to trigger Active Setup).
EXAMPLES
EXAMPLE 1
EXAMPLE 3
PARAMETERS
-Arguments
Type: String
Parameter Sets: Create
Aliases:
Required: False
Position: Named
Default value: None
Accept pipeline input: False
Accept wildcard characters: False
-ContinueOnError
Type: Boolean
Parameter Sets: (All)
Aliases:
Required: False
Position: Named
Default value: True
Accept pipeline input: False
Accept wildcard characters: False
-Description
Type: String
Parameter Sets: Create
Aliases:
Required: False
Position: Named
Default value: $installName
Accept pipeline input: False
Accept wildcard characters: False
-DisableActiveSetup
Disables the Active Setup entry so that the StubPath file will not be executed.
This also disables -ExecuteForCurrentUser
Type: SwitchParameter
Parameter Sets: Create
Aliases:
Required: False
Position: Named
Default value: False
Accept pipeline input: False
Accept wildcard characters: False
-ExecuteForCurrentUser
Specifies whether the StubExePath should be executed for the current user.
Since this user is already logged in, the user won't have the application started without
logging out and logging back in.
Default: $true
Type: Boolean
Parameter Sets: Create
Aliases:
Required: False
Position: Named
Default value: True
Accept pipeline input: False
Accept wildcard characters: False
-Key
Type: String
Parameter Sets: (All)
Aliases:
Required: False
Position: Named
Default value: $installName
Accept pipeline input: False
Accept wildcard characters: False
-Locale
Optional.
Arbitrary string used to specify the installation language of the file being executed.
Not replicated to HKCU.
Type: String
Parameter Sets: Create
Aliases:
Required: False
Position: Named
Default value: None
Accept pipeline input: False
Accept wildcard characters: False
-PurgeActiveSetupKey
Type: SwitchParameter
Parameter Sets: Purge
Aliases:
Required: True
Position: Named
Default value: False
Accept pipeline input: False
Accept wildcard characters: False
-StubExePath
Full destination path to the file that will be executed for each user that logs in.
If this file exists in the 'Files' subdirectory of the script directory, it will be copied to the
destination path.
Type: String
Parameter Sets: Create
Aliases:
Required: True
Position: Named
Default value: None
Accept pipeline input: False
Accept wildcard characters: False
-Version
Optional.
Specify version for Active setup entry.
Active Setup is not triggered if Version value has more than 8 consecutive digits.
Use commas to get around this limitation.
Default: YYYYMMDDHHMMSS
Type: String
Parameter Sets: Create
Aliases:
Required: False
Position: Named
Default value: ((Get-Date -Format 'yyMM,ddHH,mmss').ToString())
Accept pipeline input: False
Accept wildcard characters: False
CommonParameters
INPUTS
None
OUTPUTS
System.Boolean
Returns $true if Active Setup entry was created or updated, $false if Active Setup entry
was not created or updated.
NOTES
Original code borrowed from: Denis St-Pierre (Ottawa, Canada), Todd MacNaught (Ottawa,
Canada)
RELATED LINKS
https://psappdeploytoolkit.com
Set-IniValue
SYNOPSIS
Opens an INI file and sets the value of the specified section and key.
SYNTAX
DESCRIPTION
Opens an INI file and sets the value of the specified section and key.
EXAMPLES
EXAMPLE 1
-ContinueOnError
Type: Boolean
Parameter Sets: (All)
Aliases:
Required: False
Position: 5
Default value: True
Accept pipeline input: False
Accept wildcard characters: False
-FilePath
Type: String
Parameter Sets: (All)
Aliases:
Required: True
Position: 1
Default value: None
Accept pipeline input: False
Accept wildcard characters: False
-Key
Type: String
Parameter Sets: (All)
Aliases:
Required: True
Position: 3
Default value: None
Accept pipeline input: False
Accept wildcard characters: False
-Section
Type: String
Parameter Sets: (All)
Aliases:
Required: True
Position: 2
Default value: None
Accept pipeline input: False
Accept wildcard characters: False
-Value
Value for the key within the section of the INI file.
To remove a value, set this variable to $null.
Type: Object
Parameter Sets: (All)
Aliases:
Required: True
Position: 4
Default value: None
Accept pipeline input: False
Accept wildcard characters: False
CommonParameters
INPUTS
None
OUTPUTS
None
RELATED LINKS
https://psappdeploytoolkit.com
Set-ItemPermission
SYNOPSIS
Allow you to easily change permissions on files or folders
SYNTAX
EnableInheritance
DisableInheritance
EXAMPLES
EXAMPLE 1
Will grant FullControl permissions to 'John' and 'Users' on 'C:\Temp' and its files
and folders children.
EXAMPLE 3
PARAMETERS
-EnableInheritance
Type: SwitchParameter
Parameter Sets: EnableInheritance
Aliases:
Required: True
Position: 2
Default value: False
Accept pipeline input: False
Accept wildcard characters: False
-Inheritance
None - The permission entry is not inherited by child objects, ObjectInherit - The
permission entry is inherited by child leaf objects.
ContainerInherit - The permission entry is inherited by child container objects.
Type: String[]
Parameter Sets: DisableInheritance
Aliases:
Required: False
Position: 5
Default value: None
Accept pipeline input: False
Accept wildcard characters: False
-Method
Add - adds permissions rules but it does not remove previous permissions, Set -
overwrites matching permission rules with new ones, Reset - removes matching
permissions rules and then adds permission rules, Remove - Removes matching
permission rules, RemoveSpecific - Removes specific permissions, RemoveAll - Removes all
permission rules for specified user/s
Default: Add
Type: String
Parameter Sets: DisableInheritance
Aliases: ApplyMethod, ApplicationMethod
Required: False
Position: 7
Default value: Add
Accept pipeline input: False
Accept wildcard characters: False
-Path
Type: String
Parameter Sets: (All)
Aliases: File, Folder
Required: True
Position: 1
Default value: None
Accept pipeline input: False
Accept wildcard characters: False
-Permission
Required: True
Position: 3
Default value: None
Accept pipeline input: False
Accept wildcard characters: False
-PermissionType
Type: String
Parameter Sets: DisableInheritance
Aliases: AccessControlType
Required: False
Position: 4
Default value: Allow
Accept pipeline input: False
Accept wildcard characters: False
-Propagation
Required: False
Position: 6
Default value: None
Accept pipeline input: False
Accept wildcard characters: False
-User
One or more user names (ex: BUILTIN\Users, DOMAIN\Admin) to give the permissions to.
If you want to use SID, prefix it with an asterisk * (ex: *S-1-5-18)
Type: String[]
Parameter Sets: DisableInheritance
Aliases: Username, Users, SID, Usernames
Required: True
Position: 2
Default value: None
Accept pipeline input: False
Accept wildcard characters: False
CommonParameters
OUTPUTS
None
NOTES
Original Author: Julian DA CUNHA - [email protected], used with permission
RELATED LINKS
https://psappdeploytoolkit.com
Set-PinnedApplication
SYNOPSIS
Pins or unpins a shortcut to the start menu or task bar.
SYNTAX
DESCRIPTION
Pins or unpins a shortcut to the start menu or task bar.
This should typically be run in the user context, as pinned items are stored in the user
profile.
EXAMPLES
EXAMPLE 1
EXAMPLE 2
PARAMETERS
-Action
Action to be performed.
Options: 'PinToStartMenu','UnpinFromStartMenu','PinToTaskbar','UnpinFromTaskbar'.
Type: String
Parameter Sets: (All)
Aliases:
Required: True
Position: 1
Default value: None
Accept pipeline input: False
Accept wildcard characters: False
-FilePath
Type: String
Parameter Sets: (All)
Aliases:
Required: True
Position: 2
Default value: None
Accept pipeline input: False
Accept wildcard characters: False
CommonParameters
INPUTS
None
OUTPUTS
None
NOTES
Windows 10 logic borrowed from Stuart Pearson (https://pinto10blog.wordpress.com/201
6/09/10/pinto10/)
RELATED LINKS
https://psappdeploytoolkit.com
Set-RegistryKey
SYNOPSIS
Creates a registry key name, value, and value data; it sets the same if it already exists.
SYNTAX
DESCRIPTION
Creates a registry key name, value, and value data; it sets the same if it already exists.
EXAMPLES
EXAMPLE 1
EXAMPLE 2
Set-RegistryKey -Key
'HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\RunOnce' -Name
'Debugger' -Value $blockedAppDebuggerValue -Type String
EXAMPLE 4
EXAMPLE 5
PARAMETERS
-ContinueOnError
Required: False
Position: 6
Default value: True
Accept pipeline input: False
Accept wildcard characters: False
-Key
Type: String
Parameter Sets: (All)
Aliases:
Required: True
Position: 1
Default value: None
Accept pipeline input: False
Accept wildcard characters: False
-Name
Required: False
Position: 2
Default value: None
Accept pipeline input: False
Accept wildcard characters: False
-SID
Type: String
Parameter Sets: (All)
Aliases:
Required: False
Position: 5
Default value: None
Accept pipeline input: False
Accept wildcard characters: False
-Type
Required: False
Position: 4
Default value: String
Accept pipeline input: False
Accept wildcard characters: False
-Value
Type: Object
Parameter Sets: (All)
Aliases:
Required: False
Position: 3
Default value: None
Accept pipeline input: False
Accept wildcard characters: False
CommonParameters
OUTPUTS
None
RELATED LINKS
https://psappdeploytoolkit.com
Set-ServiceStartMode
SYNOPSIS
Set the service startup mode.
SYNTAX
DESCRIPTION
Set the service startup mode.
EXAMPLES
EXAMPLE 1
PARAMETERS
-ComputerName
Type: String
Parameter Sets: (All)
Aliases:
Required: False
Position: 2
Default value: $env:ComputerName
Accept pipeline input: False
Accept wildcard characters: False
-ContinueOnError
Required: False
Position: 4
Default value: True
Accept pipeline input: False
Accept wildcard characters: False
-Name
Type: String
Parameter Sets: (All)
Aliases:
Required: True
Position: 1
Default value: None
Accept pipeline input: False
Accept wildcard characters: False
-StartMode
Required: True
Position: 3
Default value: None
Accept pipeline input: False
Accept wildcard characters: False
CommonParameters
INPUTS
None
OUTPUTS
None
RELATED LINKS
https://psappdeploytoolkit.com
Set-Shortcut
SYNOPSIS
Modifies a .lnk or .url type shortcut
SYNTAX
Default (Default)
Pipeline
DESCRIPTION
Modifies a shortcut - .lnk or .url file, with configurable options.
EXAMPLE 1
PARAMETERS
-Arguments
Type: String
Parameter Sets: (All)
Aliases:
Required: False
Position: Named
Default value: None
Accept pipeline input: False
Accept wildcard characters: False
-ContinueOnError
Required: False
Position: Named
Default value: True
Accept pipeline input: False
Accept wildcard characters: False
-Description
Type: String
Parameter Sets: (All)
Aliases:
Required: False
Position: Named
Default value: None
Accept pipeline input: False
Accept wildcard characters: False
-Hotkey
Required: False
Position: Named
Default value: None
Accept pipeline input: False
Accept wildcard characters: False
-IconIndex
Type: String
Parameter Sets: (All)
Aliases:
Required: False
Position: Named
Default value: None
Accept pipeline input: False
Accept wildcard characters: False
-IconLocation
Required: False
Position: Named
Default value: None
Accept pipeline input: False
Accept wildcard characters: False
-Path
Type: String
Parameter Sets: Default
Aliases:
Required: True
Position: 1
Default value: None
Accept pipeline input: True (ByValue)
Accept wildcard characters: False
-PathHash
Type: Hashtable
Parameter Sets: Pipeline
Aliases:
Required: True
Position: 1
Default value: None
Accept pipeline input: True (ByValue)
Accept wildcard characters: False
-RunAsAdmin
Type: Boolean
Parameter Sets: (All)
Aliases:
Required: False
Position: Named
Default value: None
Accept pipeline input: False
Accept wildcard characters: False
-TargetPath
Required: False
Position: Named
Default value: None
Accept pipeline input: False
Accept wildcard characters: False
-WindowStyle
Type: String
Parameter Sets: (All)
Aliases:
Required: False
Position: Named
Default value: DontChange
Accept pipeline input: False
Accept wildcard characters: False
-WorkingDirectory
Required: False
Position: Named
Default value: None
Accept pipeline input: False
Accept wildcard characters: False
CommonParameters
INPUTS
PSOjbect
OUTPUTS
None
NOTES
Url shortcuts only support TargetPath, IconLocation and IconIndex.
Other parameters are ignored.
RELATED LINKS
https://psappdeploytoolkit.com
Show-BalloonTip
SYNOPSIS
Displays a balloon tip notification in the system tray.
SYNTAX
DESCRIPTION
Displays a balloon tip notification in the system tray.
EXAMPLES
EXAMPLE 1
EXAMPLE 2
-BalloonTipIcon
Icon to be used.
Options: 'Error', 'Info', 'None', 'Warning'.
Default is: Info.
Type: ToolTipIcon
Parameter Sets: (All)
Aliases:
Accepted values: None, Info, Warning, Error
Required: False
Position: 3
Default value: Info
Accept pipeline input: False
Accept wildcard characters: False
-BalloonTipText
Type: String
Parameter Sets: (All)
Aliases:
Required: True
Position: 1
Default value: None
Accept pipeline input: False
Accept wildcard characters: False
-BalloonTipTime
Type: Int32
Parameter Sets: (All)
Aliases:
Required: False
Position: 4
Default value: 10000
Accept pipeline input: False
Accept wildcard characters: False
-BalloonTipTitle
Type: String
Parameter Sets: (All)
Aliases:
Required: False
Position: 2
Default value: $installTitle
Accept pipeline input: False
Accept wildcard characters: False
-NoWait
Required: False
Position: 5
Default value: False
Accept pipeline input: False
Accept wildcard characters: False
CommonParameters
INPUTS
None
OUTPUTS
System.String
NOTES
For Windows 10 OS and above a Toast notification is displayed in place of a balloon tip if
toast notifications are enabled in the XML config file.
RELATED LINKS
https://psappdeploytoolkit.com
Show-DialogBox
SYNOPSIS
Display a custom dialog box with optional title, buttons, icon and timeout.
SYNTAX
DESCRIPTION
Display a custom dialog box with optional title, buttons, icon and timeout.
The default button is "OK", the default Icon is "None", and the default Timeout is None
EXAMPLES
EXAMPLE 1
PARAMETERS
-Buttons
Type: String
Parameter Sets: (All)
Aliases:
Required: False
Position: Named
Default value: OK
Accept pipeline input: False
Accept wildcard characters: False
-DefaultButton
Required: False
Position: Named
Default value: First
Accept pipeline input: False
Accept wildcard characters: False
-Icon
Type: String
Parameter Sets: (All)
Aliases:
Required: False
Position: Named
Default value: None
Accept pipeline input: False
Accept wildcard characters: False
-Text
Required: True
Position: 1
Default value: None
Accept pipeline input: False
Accept wildcard characters: False
-Timeout
Timeout period in seconds before automatically closing the dialog box with the return
message "Timeout".
Default: UI timeout value set in the config XML file.
Type: String
Parameter Sets: (All)
Aliases:
Required: False
Position: Named
Default value: $configInstallationUITimeout
Accept pipeline input: False
Accept wildcard characters: False
-Title
Required: False
Position: Named
Default value: $installTitle
Accept pipeline input: False
Accept wildcard characters: False
-TopMost
Specifies whether the message box is a system modal message box and appears in a
topmost window.
Default: $true.
Type: Boolean
Parameter Sets: (All)
Aliases:
Required: False
Position: Named
Default value: True
Accept pipeline input: False
Accept wildcard characters: False
CommonParameters
OUTPUTS
System.String
RELATED LINKS
https://psappdeploytoolkit.com
Show-InstallationProgress
SYNOPSIS
Displays a progress dialog in a separate thread with an updateable custom message.
SYNTAX
DESCRIPTION
Create a WPF window in a separate thread to display a marquee style progress ellipse with
a custom message that can be updated.
EXAMPLES
EXAMPLE 1
Show-InstallationProgress
Uses the default status message from the XML configuration file.
EXAMPLE 2
EXAMPLE 3
EXAMPLE 4
-StatusMessage
Type: String
Parameter Sets: (All)
Aliases:
Required: False
Position: 1
Default value: $configProgressMessageInstall
Accept pipeline input: False
Accept wildcard characters: False
-TopMost
Type: Boolean
Parameter Sets: (All)
Aliases:
Required: False
Position: 3
Default value: True
Accept pipeline input: False
Accept wildcard characters: False
-WindowLocation
Type: String
Parameter Sets: (All)
Aliases:
Required: False
Position: 2
Default value: Default
Accept pipeline input: False
Accept wildcard characters: False
CommonParameters
INPUTS
None
OUTPUTS
None
Show-InstallationPrompt
SYNOPSIS
Displays a custom installation prompt with the toolkit branding and optional buttons.
SYNTAX
DESCRIPTION
Any combination of Left, Middle or Right buttons can be displayed.
The return value of the button clicked by the user is the button text specified.
EXAMPLES
EXAMPLE 1
Show-InstallationPrompt -Title 'Funny Prompt' -Message 'How are you feeling today?'
-ButtonRightText 'Good' -ButtonLeftText 'Bad' -ButtonMiddleText 'Indifferent'
EXAMPLE 3
PARAMETERS
-ButtonLeftText
Show a button on the left of the prompt with the specified text
Type: String
Parameter Sets: (All)
Aliases:
Required: False
Position: 5
Default value: None
Accept pipeline input: False
Accept wildcard characters: False
-ButtonMiddleText
Show a button in the middle of the prompt with the specified text
Type: String
Parameter Sets: (All)
Aliases:
Required: False
Position: 6
Default value: None
Accept pipeline input: False
Accept wildcard characters: False
-ButtonRightText
Show a button on the right of the prompt with the specified text
Type: String
Parameter Sets: (All)
Aliases:
Required: False
Position: 4
Default value: None
Accept pipeline input: False
Accept wildcard characters: False
-ExitOnTimeout
Required: False
Position: 10
Default value: True
Accept pipeline input: False
Accept wildcard characters: False
-Icon
Type: String
Parameter Sets: (All)
Aliases:
Required: False
Position: 7
Default value: None
Accept pipeline input: False
Accept wildcard characters: False
-Message
Required: False
Position: 2
Default value: None
Accept pipeline input: False
Accept wildcard characters: False
-MessageAlignment
Type: String
Parameter Sets: (All)
Aliases:
Required: False
Position: 3
Default value: Center
Accept pipeline input: False
Accept wildcard characters: False
-MinimizeWindows
Required: False
Position: 8
Default value: False
Accept pipeline input: False
Accept wildcard characters: False
-NoWait
Type: SwitchParameter
Parameter Sets: (All)
Aliases:
Required: False
Position: Named
Default value: False
Accept pipeline input: False
Accept wildcard characters: False
-PersistPrompt
Specify whether to make the prompt persist in the center of the screen every couple of
seconds, specified in the AppDeployToolkitConfig.xml.
The user will have no option but to respond to the prompt - resistance is futile!
Type: SwitchParameter
Parameter Sets: (All)
Aliases:
Required: False
Position: Named
Default value: False
Accept pipeline input: False
Accept wildcard characters: False
-Timeout
Specifies the time period in seconds after which the prompt should timeout.
Default: UI timeout value set in the config XML file.
Type: Int32
Parameter Sets: (All)
Aliases:
Required: False
Position: 9
Default value: $configInstallationUITimeout
Accept pipeline input: False
Accept wildcard characters: False
-Title
Required: False
Position: 1
Default value: $installTitle
Accept pipeline input: False
Accept wildcard characters: False
-TopMost
Type: Boolean
Parameter Sets: (All)
Aliases:
Required: False
Position: 11
Default value: True
Accept pipeline input: False
Accept wildcard characters: False
CommonParameters
OUTPUTS
None
RELATED LINKS
https://psappdeploytoolkit.com
Show-InstallationRestartPrompt
SYNOPSIS
Displays a restart prompt with a countdown to a forced restart.
SYNTAX
DESCRIPTION
Displays a restart prompt with a countdown to a forced restart.
EXAMPLES
EXAMPLE 1
EXAMPLE 2
Show-InstallationRestartPrompt -NoCountdown
EXAMPLE 3
PARAMETERS
-CountdownNoHideSeconds
Specifies the number of seconds to display the restart prompt without allowing the
window to be hidden.
Default: 30
Type: Int32
Parameter Sets: (All)
Aliases:
Required: False
Position: 2
Default value: 30
Accept pipeline input: False
Accept wildcard characters: False
-CountdownSeconds
Type: Int32
Parameter Sets: (All)
Aliases:
Required: False
Position: 1
Default value: 60
Accept pipeline input: False
Accept wildcard characters: False
-NoCountdown
The UI will restore/reposition itself persistently based on the interval value specified in the
config file.
Type: SwitchParameter
Parameter Sets: (All)
Aliases:
Required: False
Position: Named
Default value: False
Accept pipeline input: False
Accept wildcard characters: False
-NoSilentRestart
Specifies whether the restart should be triggered when Deploy mode is silent or very
silent.
Default: $true
Type: Boolean
Parameter Sets: (All)
Aliases:
Required: False
Position: 3
Default value: True
Accept pipeline input: False
Accept wildcard characters: False
-SilentCountdownSeconds
Specifies number of seconds to countdown for the restart when the toolkit is running in
silent mode and NoSilentRestart is $false.
Default: 5
Type: Int32
Parameter Sets: (All)
Aliases:
Required: False
Position: 4
Default value: 5
Accept pipeline input: False
Accept wildcard characters: False
-TopMost
Type: Boolean
Parameter Sets: (All)
Aliases:
Required: False
Position: 5
Default value: True
Accept pipeline input: False
Accept wildcard characters: False
CommonParameters
OUTPUTS
System.String
NOTES
Be mindful of the countdown you specify for the reboot as code directly after this function
might NOT be able to execute - that includes logging.
RELATED LINKS
https://psappdeploytoolkit.com
Show-InstallationWelcome
SYNOPSIS
Show a welcome dialog prompting the user with information about the installation and
actions to be performed before the installation can begin.
SYNTAX
None (Default)
CheckDiskSpaceParameterSet
DESCRIPTION
The following prompts can be included in the welcome dialog:
a) Close the specified running applications, or optionally close the applications without
showing a prompt (using the -Silent switch).
b) Defer the installation a certain number of times, for a certain number of days or until
a deadline is reached.
c) Countdown until applications are automatically closed.
d) Prevent users from launching the specified applications while the installation is in
progress.
Notes:
The process descriptions are retrieved from WMI, with a fall back on the process name if
no description is available.
Alternatively, you can specify the description yourself with a '=' symbol - see examples.
The dialog box will timeout after the timeout specified in the XML configuration file
(default 1 hour and 55 minutes) to prevent SCCM installations from timing out and
returning a failure code to SCCM.
When the dialog times out, the script will exit and return a 1618 code (SCCM fast retry
code).
EXAMPLES
EXAMPLE 1
EXAMPLE 2
EXAMPLE 3
Close Word and Excel and prevent the user from launching the applications while the
installation is in progress.
EXAMPLE 4
Prompt the user to close Word and Excel, with customized descriptions for the
applications and automatically close the applications after 10 minutes.
EXAMPLE 5
By using the PersistPrompt switch, the dialog will return to the center of the screen every
couple of seconds, specified in the AppDeployToolkitConfig.xml, so the user cannot ignore
it by dragging it aside.
EXAMPLE 6
Allow the user to defer the installation until the deadline is reached.
EXAMPLE 7
Close Word and Excel and prevent the user from launching the applications while the
installation is in progress.
Allow the user to defer the installation a maximum of 10 times or until the deadline is
reached, whichever happens first.
When deferral expires, prompt the user to close the applications and automatically close
them after 10 minutes.
PARAMETERS
-AllowDefer
Enables an optional defer button to allow the user to defer the installation.
Type: SwitchParameter
Parameter Sets: (All)
Aliases:
Required: False
Position: Named
Default value: False
Accept pipeline input: False
Accept wildcard characters: False
-AllowDeferCloseApps
Enables an optional defer button to allow the user to defer the installation only if there
are running applications that need to be closed.
This parameter automatically enables -AllowDefer
Type: SwitchParameter
Parameter Sets: (All)
Aliases:
Required: False
Position: Named
Default value: False
Accept pipeline input: False
Accept wildcard characters: False
-BlockExecution
Type: SwitchParameter
Parameter Sets: (All)
Aliases:
Required: False
Position: Named
Default value: False
Accept pipeline input: False
Accept wildcard characters: False
-CheckDiskSpace
Specify whether to check if there is enough disk space for the installation to proceed.
If this parameter is specified without the RequiredDiskSpace parameter, the required disk
space is calculated automatically based on the size of the script source and associated
files.
Type: SwitchParameter
Parameter Sets: CheckDiskSpaceParameterSet
Aliases:
Required: True
Position: Named
Default value: False
Accept pipeline input: False
Accept wildcard characters: False
-CloseApps
Type: String
Parameter Sets: (All)
Aliases:
Required: False
Position: Named
Default value: None
Accept pipeline input: False
Accept wildcard characters: False
-CloseAppsCountdown
Type: Int32
Parameter Sets: (All)
Aliases:
Required: False
Position: Named
Default value: 0
Accept pipeline input: False
Accept wildcard characters: False
-CustomText
Type: SwitchParameter
Parameter Sets: (All)
Aliases:
Required: False
Position: Named
Default value: False
Accept pipeline input: False
Accept wildcard characters: False
-DeferDays
Specify the number of days since first run that the installation can be deferred.
This is converted to a deadline.
Type: Int32
Parameter Sets: (All)
Aliases:
Required: False
Position: Named
Default value: 0
Accept pipeline input: False
Accept wildcard characters: False
-DeferDeadline
Specify the deadline date until which the installation can be deferred.
Specify the date in the local culture if the script is intended for that same culture.
If the script is intended to run on EN-US machines, specify the date in the format:
"08/25/2013" or "08-25-2013" or "08-25-2013 18:00:00"
If the script is intended for multiple cultures, specify the date in the universal sortable
date/time format: "2013-08-22 11:51:52Z"
The deadline date will be displayed to the user in the format of their culture.
Type: String
Parameter Sets: (All)
Aliases:
Required: False
Position: Named
Default value: None
Accept pipeline input: False
Accept wildcard characters: False
-DeferTimes
Type: Int32
Parameter Sets: (All)
Aliases:
Required: False
Position: Named
Default value: 0
Accept pipeline input: False
Accept wildcard characters: False
-ForceCloseAppsCountdown
Type: Int32
Parameter Sets: (All)
Aliases:
Required: False
Position: Named
Default value: 0
Accept pipeline input: False
Accept wildcard characters: False
-ForceCountdown
Specify a countdown to display before automatically proceeding with the installation when
a deferral is enabled.
Type: Int32
Parameter Sets: (All)
Aliases:
Required: False
Position: Named
Default value: 0
Accept pipeline input: False
Accept wildcard characters: False
-MinimizeWindows
Required: False
Position: Named
Default value: True
Accept pipeline input: False
Accept wildcard characters: False
-PersistPrompt
Type: SwitchParameter
Parameter Sets: (All)
Aliases:
Required: False
Position: Named
Default value: False
Accept pipeline input: False
Accept wildcard characters: False
-PromptToSave
Specify whether to prompt to save working documents when the user chooses to close
applications by selecting the "Close Programs" button.
Option does not work in SYSTEM context unless toolkit launched with "psexec.exe -s -i" to
run it as an interactive process under the SYSTEM account.
Type: SwitchParameter
Parameter Sets: (All)
Aliases:
Required: False
Position: Named
Default value: False
Accept pipeline input: False
Accept wildcard characters: False
-RequiredDiskSpace
Type: Int32
Parameter Sets: CheckDiskSpaceParameterSet
Aliases:
Required: False
Position: Named
Default value: 0
Accept pipeline input: False
Accept wildcard characters: False
-Silent
Required: False
Position: Named
Default value: False
Accept pipeline input: False
Accept wildcard characters: False
-TopMost
Type: Boolean
Parameter Sets: (All)
Aliases:
Required: False
Position: Named
Default value: True
Accept pipeline input: False
Accept wildcard characters: False
CommonParameters
OUTPUTS
None
RELATED LINKS
https://psappdeploytoolkit.com
Start-ServiceAndDependencies
SYNOPSIS
Start Windows service and its dependencies.
SYNTAX
DESCRIPTION
Start Windows service and its dependencies.
EXAMPLES
EXAMPLE 1
PARAMETERS
-ComputerName
Type: String
Parameter Sets: (All)
Aliases:
Required: False
Position: 2
Default value: $env:ComputerName
Accept pipeline input: False
Accept wildcard characters: False
-ContinueOnError
Required: False
Position: 4
Default value: True
Accept pipeline input: False
Accept wildcard characters: False
-Name
Type: String
Parameter Sets: (All)
Aliases:
Required: True
Position: 1
Default value: None
Accept pipeline input: False
Accept wildcard characters: False
-PassThru
Required: False
Position: Named
Default value: False
Accept pipeline input: False
Accept wildcard characters: False
-PendingStatusWait
The amount of time to wait for a service to get out of a pending state before continuing.
Default is 60 seconds.
Type: TimeSpan
Parameter Sets: (All)
Aliases:
Required: False
Position: 3
Default value: (New-TimeSpan -Seconds 60)
Accept pipeline input: False
Accept wildcard characters: False
-SkipDependentServices
Required: False
Position: Named
Default value: False
Accept pipeline input: False
Accept wildcard characters: False
-SkipServiceExistsTest
Choose to skip the test to check whether or not the service exists if it was already done
outside of this function.
Type: SwitchParameter
Parameter Sets: (All)
Aliases:
Required: False
Position: Named
Default value: False
Accept pipeline input: False
Accept wildcard characters: False
CommonParameters
OUTPUTS
System.ServiceProcess.ServiceController.
RELATED LINKS
https://psappdeploytoolkit.com
Stop-ServiceAndDependencies
SYNOPSIS
Stop Windows service and its dependencies.
SYNTAX
DESCRIPTION
Stop Windows service and its dependencies.
EXAMPLES
EXAMPLE 1
PARAMETERS
-ComputerName
Type: String
Parameter Sets: (All)
Aliases:
Required: False
Position: 2
Default value: $env:ComputerName
Accept pipeline input: False
Accept wildcard characters: False
-ContinueOnError
Required: False
Position: 4
Default value: True
Accept pipeline input: False
Accept wildcard characters: False
-Name
Type: String
Parameter Sets: (All)
Aliases:
Required: True
Position: 1
Default value: None
Accept pipeline input: False
Accept wildcard characters: False
-PassThru
Required: False
Position: Named
Default value: False
Accept pipeline input: False
Accept wildcard characters: False
-PendingStatusWait
The amount of time to wait for a service to get out of a pending state before continuing.
Default is 60 seconds.
Type: TimeSpan
Parameter Sets: (All)
Aliases:
Required: False
Position: 3
Default value: (New-TimeSpan -Seconds 60)
Accept pipeline input: False
Accept wildcard characters: False
-SkipDependentServices
Required: False
Position: Named
Default value: False
Accept pipeline input: False
Accept wildcard characters: False
-SkipServiceExistsTest
Choose to skip the test to check whether or not the service exists if it was already done
outside of this function.
Type: SwitchParameter
Parameter Sets: (All)
Aliases:
Required: False
Position: Named
Default value: False
Accept pipeline input: False
Accept wildcard characters: False
CommonParameters
OUTPUTS
System.ServiceProcess.ServiceController.
RELATED LINKS
https://psappdeploytoolkit.com
Test-Battery
SYNOPSIS
Tests whether the local machine is running on AC power or not.
SYNTAX
DESCRIPTION
Tests whether the local machine is running on AC power and returns true/false.
For detailed information, use -PassThru option.
EXAMPLES
EXAMPLE 1
Test-Battery
EXAMPLE 2
(Test-Battery -PassThru).IsLaptop
PARAMETERS
-PassThru
Type: SwitchParameter
Parameter Sets: (All)
Aliases:
Required: False
Position: Named
Default value: False
Accept pipeline input: False
Accept wildcard characters: False
CommonParameters
INPUTS
None
OUTPUTS
System.Hashtable.
IsLaptop
IsUsingACPower
ACPowerLineStatus
BatteryChargeStatus
BatteryLifePercent
BatteryLifeRemaining
BatteryFullLifetime
RELATED LINKS
https://psappdeploytoolkit.com
Test-MSUpdates
SYNOPSIS
Test whether a Microsoft Windows update is installed.
SYNTAX
DESCRIPTION
Test whether a Microsoft Windows update is installed.
EXAMPLES
EXAMPLE 1
PARAMETERS
-ContinueOnError
Suppress writing log message to console on failure to write message to log file.
Default is: $true.
Type: Boolean
Parameter Sets: (All)
Aliases:
Required: False
Position: 2
Default value: True
Accept pipeline input: False
Accept wildcard characters: False
-KBNumber
Type: String
Parameter Sets: (All)
Aliases:
Required: True
Position: 1
Default value: None
Accept pipeline input: False
Accept wildcard characters: False
CommonParameters
OUTPUTS
System.Boolean
RELATED LINKS
https://psappdeploytoolkit.com
Test-NetworkConnection
SYNOPSIS
Tests for an active local network connection, excluding wireless and virtual network
adapters.
SYNTAX
Test-NetworkConnection [<CommonParameters>]
DESCRIPTION
Tests for an active local network connection, excluding wireless and virtual network
adapters, by querying the Win32_NetworkAdapter WMI class.
EXAMPLES
EXAMPLE 1
Test-NetworkConnection
PARAMETERS
CommonParameters
INPUTS
None
OUTPUTS
System.Boolean
RELATED LINKS
https://psappdeploytoolkit.com
Test-PowerPoint
SYNOPSIS
Tests whether PowerPoint is running in either fullscreen slideshow mode or presentation
mode.
SYNTAX
Test-PowerPoint [<CommonParameters>]
DESCRIPTION
Tests whether someone is presenting using PowerPoint in either fullscreen slideshow
mode or presentation mode.
EXAMPLES
EXAMPLE 1
Test-PowerPoint
PARAMETERS
CommonParameters
OUTPUTS
System.Boolean
NOTES
This function can only execute detection logic if the process is in interactive mode.
There is a possiblity of a false positive if the PowerPoint filename starts with "PowerPoint
Slide Show".
RELATED LINKS
https://psappdeploytoolkit.com
Test-RegistryValue
SYNOPSIS
Test if a registry value exists.
SYNTAX
EXAMPLES
EXAMPLE 1
PARAMETERS
-Key
Type: Object
Parameter Sets: (All)
Aliases:
Required: True
Position: 1
Default value: None
Accept pipeline input: True (ByPropertyName, ByValue)
Accept wildcard characters: False
-SID
Type: String
Parameter Sets: (All)
Aliases:
Required: False
Position: 3
Default value: None
Accept pipeline input: False
Accept wildcard characters: False
-Value
Type: Object
Parameter Sets: (All)
Aliases:
Required: True
Position: 2
Default value: None
Accept pipeline input: False
Accept wildcard characters: False
CommonParameters
OUTPUTS
System.String
NOTES
To test if registry key exists, use Test-Path function like so:
RELATED LINKS
https://psappdeploytoolkit.com
Test-ServiceExists
SYNOPSIS
Check to see if a service exists.
SYNTAX
EXAMPLES
EXAMPLE 1
EXAMPLE 2
Check if a service exists and then delete it by using the -PassThru parameter.
PARAMETERS
-ComputerName
Required: False
Position: 2
Default value: $env:ComputerName
Accept pipeline input: False
Accept wildcard characters: False
-ContinueOnError
Type: Boolean
Parameter Sets: (All)
Aliases:
Required: False
Position: 3
Default value: True
Accept pipeline input: False
Accept wildcard characters: False
-Name
Required: True
Position: 1
Default value: None
Accept pipeline input: False
Accept wildcard characters: False
-PassThru
Type: SwitchParameter
Parameter Sets: (All)
Aliases:
Required: False
Position: Named
Default value: False
Accept pipeline input: False
Accept wildcard characters: False
CommonParameters
OUTPUTS
None
RELATED LINKS
https://psappdeploytoolkit.com
Update-Desktop
SYNOPSIS
Refresh the Windows Explorer Shell, which causes the desktop icons and the environment
variables to be reloaded.
SYNTAX
DESCRIPTION
Refresh the Windows Explorer Shell, which causes the desktop icons and the environment
variables to be reloaded.
EXAMPLES
EXAMPLE 1
Update-Desktop
PARAMETERS
-ContinueOnError
Type: Boolean
Parameter Sets: (All)
Aliases:
Required: False
Position: 1
Default value: True
Accept pipeline input: False
Accept wildcard characters: False
CommonParameters
INPUTS
None
NOTES
This function has an alias: Refresh-Desktop
RELATED LINKS
https://psappdeploytoolkit.com
Update-GroupPolicy
SYNOPSIS
Performs a gpupdate command to refresh Group Policies on the local machine.
SYNTAX
DESCRIPTION
Performs a gpupdate command to refresh Group Policies on the local machine.
EXAMPLES
EXAMPLE 1
Update-GroupPolicy
PARAMETERS
-ContinueOnError
Type: Boolean
Parameter Sets: (All)
Aliases:
Required: False
Position: 1
Default value: True
Accept pipeline input: False
Accept wildcard characters: False
CommonParameters
INPUTS
None
OUTPUTS
None
Update-SessionEnvironmentVariables
SYNOPSIS
Updates the environment variables for the current PowerShell session with any
environment variable changes that may have occurred during script execution.
SYNTAX
DESCRIPTION
Environment variable changes that take place during script execution are not visible to the
current PowerShell session.
Use this function to refresh the current PowerShell session with all environment variable
settings.
EXAMPLES
EXAMPLE 1
Update-SessionEnvironmentVariables
PARAMETERS
-ContinueOnError
Type: Boolean
Parameter Sets: (All)
Aliases:
Required: False
Position: 1
Default value: True
Accept pipeline input: False
Accept wildcard characters: False
-LoadLoggedOnUserEnvironmentVariables
If script is running in SYSTEM context, this option allows loading environment variables
from the active console user.
If no console user exists but users are logged in, such as on terminal servers, then the
first logged-in non-console user.
Type: SwitchParameter
Parameter Sets: (All)
Aliases:
Required: False
Position: Named
Default value: False
Accept pipeline input: False
Accept wildcard characters: False
CommonParameters
INPUTS
None
OUTPUTS
None. This function does not return objects.
NOTES
This function has an alias: Refresh-SessionEnvironmentVariables
RELATED LINKS
https://psappdeploytoolkit.com
Write-Log
SYNOPSIS
Write messages to a log file in CMTrace.exe compatible format or Legacy text file format.
SYNTAX
DESCRIPTION
Write messages to a log file in CMTrace.exe compatible format or Legacy text file format
and optionally display in the console.
EXAMPLES
EXAMPLE 1
EXAMPLE 2
EXAMPLE 3
-ContinueOnError
Suppress writing log message to console on failure to write message to log file.
Default is: $true.
Type: Boolean
Parameter Sets: (All)
Aliases:
Required: False
Position: 10
Default value: True
Accept pipeline input: False
Accept wildcard characters: False
-DebugMessage
Type: SwitchParameter
Parameter Sets: (All)
Aliases:
Required: False
Position: 12
Default value: False
Accept pipeline input: False
Accept wildcard characters: False
-LogDebugMessage
Debug messages only get logged if this parameter is set to $true in the config XML file.
Type: Boolean
Parameter Sets: (All)
Aliases:
Required: False
Position: 13
Default value: $configToolkitLogDebugMessage
Accept pipeline input: False
Accept wildcard characters: False
-LogFileDirectory
Type: String
Parameter Sets: (All)
Aliases:
Required: False
Position: 6
Default value: $(If ($configToolkitCompressLogs) {
$logTempFolder
} Else {
$configToolkitLogDir
})
Accept pipeline input: False
Accept wildcard characters: False
-LogFileName
Type: String
Parameter Sets: (All)
Aliases:
Required: False
Position: 7
Default value: $logName
Accept pipeline input: False
Accept wildcard characters: False
-LogType
Choose whether to write a CMTrace.exe compatible log file or a Legacy text log file.
Type: String
Parameter Sets: (All)
Aliases:
Required: False
Position: 5
Default value: $configToolkitLogStyle
Accept pipeline input: False
Accept wildcard characters: False
-MaxLogFileSizeMB
Required: False
Position: 8
Default value: $configToolkitLogMaxSize
Accept pipeline input: False
Accept wildcard characters: False
-Message
Type: String[]
Parameter Sets: (All)
Aliases: Text
Required: True
Position: 1
Default value: None
Accept pipeline input: True (ByPropertyName, ByValue)
Accept wildcard characters: False
-PassThru
Required: False
Position: 11
Default value: False
Accept pipeline input: False
Accept wildcard characters: False
-ScriptSection
The heading for the portion of the script that is being executed.
Default is: $script:installPhase.
Type: String
Parameter Sets: (All)
Aliases:
Required: False
Position: 4
Default value: $script:installPhase
Accept pipeline input: False
Accept wildcard characters: False
-Severity
Required: False
Position: 2
Default value: 1
Accept pipeline input: False
Accept wildcard characters: False
-Source
Type: String
Parameter Sets: (All)
Aliases:
Required: False
Position: 3
Default value: $([String]$parentFunctionName =
[IO.Path]::GetFileNameWithoutExtension((Get-Variable -Name 'MyInvocation' -Scope 1
-ErrorAction 'SilentlyContinue').Value.MyCommand.Name); If ($parentFunctionName) {
$parentFunctionName
} Else {
'Unknown'
})
Accept pipeline input: False
Accept wildcard characters: False
-WriteHost
Required: False
Position: 9
Default value: $configToolkitLogWriteToHost
Accept pipeline input: False
Accept wildcard characters: False
CommonParameters
INPUTS
System.String
OUTPUTS
None
RELATED LINKS
https://psappdeploytoolkit.com