SynchronousCommand specifies a single command to run the first time a user logs on to the computer. FirstLogonCommands are run after logon but before the user sees the desktop.

If you create a user account that does not include administrative privileges, the following commands may not run:

  • If User Account Control is enabled, then when that user logs in for the first time, a dialog box appears, prompting the user with an option to allow an administrator to apply the commands. If the user selects Cancel, these commands don’t run.
  • If User Account Control is disabled, these commands don’t run.

When you add a script using FirstLogonCommands, it will be triggered on the next boot, even if you boot into audit mode using Ctrl+Shift+F3. If you plan to use audit mode later, add the following setting to skip this script automatically: Microsoft-Windows-Deployment\Reseal\Mode = Audit.


These commands now run asynchronously with respect to the other work happening when a user logs on to the computer. However, each command is still run sequentially in the specified order. That is, unlike Microsoft-Windows-Shell-Setup-LogonCommands-AsynchronousCommand all commands using these unattend settings are not started at the same time, and still wait for the previous command to finish.

Child Elements

Setting Description
CommandLine Specifies the path to the command to run.
Description Describes the command to run.
Order Specifies the order in which the command is run.
RequiresUserInput Specifies whether the first logon command launches a dialog box that requires input from the user. This can reduce the delay of the "Preparing Your Desktop" screen.


FirstLogonCommands are not supported in Windows 10 in S mode.

Valid Configuration Passes


Parent Hierarchy

Microsoft-Windows-Shell-Setup | FirstLogonCommands | SynchronousCommand

Applies To

For the list of the supported Windows editions and architectures that this component supports, see Microsoft-Windows-Shell-Setup.

XML Example

The following XML output shows how to set first logon commands.

   <SynchronousCommand wcm:action="add">
   <SynchronousCommand wcm:action="add">