The Nomad PBA Task Sequence steps are not designed for use with offline USMT or WinPE.

The -NMDS_POLL command-line option for the NomadPackageLocator.exe tool cannot be used in WinPE.

The -NMDS_<command> command-line options for NomadBranch.exe have not been tested in WinPE so their behavior might be unpredictable in that environment.

The NMDS_POLL argument is available on either the NomadPackageLocator.exe (recommended) or NomadBranch.exe service command-line. When run, it places a request for a network share and size associated with it. It must only be used within a task sequence.

If configuring PBA command lines manually and using NomadPackageLocator.exe (NOT NomadBranch.exe) to run within a task sequence environment, if the task sequence variable 1EWSA_USMTSizeInMB is set, then the value assigned to this variable is used in the poll. This variable is as part of WSA deployments if user folder backup has been enabled. If using NomadBranch.exe in the command line, the variable is ignored.

It takes the following format:

NomadPackageLocator.exe -NMDS_POLL,<name>,<size>


NomadBranch.exe -NMDS_POLL,<name>,<size>[,<ignore_offer>]


  • <name> is used to identify the shared cache and must be used in the rest of the PBA NMDS commands. This may be up to 40 characters, consisting of 0-9 and A-Z characters, and is case insensitive. Subsequent calls to NMDS_POLL with the same name will return the same share details as the first call.
  • <size> is the number of Megabytes required for the shared cache.
  • <ignore_offer> is used to specify the name of a PBA host that already has the user data cached. Thus when NMDS_POLL is run a second time with the same <name> and <size> values as on the first call, it effectively allows a second PBA host to offer its services as a cache. In this way user state can be saved to two caches, for increased resilience. On restore, the first cache that responds to the NMDS_FIND request will be the one used.

Requesting a cache

When NMDS_POLL is run, the Nomad machines on the local subnet responds to the request under the following conditions:

  • PBA is enabled on the machine
  • The machine has sufficient PBA allocation to cope with the requested share size
  • The machine has sufficient disk space to cope with the requested share size, A machine with less than 5% available disk space cannot respond to PBA requests.

  • The machine has spare available connections for the share

Domain controllers cannot be used for PBA data sharing. All the machines that satisfy these conditions will respond and the requesting machine picks the host that has the largest percentage of available disk space.

Creating the cache

The winning machine creates a share and user to service the request. The share and user is maintained until:

When these conditions are met, the share, contents and associated user is deleted.

When Nomad is configured to use Peer copy over HTTP or HTTPS a file share is not created. In this scenario the storage is exposed to peers through the HTTP server implemented in Nomad for sharing its cache. A local user account is created to secure access to the migration data store through Windows authentication.

When Nomad is configured to use Certificate-based Client Authentication, a local user account is not created. Access to the user state store is authenticated using a client certificate.

Storing the result

This is not necessary if NomadPackageLocator.exe is used.

If NomadBranch.exe is used, the details for the winning share can be set into a variable %NMDS_REMOTE% using the TSEnv2.exe function. When integrating with an OSD task sequence, the %NMDS_REMOTE% must be used to transfer the details to the OSDStateStorePath task sequence variable, otherwise the user data will not be stored on the NMDS host.

For example, the following command creates a shared cache called acme1234 with 10 Mb of disk space and sets the %NMDS_REMOTE% with the details of the created share.

cmd /c "NomadBranch.exe -NMDS_POLL,acme1234,10 | TSEnv2.exe -"

However, NomadPackageLocator.exe sets up task sequence environment variables automatically. The equivalent of the above command is simply:

cmd /c "NomadPackageLocator.exe -NMDS_POLL,acme1234,10"

Fixing the contents and disconnecting

Once created, the share will only be kept for 3 hours. When you have finished copying items to the share, issue the NMDS_COMPLETE command to disconnect from it and fix the contents for 7 days. The defaults for the pre- and post- complete timeouts are configured using the Nomad PreCompleteTimeoutHours and PostCompleteTimeoutHours registry values on the machine where the share is being hosted.

Task sequence environment variables

NMDS_POLL uses the following task sequence environment variables:

%PBAComputerName%Set to the value of the <name> parameter
%OSDStateStorePath%Set to the path to the share that USMT should use for storing migrated data.
%NMDS_REMOTE%Set to the same value as %OSDStateStorePath%. This is deprecated but it is left in because it was traditionally used.