Administrator Guide: Document Version 3.6.1
Administrator Guide: Document Version 3.6.1
Administrator Guide: Document Version 3.6.1
http://psappdeploytoolkit.codeplex.com
Introduction
The PowerShell App Deployment Toolkit provides a set of functions to perform common application
deployment tasks and to interact with the user during a deployment. It simplifies the complex scripting
challenges of deploying applications in the enterprise, provides a consistent deployment experience and
improves installation success rates.
The PowerShell App Deployment Toolkit can be used to replace your WiseScript, VBScript and Batch script
wrappers with one versatile, re-usable and extensible tool.
Features
Easy To Use - Any PowerShell beginner can use the template and the functions provided with the Toolkit
to perform application deployments.
Consistent - Provides a consistent look and feel for all application deployments, regardless of complexity.
Powerful - Provides a set of functions to perform common deployment tasks, such as installing or
uninstalling multiple applications, prompting users to close apps, setting registry keys, copying files, etc.
User Interface - Provides user interaction through , customizable user interface dialog boxes, progress
dialogs and balloon tip notifications that can all be branded with custom logo and banner.
Localized - The UI is localized in several languages and more can easily be added using the XML
configuration file.
Integration - Integrates well with SCCM 2007/2012; provides installation and uninstallation deployment
types with options on how to handle exit codes, such as supressing reboots or returning a fast retry code.
Updatable - The logic engine and functions are separated from per-application scripts, so that you can
update the toolkit when a new version is released and maintain backwards compatibility with your
deployment scripts.
Extensible - The Toolkit can be easily extended to add custom scripts and functions.
Helpful - The Toolkit provides detailed logging of all actions performed and even includes a graphical
console to browse the help documentation for the Toolkit functions.
The PowerShell App Deployment Toolkit has been developed (and tested) to work with a wide range of Operating
Systems from Windows XP to Windows 8.1 (and the Windows Server equivalents) to provide enterprise-wide
compatibility. The system requirements are as follows:
While we have attempted to maintain this backwards compatibility through the lifecycle of the toolkit, 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 toolkit has widespread adoption in the enterprise from SMEs to large
multinationals so there is safety in numbers and the assurance that the toolkit has been put through its paces on
hundreds of thousands of clients around the globe.
Licensing
The PowerShell App Deployment Toolkit is provided under the Microsoft Public License:
https://psappdeploytoolkit.codeplex.com/license
We have invested a lot of personal time in the creation and ongoing development, maintenance and support of this
community tool – 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:
https://psappdeploytoolkit.codeplex.com/wikipage?title=Donate
3 Toolkit Functionality
User Interface
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 toolkit 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.
6 Toolkit Exit Codes | PowerShell App Deployment Toolkit
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
SCCM task sequence or session 0).
The UI is localized into several languages and more can be easily added using the XML configuration
file.
Functions/Logic
Provides extensive logging of both the Toolkit functions and any MSI installation / uninstallation.
Provides the ability to execute any type of setup (MSI or EXEs) and handle the return codes.
Mass remove MSI applications with a partial match (e.g. remove all versions of all MSI applications
which match "Office")
Perform SCCM actions such as Machine and User Policy Refresh, Inventory Update and Software
Update
Supports installation of applications on Citrix/Remote Desktop Session Host Servers
Update Group Policy
Copy / Delete Files
Get / Set / Remove Registry Keys and Values
Get / Set INI File Keys and Values
Check File versions
Pin or Unpin applications to the Start Menu or Task Bar
Create Start Menu Shortcuts
Register / Unregister DLL files
Refresh desktop icons / environment variables
Test network connectivity
Test power connectivity
Check whether a PowerPoint slideshow is running in fullscreen presentation mode
Help Console
A graphical console for browsing the help documentation for the toolkit functions.
4 Toolkit Components
Deploy-Application.ps1
Performs the actual install / uninstall and is the only file that needs to be modified, depending on your level of
customisation.
Deploy-Application.exe
An optional executable that can be used to launch the Deploy-Application.ps1 script without opening a PowerShell
console window. Supports passing command-line parameters to the script.
AppDeployToolkitMain.ps1
Contains all of the functions and logic used by the installation script. By Separating the logic from the installation
script, we can obfuscate away the complex code and make enhancements independently of the installation scripts
that contain per-application actions.
AppDeployToolkitConfig.xml
Contains configurable options referenced by the AppDeployToolkitMain.ps1 script, such as MSI switches and User
Interface messages, which are customizable and localized in several languages. This is intended to be a static file
that is configured once, not on a per-application basis.
AppDeployToolkitExtensions.ps1
This is an optional PowerShell script that can be used to extend the toolkit functionality with custom functions. It is
automatically dot-sourced by the AppDeployToolkitMain.ps1 script.
AppDeployToolkitHelp.ps1
This is a script that displays a help console to browse the functions included in the Toolkit and copy and paste
examples in to your deployment script.
The Root folder contains the Deploy-Application.exe and Deploy-Application.ps1 files. The Deploy-Application.ps1 file
is the only file that should be modified on a per-application basis.
The directories below contain the installation files and supporting files referenced by the toolkit.
AppDeployToolkit
Files
SupportFiles
Folder containing any supporting files such as files you need to copy to the target machine using the toolkit during
deployment.
All of the UI components include message text that is customizable in the AppDeployToolkitConfig.xml. The UI has
been localised in 11 different languages: English, French, Spanish, Portuguese, German, Italian, Dutch, Swedish,
Danish, Norweigan and Japanese. Additional languages can be easily added in the XML configuration file.
The language used by the Toolkit UI is selected automatically based on the language culture of the operating
system, so the same AppDeployToolkitConfig file can be used in a multi-language environment.
The user interface can be suppressed by specifying the deploy mode parameter as follows:
Installation Progress
The installation progress message displays an indeterminate progress ring to indicate an installation is in progress
and display status messages to the end user. This is invoked using the “Show-InstallationProgress” function.
The progress message can be dynamically updated to indicate the stage of the installation or to display custom
messages to the user, using the “Show-InstallationProgress” function.
Welcome prompt with close programs options and countdown to automatic closing of applications:
The toolkit generates extensive logging for all toolkit and MSI operations.
The default log directory for the toolkit and MSI log files can be specified in the XML configuration file. The default
directory is <C:\Windows\Logs\Software>.
The toolkit 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
Overview
The Deploy-Application.ps1 script is the only script you need to modify to deploy your application.
Initialization e.g. Variables such as App Vendor, App Name, App Version
Overview
There are two ways to launch the toolkit for deployment of applications.
Examples:
Deploy-Application.ps1
Deploy an application for uninstallation using PowerShell x86, supressing the PowerShell console window and
deploying in silent mode.
Deploy-Application.exe -AllowRebootPassThru
Deploy-Application.exe "Custom-Script.ps1"
Deploy an application with a custom name and custom location for the script file.
Toolkit Parameters
Specify whether the installation should be run in Interactive, Silent or NonInteractive mode.
NonInteractive = Very silent, i.e. no blocking apps. NonInteractive mode is automatically set if it is detected that the
process is not user interactive.
Specify whether to allow the 3010 exit code (reboot required) to be passed back to the parent process (e.g. SCCM) if
detected during an installation. If a 3010 code is passed to SCCM, the SCCM client will display a reboot prompt. If set to
false, the 3010 return code will be replaced by a “0” (successful, no restart required).
Changes to user install mode and back to user execute mode for installing/uninstalling applications on Remote Destkop
Session Host/Citrix servers
Aside from customizing the “Deploy-Application.ps1” script to deploy your application, no configuration is necessary
out of the box. The following components can be configured as required:
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
18 Toolkit Exit Codes | PowerShell App Deployment 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 toolkit 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.
<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.
Example Deployments
Building an Adobe Reader installation with the PowerShell App Deployment Toolkit
In this example, we will build an Adobe Reader installation which provides the following benefits over using a
standard MSI based SCCM deployment:
This example is provided as a script with the toolkit, in the “Examples” folder.
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
# Show Progress Message (with the default message)
Show-InstallationProgress
# Remove any previous versions of Adobe Reader
Remove-MSIApplications -Name 'Adobe Reader'
Installation
Post-Installation
Uninstallation
# Prompt the user to close the following applications if they are running:
Show-InstallationWelcome -CloseApps 'iexplore,AcroRd32,cidaemon'
Deploy the Adobe Reader installation using SCCM 2007 / SCCM 2012 package
Accept the defaults for the requirements of the program (or modify according to your environment)
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)
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:
Accept the defaults for the rest of the advertisement (or modify according to your environment). The
deployment should start on your target machines shortly.
Deploy the Adobe Reader installation using SCCM 2012 Application Model
Set the content location. Additionally, set the Install and Uninstall programs accordingly. They should be
Deploy-Application.exe -DeploymentType "Install" and Deploy-Application.exe -DeploymentType "Uninstall"
respectively:
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)
Accept the defaults to create the Application
Deploy the Application:
Specify User notification settings. In order to prevent excess noise, we recommend only showing
notifications for computer restarts:
The SCCM 2012 Application Model does not have the flexibility to schedule Mandatory Assignments on a recurring
schedule like SCCM 2007 or SCCM 2012 packages do. Instead, this is determined by the frequency of Software
Deployment evaluation cycle in the SCCM Agent Custom Settings. You can modify this to reduce the time from the
default of once a day, however this may increase the load on your SCCM servers and clients, and is not configurable
on a per application basis:
This example is provided as a script with the toolkit, in the “Examples” folder. This provides a number of benefits
over the standard Microsoft Office Setup Bootstrapper:
A component based architecture so that core products can be installed, and subsequent components can be
installed using the same package with different command-line switches
The ability to defer the installation up to 3 times
The ability to close any applications that could cause errors during the installation
Verification that the required disk space is available
Full removal of any previous version of Microsoft Office 2007, 2010 or 2013
Installation of any subsequent patches required after the base installation
Activation of Microsoft Office components
Note: Office requires a number of modifications in order to install. Please refer to Microsoft’s documentation on
configuration. This installation script tries to take a lot of work out of the process for you, but you still need to know
what you’re doing in order to set it up correctly.
Files
o Office installation files should be placed here
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.
Customised Config.xml file should be edited in “ProPlus.WW” subfolder. At a minimum, you
should modify the settings as follows:
<Display Level="none" CompletionNotice="no" SuppressModal="yes"
NoCancel="yes" AcceptEula="yes" />
Security updates and service pack extracted MSPs should be placed in the “Updates”
subfolder
SupportFiles
o 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
o Contains Office Scrub tools for Office 2007, 2010 and 2013
Deploy-Application.exe
o Installs Office 2010 with core products
Deploy-Application.exe -AddInfoPath
o Installs Office 2010 with core products and InfoPath
Deploy-Application.exe -AddComponentsOnly -AddInfoPath
o Installs InfoPath to an existing Office 2013 installation
6 Toolkit Variables
The toolkit has a number of internal variables which can be used in your script. Outlined below are each of them:
Variable Description
Toolkit Name
$appDeployToolkitName Short-name of toolkit without spaces
$appDeployMainScriptFriendlyN
Full name of toolkit including spaces
ame
Script Info
$appDeployMainScriptVersion Version number of the toolkit
$appDeployMainScriptMinimum
Minimum version of the config XML file required by the toolkit
ConfigVersion
$appDeployMainScriptDate Date toolkit was last modified
$appDeployMainScriptParameter
Contains all parameters and values specified when toolkit was launched
s
Datetime and Culture
$currentTime Current time when toolkit was launched
$currentDate Current date when toolkit was launched
$currentTimeZoneBias TimeZone bias based on the current date/time
$culture Object which contains all of the current Windows culture settings
$currentLanguage Current Windows two letter ISO language name (e.g. EN, FR, DE, JA etc)
Environment Variables (path examples are for Windows 7 and higher)
$envHost Object that contains details about the current PowerShell console
$envAllUsersProfile %ALLUSERSPROFILE% (e.g. C:\ProgramData)
$envAppData %APPDATA% (e.g. C:\Users\{username}\AppData\Roaming)
$envArchitecture %PROCESSOR_ARCHITECTURE% (e.g. AMD64/IA64/x86)
This doesn't tell you the architecture of the processor but only of the current process, so it returns "x86"
for a 32-bit WOW process running on 64-bit Windows.
$envCommonProgramFiles %COMMONPROGRAMFILES% (e.g. C:\Program Files\Common Files)
$envCommonProgramFilesX86 %COMMONPROGRAMFILES(x86)% (e.g. C:\Program Files (x86)\Common Files)
$envComputerName $COMPUTERNAME% (e.g. computer1)
$envComputerNameFQDN Fully qualified computer name (e.g. computer1.conto.contoso.com)
$envHomeDrive %HOMEDRIVE% (e.g. C:)
$envHomePath %HOMEPATH% (e.g. \Users\{username})
$envHomeShare %HOMESHARE%
Used instead of HOMEDRIVE if the home directory uses UNC paths.
$envLocalAppData %LOCALAPPDATA% (e.g. C:\Users\{username}\AppData\Local)
$envProgramFiles %PROGRAMFILES% (e.g. C:\Program Files)
$envProgramFilesX86 %ProgramFiles(x86)% (e.g. C:\Program Files (x86)
Only on 64 bit systems, is used to store 32 bit programs.
$envProgramData %PROGRAMDATA% (e.g. C:\ProgramData)
$envPublic %PUBLIC% (e.g. C:\Users\Public)
The toolkit has a number of internal exit codes for any issues that may occur.
60000 - 68999 Reserved for built-in exit codes in Deploy-Application.ps1, Deploy-Application.exe, and
AppDeployToolkitMain.ps1
60006 AllowSystemInteractionFallback option was not selected in the config XML file, so toolkit will not fall
back to SYSTEM context with no interaction.
60007 Failed to export the schedule task XML file in Execute-ProcessAsUser function
60009 The -UserName parameter in the Execute-ProcessAsUser function has a default value that is empty
because no logged in users were detected when the toolkit was launched.
8 Toolkit Functions
Convert-RegistryPath
Synopsis : Converts the specified registry key path to a format that is compatible with built-in PowerShell cmdlets.
Description:
Converts the specified registry key path to a format that is compatible with built-in PowerShell cmdlets.
Converts registry key hives to their full paths. Example: HKLM is converted to
"Registry::HKEY_LOCAL_MACHINE".
Parameter :
Key
Path to the registry key to convert (can be a registry hive or fully qualified path)
SID
The security identifier (SID) for a user. Specifying this parameter will convert a HKEY_CURRENT_USER
registry key to the HKEY_USERS\$SID format.
Examples :
C:\PS>Convert-RegistryPath -Key
'HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall\{1AD147D0-BE0E-3D6C-
AC11-64F6DC4163F1}'
ConvertTo- NTAccountOrSID
Synopsis : Convert between NT Account names and their security identifiers (SIDs).
Specify either the NT Account name or the SID and get the other. Can also convert well known sid types.
Parameter :
AccountName
Use fully qualified account names (e.g., <domain>\<username>) instead of isolated names (e.g, <username>)
because they are unambiguous and provide better performance.
SID
WellKnownSIDName
Specify the Well Known SID name translate to the actual SID (e.g., LocalServiceSid).
WellKnownToNTAccount
Examples :
Copy-File
Synopsis : Copy a file to a destination path.
Description:
Parameter :
Path
Destination
Recurse
ContinueOnError
Examples :
Enable-TerminalServerInstallMode
Synopsis : Changes to user install mode for Remote Desktop Session Host/Citrix servers
Description: Changes to user install mode for Remote Desktop Session Host/Citrix servers
Parameter :
ContinueOnError
Examples :
C:\PS>Enable-TerminalServerInstallMode
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.
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.
Parameter :
Action
The path to the MSI/MSP file or the product code of the installed MSI.
Transform
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.
Overrides the default parameters specified in the XML configuration file. Install default is:
"REBOOT=ReallySuppress /QB!". Uninstall default is: "REBOOT=ReallySuppress /QN".
AddParameters
Adds to the default parameters specified in the XML configuration file. Install default is:
"REBOOT=ReallySuppress /QB!". Uninstall default is: "REBOOT=ReallySuppress /QN".
LoggingOptions
Overrides the default logging options specified in the XML configuration file. Default options are: "/L*v".
LogName
Overrides the default log file name. The default log file name is generated from the MSI file name. If
LogName does not end in .log, it will be automatically appended.
For uninstallations, the product code is resolved to the displayname and version of the application.
WorkingDirectory
Overrides the working directory. The working directory is set to the location of the MSI file.
SkipMSIAlreadyInstalledCheck
Skips the check to determine if the MSI is already installed on the system. Default is: $false.
PassThru
ContinueOnError
Continue if an exit code is returned by msiexec that is not recognised by the App Deploy Toolkit.
Examples :
Installs an MSI
Installs an MSP
Execute-Process
Synopsis : Execute a process with optional arguments, working directory, window style.
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).
Parameter :
Path to the file to be executed. If the file is located directly in the "Files" directory of the App Deploy Toolkit,
only the file name needs to be specified.
Otherwise, the full path of the file must be specified. If the files is in a subdirectory of "Files", use the
"$dirFiles" variable as shown in the example.
WindowStyle
Style of the window of the process executed. Options: Normal, Hidden, Maximized, Minimized. Default:
Normal.
Note: Not all processes honor the "Hidden" flag. If it it not working, then check the command line options
for the process being executed to see it has a silent option.
CreateNoWindow
Specifies whether the process should be started with a new window to contain it. Default is false.
WorkingDirectory
The working directory used for executing the process. Defaults to the directory of the file being executed.
NoWait
PassThru
WaitForMsiExec
Sometimes an EXE bootstrapper will launch an MSI install. In such cases, this variable will ensure that that
this function waits for the msiexec engine to become available before starting the install.
MsiExecWaitTime
Specify the length of time in seconds to wait for the msiexec engine to become available. Default: 600
seconds (10 minutes).
IgnoreExitCodes
ContinueOnError
Continue if an exit code is returned by the process that is not recognised by the App Deploy Toolkit. Default:
$false (fail on error).
Examples :
If the file is in the "Files" directory of the App Deploy Toolkit, only the file name needs to be specified.
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.
Description:
Execute a process with a logged in user account, by using a scheduled task, to provide interaction with user
in the SYSTEM context.
Parameter :
UserName
Logged in Username under which to run the process from. Default is: 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.
Path
Parameters
41 Toolkit Exit Codes | PowerShell App Deployment Toolkit
Arguments to be passed to the file being executed.
RunLevel
Specifies the level of user rights that Task Scheduler uses to run the task. The acceptable values for this
parameter are:
- HighestAvailable: 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.
Wait
Wait for the process, launched by the scheduled task, to complete execution before accepting more input.
Default is $false.
PassThru
Returns the exit code from this function or the process launched by the scheduled task.
ContinueOnError
Examples :
Execute process under a user account by specifying a username under which to execute it.
Execute process under a user account by using the default active logged in user that was detected when the
toolkit was launched.
Exit-Script
Synopsis : Exit the script, perform cleanup actions, and pass an exit code to the parent process.
Description:
Always use when exiting the script to ensure cleanup actions are performed.
Performs cleanup actions such as closing down dialogs and unblocking blocked applications.
Displays a balloon tip notification to indicate the setup is complete and whether it was a success or a failure.
Determines what exit code to pass to the parent process depending on the options specified in the
deployment script, e.g.
Parameter :
ExitCode
The exit code to be passed from the script to the parent process, e.g. SCCM
Examples :
C:\PS>Exit-Script -ExitCode 0
Disable-TerminalServerInstallMode
Synopsis : Changes to user execute mode for Remote Desktop Session Host/Citrix servers
Description:
Changes to user execute mode for Remote Desktop Session Host/Citrix servers
Parameter :
Examples :
C:\PS>Disable-TerminalServerInstallMode
Get-FileVersion
Synopsis : Gets the version of the specified file
Description:
Parameter :
File
ContinueOnError
Examples :
Description:
Parameter :
ContinueOnError
Examples :
C:\PS>Get-HardwarePlatform
Get-FreeDiskSpace
Synopsis : Retrieves the free disk space in MB on a particular drive (defaults to system drive)
Description:
Retrieves the free disk space in MB on a particular drive (defaults to system drive)
Parameter :
Drive
ContinueOnError
Examples :
Get-IniValue
Synopsis : Parses an INI file and returns the value of the specified section and key.
Description:
Parses an INI file and returns the value of the specified section and key.
Parameter :
FilePath
Section
ContinueOnError
Examples :
Get-InstalledApplication
Synopsis : Retrieves information about installed applications.
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.
Parameter :
Name
The name of the application you want to retrieve information on. Performs a regex match on the application
display name by default.
Exact
Specifies that the named application must be matched using the exact name.
WildCard
Specifies that the named application must be matched using a wildcard search.
ProductCode
The product code of the application you want to retrieve information on.
IncludeUpdatesAndHotfixes
Examples :
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, LogonTime, IdleTime, DisconnectTime, ClientName, ClientProtocolType,
ClientDirectory, ClientBuildNumber
Parameter :
Notes :
Value Description
----- -----------
Disconnected The session is active, but the client has disconnected from it.
Examples :
C:\PS> Get-LoggedOnUser
Get-RegistryKey
Synopsis : Retrieves value names and value data for a specified registry key or optionally, a specific value.
Description:
Retrieves value names and value data for a specified registry key or optionally, a specific value.
If the registry key does not contain any values, the function will return $null by default. If you need to test for
existence of a registry key path, use the built-in Test-Path cmdlet.
Parameter :
Value
SID
The security identifier (SID) for a user. Specifying this parameter will convert a HKEY_CURRENT_USER
registry key to the HKEY_USERS\$SID format.
ReturnEmptyKeyIfExists
Return the registry key if it exists but it has no property/value pairs underneath it. Default is: $false.
ContinueOnError
Examples :
Get-ScheduledTask
Synopsis : Retrieve all details for scheduled tasks on the local computer.
Description:
Retrieve all details for scheduled tasks on the local computer using schtasks.exe. All property names have
spaces and colons removed.
Parameter :
TaskName
Specify the name of the scheduled task to retrieve details for. Uses regex match to find scheduled task.
ContinueOnError
C:\PS>Get-ScheduledTask
C:\PS>Get-ScheduledTask | Out-GridView
Get- ServiceStartMode
Synopsis : Get the service startup mode.
Description:
Parameter :
Name
ComputerName
Specify the name of the computer. Default is: the local computer.
ContinueOnError
Examples :
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).
Description:
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).
Please note that the NTAccount property may be empty for some user profiles but the SID and ProfilePath
properties will always be populated.
ExcludeNTAccount
Specify NT account names in Domain\Username format to exclude from the list of user profiles.
ExcludeSystemProfiles
Exclude system profiles: SYSTEM, LOCAL SERVICE, NETWORK SERVICE. Default is: $true.
ExcludeDefaultUser
Examples :
C:\PS>Get-UserProfiles
Returns the following properties for each user profile on the system: NTAccount, SID, ProfilePath
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.
Get-WindowTitle
Synopsis : Search for an open window title and return details about the window.
Description:
Search for a window title. If window title searched for returns more than one result, then details for each
window will be displayed.
Returns the following properties for each window: WindowTitle, WindowHandle, ParentProcess,
ParentProcessMainWindowHandle.
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.
Parameter :
WindowTitle
The title of the application window to search for using regex matching.
GetAllWindowTitles
DisableFunctionLogging
Examples :
Gets details for each window that has the words "Microsoft Word" in the title.
Get details for all windows belonging to Microsoft Word process with name "WINWORD".
Install-MSUpdates
Synopsis : Installs all Microsft Updates in a given directory
Description:
Install all Microsft Updates of type ".exe", ".msu", or ".msp" in a given directory (recursively search
directory).
Parameter :
Directory
Examples :
Install-SCCMSoftwareUpdates
Synopsis : Scans for outstanding SCCM updates to be installed and installs the pending updates
Description:
Scans for outstanding SCCM updates to be installed and installs the pending updates.
Only compatible with SCCM 2012 Client or higher. This function can take several minutes to run.
Parameter :
SoftwareUpdatesScanWaitInSeconds
The amount of time to wait in seconds for the software updates scan to complete. Default is: 180 seconds.
WaitForPendingUpdatesTimeout
ContinueOnError
Examples :
C:\PS>Install-SCCMSoftwareUpdates
Invoke-HKCURegistrySettingsForAllUsers
Synopsis : Set current user registry settings for all current users and any new users in the future.
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.
Parameter :
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.
UserProfiles
Specify the user profiles to modify HKCU registry settings for. Default is all user profiles except for system
profiles.
Examples :
C:\PS>[scriptblock]$HKCURegistrySettings = {
Description:
Register or unregister a DLL file using regsvr32.exe. Function can be invoked using alias: 'Register-DLL' or
'Unregister-DLL'.
Parameter :
FilePath
DLLAction
Specify whether to register or unregister the DLL. Optional if function is invoked using 'Register-DLL' or
'Unregister-DLL' alias.
ContinueOnError
Examples :
Register DLL file using the "Register-DLL" alias for this function
Unregister DLL file using the "Unregister-DLL" alias for this function
Invoke-SCCMTask
Synopsis : Triggers SCCM to invoke the requested schedule task id.
Description:
Parameter :
ScheduleID
ContinueOnError
Examples :
C:\PS>Invoke-SCCMTask
New-Folder
Synopsis : Create a new folder.
Description:
Parameter :
Path
ContinueOnError
Examples :
New-Shortcut
Synopsis : Creates a new .lnk or .url type shortcut
Description:
Parameter :
Path
TargetPath
Arguments
IconIndex
Executables, DLLs, ICO files with multiple icons need the icon index to be specified
Description
WorkingDirectory
WindowStyle
Windows style of the application. Options: Normal, Maximized, Minimized. Default is: Normal.
RunAsAdmin
Set shortcut to run program as administrator. This option will prompt user to elevate when executing
shortcut.
ContinueOnError
Examples :
Refresh-Desktop
Synopsis : Refresh the Windows Exporer Shell, which causes the desktop icons and the environment variables to
be reloaded.
Description:
Refresh the Windows Exporer Shell, which causes the desktop icons and the environment variables to be
reloaded.
Parameter :
ContinueOnError
Examples :
C:\PS>Refresh-Desktop
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.
Parameter :
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.
ContinueOnError
Examples :
C:\PS>Refresh-SessionEnvironmentVariables
Remove-File
Synopsis : Remove a file or all files recursively in a given path.
Description:
Parameter :
Path
Recurse
ContinueOnError
Examples :
Remove-Folder
Synopsis : Remove folder and files if they exist.
Description:
Parameter :
Path
ContinueOnError
Examples :
Remove-MSIApplications
Synopsis : Removes all MSI applications matching the specified application name
Description:
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".
Parameter :
Name
The name of the application to uninstall. Performs a regex match on the application display name by default.
Exact
Specifies that the named application must be matched using the exact name.
WildCard
Specifies that the named application must be matched using a wildcard search.
Overrides the default parameters specified in the XML configuration file. Uninstall default is:
"REBOOT=ReallySuppress /QN".
AddParameters
Adds to the default parameters specified in the XML configuration file. Uninstall default is:
"REBOOT=ReallySuppress /QN".
Overrides the default logging options specified in the XML configuration file. Default options are: "/L*v".
LogName
Overrides the default log file name. The default log file name is generated from the MSI file name. If
LogName does not end in .log, it will be automatically appended. For uninstallations, by default the product
code is resolved to the displayname and version of the application.
PassThru
ContinueOnError
Continue if an exit code is returned by msiexec that is not recognized by the App Deploy Toolkit.
Examples :
Removes all versions of software that match the name "Adobe Flash"
Remove-RegistryKey
Synopsis : Deletes the specified registry key or value
Description:
Parameter :
Key
Name
Recurse
SID
The security identifier (SID) for a user. Specifying this parameter will convert a HKEY_CURRENT_USER
registry key to the HKEY_USERS\$SID format.
ContinueOnError
Examples :
Resolve-Error
Synopsis : Enumerate error record details.
Description:
Enumerate an error record, or a collection of error record, properties. By default, the details for the last error
will be enumerated.
Parameter :
ErrorRecord
The error record to resolve. The default error record is the lastest one: $global:Error[0]. This parameter will
also accept an array of error records.
Property
The list of properties to display from the error record. Use "*" to display all properties. Default list of error
properties is: Message, FullyQualifiedErrorId, ScriptStackTrace, PositionMessage, InnerException
GetErrorRecord
GetErrorInvocation
GetErrorException
GetErrorInnerException
Get error record inner exception details as represented by $_.Exception.InnerException. Will retrieve all
inner exceptions if there is more than one.
C:\PS> Resolve-Error
Send-Keys
Synopsis : Send a sequence of keys to one or more application windows.
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.
Parameter :
WindowTitle
The title of the application window to search for using regex matching.
GetAllWindowTitles
WindowHandle
Send keys to a specific window where the Window Handle is already known.
Keys
WaitSeconds
Examples :
Send the sequence of keys "Hello world" to the application titled "foobar - Notepad".
59 Toolkit Exit Codes | PowerShell App Deployment Toolkit
-------------------------- EXAMPLE 2 --------------------------
Send the sequence of keys "Hello world" to the application titled "foobar - Notepad" and wait 5 seconds.
Send the sequence of keys "Hello world" to the application with a Window Handle of '17368294'.
Set-ActiveSetup
Synopsis : Creates an Active Setup entry in the registry to execute a file for each user upon login.
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 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 as long as not in Session 0 (no need to logout/login to
trigger Active Setup).
Parameter :
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.
Arguments
Description
Description for the Active Setup. Users will see "Setting up personalised settings for: $Description" at logon.
Default is: $installName.
Name of the registry key for the Active Setup entry. Default is: $installName.
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.
Locale
Optional. Arbitrary string used to specify the installation language of the file being executed. Not replicated
to HKCU.
PurgeActiveSetupKey
Remove Active Setup entry from HKLM registry hive. Will also load each logon user's HKCU registry hive to
remove Active Setup entry.
DisableActiveSetup
Disables the Active Setup entry so that the StubPath file will not be executed.
ContinueOnError
Examples :
Set-IniValue
Synopsis : Opens an INI file and sets the value of the specified section and key.
Description:
Opens an INI file and sets the value of the specified section and key.
Parameter :
FilePath
61 Toolkit Exit Codes | PowerShell App Deployment Toolkit
Path to the INI file
Section
Key
Value
Value for the key within the section of the INI file. To remove a value, set this variable to $null.
ContinueOnError
Examples :
Set-PinnedApplication
Synopsis : Pins or unpins a shortcut to the start menu or task bar.
Description:
This should typically be run in the user context, as pinned items are stored in the user profile.
Parameter :
Action
FilePath
Examples :
Description:
Creates a registry key name, value, and value data; it sets the same if it already exists.
Parameter :
Key
Name
Value
Type
The type of registry value to create or set. Options: 'Binary', 'DWord', 'ExpandString', 'MultiString', 'None',
'QWord', 'String', 'Unknown'. Default: String.
SID
The security identifier (SID) for a user. Specifying this parameter will convert a HKEY_CURRENT_USER
registry key to the HKEY_USERS\$SID format.
ContinueOnError
Examples :
Set-ServiceStartMode
Synopsis : Set the service startup mode.
Description:
Parameter :
63 Toolkit Exit Codes | PowerShell App Deployment Toolkit
Name
ComputerName
Specify the name of the computer. Default is: the local computer.
StartMode
Specify startup mode for the service. Options: Automatic, Automatic (Delayed Start), Manual, Disabled,
Boot, System.
ContinueOnError
Examples :
Show-BalloonTip
Synopsis : Displays a balloon tip notification in the system tray
Description:
Parameter :
BalloonTipText
BalloonTipTitle
BalloonTipIcon
BalloonTipTime
Examples :
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.
Parameter :
Text
Title
Buttons
Buttons to be included on the dialog box. Options: OK, OKCancel, AbortRetryIgnore, YesNoCancel, YesNo,
RetryCancel, CancelTryAgainContinue. Default: OK.
DefaultButton
The Default button that is selected. Options: First, Second, Third. Default: First.
Icon
Icon to display on the dialog box. Options: None, Stop, Question, Exclamation, Information. Default: None.
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.
TopMost
Specifies whether the message box is a system modal message box and appears in a topmost window.
Default: $true.
Examples :
C:\PS> Show-DialogBox -Title 'Installed Complete' -Text 'Installation has completed. Please click OK and
restart your computer.' -Icon 'Information'
C:\PS> Show-DialogBox -Title 'Installation Notice' -Text 'Installation will take approximately 30 mintues. Do
you wish to proceed?' -Buttons 'OKCancel' -DefaultButton 'Second' -Icon 'Exclamation' -Timeout 600
Show-InstallationProgress
Synopsis : Displays a progress dialog in a separate thread with an updatable custom message.
65 Toolkit Exit Codes | PowerShell App Deployment Toolkit
Description:
Create a WPF window in a separate thread to display a marquee style progress ellipse with a custom
message that can be updated.
The first time this function is called in a script, it will display a balloon tip notification to indicate that the
installation has started (provided balloon tips are enabled in the configuration).
Parameter :
StatusMessage
The Status Message to be displayed. The default status message is taken from the XML configuration file.
WindowLocation
The location of the progress window. Default: just below top, centered.
TopMost
Examples :
C:\PS> Show-InstallationProgress
Uses the default status message from the XML configuration file.
Show-InstallationPrompt
Synopsis : Displays a custom installation prompt with the toolkit branding and optional buttons.
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.
Parameter :
Title
Message
MessageAlignment
Alignment of the message text. Options: Left, Center, Right. Default: Center.
ButtonLeftText
Show a button on the left of the prompt with the specified text
ButtonRightText
Show a button on the right of the prompt with the specified text
ButtonMiddleText
Show a button in the middle of the prompt with the specified text
Icon
Show a system icon in the prompt. Options: Application, Asterisk, Error, Exclamation, Hand, Information,
None, Question, Shield, Warning, WinLogo. Default: None.
NoWait
Specifies whether to show the prompt asynchronously (i.e. allow the script to continue without waiting for a
response). Default: $false.
PersistPrompt
Specify whether to make the prompt persist in the center of the screen every 10 seconds. The user will have
no option but to respond to the prompt - resistance is futile!
MinimizeWindows
Specifies whether to minimize other windows when displaying prompt. Default: $false.
Timeout
Specifies the time period in seconds after which the prompt should timeout. Default: UI timeout value set in
the config XML file.
ExitOnTimeout
Specifies whether to exit the script if the UI times out. Default: $true.
Examples :
C:\PS> Show-InstallationPrompt -Message 'Do you want to proceed with the installation?' -ButtonRightText
'Yes' -ButtonLeftText 'No'
C:\PS> Show-InstallationPrompt -Message 'You can customise text to appear at the end of an install, or
remove it completely for unattended installations.' -Icon Information -NoWait
Show-InstallationRestartPrompt
Synopsis : Displays a restart prompt with a countdown to a forced restart.
Description:
Parameter :
CountdownSeconds
CountdownNoHideSeconds
Specifies the number of seconds to display the restart prompt without allowing the window to be hidden.
NoCountdown
Specifies not to show a countdown, just the Restart Now and Restart Later buttons. The UI will
restore/reposition itself persistently based on the interval value specified in the config file.
Examples :
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.
Description:
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.
d) Prevent users from launching the specified applications while the installation is in progress.
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).
Parameter :
CloseApps
Name of the process to stop (do not include the .exe). Specify multiple processes separated by a comma.
Specify custom descriptions like this: "winword=Microsoft Office Word,excel=Microsoft Office Excel"
Silent
CloseAppsCountdown
Option to provide a countdown in seconds until the specified applications are automatically closed. This only
takes effect if deferral is now allowed or has expired.
ForceCloseAppsCountdown
Option to provide a countdown in seconds until the specified applications are automatically closed
regardless of whether deferral is allowed.
PromptToSave
Specify whether to prompt to save working documents when the user chooses to close applications. 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.
PersistPrompt
Specify whether to make the prompt persist in the center of the screen every 10 seconds. The user will have
no option but to respond to the prompt - resistance is futile!
BlockExecution
Option to prevent the user from launching the process/application during the installation
AllowDefer
Enables an optional defer button to allow the user to defer the installation.
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.
DeferTimes
Specify the number of days since first run that the installation can be deferred. This is converted to a
deadline.
DeferDeadline
Specify the deadline date up until which the installation can be deferred.
Specify the date in the local culture if the script is intended for that same culture, e.g.
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, e.g.
"2013-08-22 11:51:52Z"
The deadline date will be displayed to the user in the format of their culture.
CheckDiskSpace
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.
RequiredDiskSpace
MinimizeWindows
Specifies whether to minimize other windows when displaying prompt [Default is true]
Examples :
Close Word and Excel and prevent the user from launching the applications while the installation is in
progress.
Prompt the user to close Word, MSAccess and Excel if the processes match the exact name specified (use
.exe for exact matches).
By using the PersistPrompt switch, the dialog will return to the center of the screen every 10 seconds so the
user cannot ignore it by dragging it aside.
Allow the user to defer the installation until the deadline is reached.
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.
Start-ServiceAndDependencies
Synopsis : Start Windows service and its dependencies.
Description:
Parameter :
Name
ComputerName
Specify the name of the computer. Default is: the local computer.
SkipServiceExistsTest
Choose to skip the test to check whether or not the service exists if it was already done outside of this
function.
SkipDependentServices
PassThru
ContinueOnError
Examples :
Stop-ServiceAndDependencies
Synopsis : Stop Windows service and its dependencies.
Description:
Parameter :
Name
ComputerName
Specify the name of the computer. Default is: the local computer.
SkipServiceExistsTest
Choose to skip the test to check whether or not the service exists if it was already done outside of this
function.
SkipDependentServices
Choose to skip checking for and stopping dependent services. Default is: $false.
PassThru
ContinueOnError
Examples :
Test-Battery
Synopsis : Tests whether the local machine is running on AC power or not
Tests whether the local machine is running on AC power and returns true/false. For detailed information, use
-PassThru option.
Parameter :
PassThru
Examples :
C:\PS>Test-Battery
C:\PS>(Test-Battery -PassThru).IsLaptop
Test-MSUpdates
Synopsis : Test whether a Microsoft Windows update is installed
Description:
Parameter :
KBNumber
Examples :
Test-NetworkConnection
Synopsis : Tests for an active local network connection, excluding wireless and virtual network adapters.
Description:
Tests for an active local network connection, excluding wireless and virtual network adapters, by querying
the Win32_NetworkAdapter WMI class.
Parameter :
Examples :
Test-PowerPoint
Synopsis : Tests whether PowerPoint is running in fullscreen slideshow mode.
Description:
Tests whether PowerPoint is running in fullscreen slideshow mode to see if someone is presenting.
Parameter :
Examples :
C:\PS>Test-PowerPoint
Test-ServiceExists
Synopsis : Check to see if a service exists.
Description:
Check to see if a service exists (using WMI method because Get-Service will generate ErrorRecord if service
doesn't exist).
Parameter :
Name
Note: Service name can be found by executing "Get-Service | Format-Table -AutoSize -Wrap" or by using the
properties screen of a service in services.msc.
ComputerName
Specify the name of the computer. Default is: the local computer.
PassThru
ContinueOnError
Examples :
Check if a service exists and then delete it by using the -PassThru parameter.
Description:
Parameter :
Examples :
C:\PS>Update-GroupPolicy
Write-Log
Synopsis : Write messages to a log file in CMTrace.exe compatible format or Legacy text file format.
Description:
Write messages to a log file in CMTrace.exe compatible format or Legacy text file format and optionally
display in the console.
Parameter :
Message
Severity
Defines message type. When writing to console or CMTrace.exe log format, it allows highlighting of message
type. Options: 1 = Information (default), 2 = Warning (highlighted in yellow), 3 = Error (highlighted in red)
Source
ScriptSection
The heading for the portion of the script that is being executed. Default is: $script:installPhase.
LogType
Choose whether to write a CMTrace.exe compatible log file or a Legacy text log file.
LogFileDirectory
LogFileName
MaxLogFileSizeMB
Maximum file size limit for log file in megabytes (MB). Default is 10 MB.
ContinueOnError
Suppress writing log message to console on failure to write message to log file.
PassThru
DebugMessage
Specifies that the message is a debug message. Debug messages only get logged if -LogDebugMessage is set
to $true.
LogDebugMessage
Debug messages only get logged if this parameter is set to $true in the config XML file.
Examples :
C:\PS>Write-Log -Message "Script is running on Windows 8" -Source 'Test-ValidOS' -LogType 'Legacy'