Non-Persistent Virtual Device Infrastructure (NP-VDI)

NP-VDI enables your IT team to rapidly provision virtual desktops alongside physical devices, all from a single unified platform. The built-in automated management saves time, reduces manual overhead, and gains comprehensive endpoint control in cloud environments.

Feature Workflow

Agent Deployment on Base Image:

  • The agent is installed (not registered) on a clean VM.

  • The agent is then manually registered as a “Base Image” using the provided command-line tooling.

Sealing the base image:

  • Once the base image agent has registered and the configuration is validated, the VM is “sealed” via the command line.

Spawning Instances:

  • New NP-VDI instances can be spun up from the base image, typically generating a new MAC address for each session.

  • Ivanti Neurons detects and tracks these as unique, short-term endpoints managed under the base image.

Policy Management:

  • Policy changes can be made at the base image level. All spawned instances inherit the latest applied policy upon the next check-in.

Step 1: Prepare the Base Image

To prepare the base image, follow these steps:

  1. Navigate to Agent > Agent Deployment > Manual installation.
  2. On the Manual installation tab, choose an agent policy and enrollment key.
  3. Select Windows. Then, choose an Installation Mode and click Download.
    The agent installer will be downloaded.

    This action downloads two files. Save the installer with file name "IvantiCloudAgent.exe.options". This file will be used for installation.

  4. Install the downloaded NP-VDI agent.
    To install the agent:
    • Rename the associated IvantiCloudAgent.exe.options file before installation.
    • Run the installer. When the Activation key or Cookie option appears and click Cancel.
      This installs the agent on the endpoint without registering it to the tenant.
  5. Register the agent as a base image. To register as a base image, run the following command, as an administrator, from the agent install location:

    STAgentCtl.exe register --asBaseImage <Base Image Name> --instanceIdType MacAddress --enrollmentkey "%enrollmentkey%" --baseurl https://agentreg.ivanticloud.com

    In the above command:

    • <Base Image Name> is the name of the base image device.

    • %enrollmentkey% is a combination of tenantid_activationkey.

    • instanceIdType can be "MacAddress", "HostName" or “Custom”. This is used as the unique flag to identify the instance.
      If "Custom" is used, a tagList option containing comma-separated list of custom tags can be specified to identify that agent. For more information about custom tags, see the Custom Tag List and Update Tags section.

    Both the tenantid and activationkey can be found in the associated .options file, downloaded with the agent as shown in the example below:

    tenantid = 11111111-1111-1111-1111-4gc02d5b0f0d
    activationkey = 9aI7SOQNybweiM2QKI7kcqIG8ufUFU21AvZwJwAEx6C-SAO5UGK62YkEgm89kvC2m-xwLesZA4t1_TBtEjIQMVaBU0KsVe-V60ZLBwWu83YREcUp3diAFvHjBvLtkxT3
    cloudhost=https:agentreg.ivanticlouddev.com

    The enrollment key for the above code is:
    %enrollmentkey% = 11111111-1111-1111-1111-4gc02d5b0f0d_9aI7SOQNybweiM2QKI7kcqIG8ufUFU21AvZwJwAEx6C-SAO5UGK62YkEgm89kvC2m-xwLesZA4t1_TBtEjIQMVaBU0KsVe-V60ZLBwWu83YREcUp3diAFvHjBvLtkxT3

    The command line to register a device with the example tenant for a base image named “Win11” will be as follows:

    STAgentCtl.exe register --asBaseImage Win11 --instanceIdType MacAddress --enrollmentkey “11111111-1111-1111-1111-4gc02d5b0f0d_9aI7SOQNybweiM2QKI7kcqIG8ufUFU21AvZwJwAEx6C-SAO5UGK62YkEgm89kvC2m-xwLesZA4t1_TBtEjIQMVaBU0KsVe-V60ZLBwWu83YREcUp3diAFvHjBvLtkxT3" --baseurl https://agentreg.ivanticloud.com

  6. To update the base image:
    • Download the PowerShell script from Ivanti community portal: Ivanti-Neurons -Non-Persistent-VDI - Agent Script.
    • Before running the PowerShell script, check that the admin has the relevant permissions to run this on the base image, as the execution policy on the endpoint may block this:

      • To check, use "Get-ExecutionPolicy" command.

      • To change, use "Set-ExecutionPolicy RemoteSigned" command.

    • If the script runs without any parameters, the script will attempt the following:
      • Unseal the agent.
      • Run updates for both agents and engines.
      • Seal the agent again.
    • If the agent is already unsealed, and this should remain unsealed after the update. Pass the "DoNotSeal" parameter to perform all the same steps, except sealing the image.
    • The default timeout for updates is 300 seconds. You can change the time by passing the “-TimeoutSec” argument.

    For additional reference, copy of the script can be accessed under Appendix section.

  7. To prepare the base image:
    • Run "STAgentCtl.exe prepareImage" command to make a sealed, non-persistent base image ready for NP-VDI.
      This command is mandatory and stops all services and deletes any data related to actual Agent ID of the base image. When the non-persistent instance boots up, the services are restarted.

      The Agent ID will change with every non-persistent instance spun up from the base image.

    • Use the following commands to manually seal the base image (outside of the upgrade script):
      • To manually seal the base image, enter "STAgentCtl.exe seal".

        Use the "unseal" command to unseal the image. This remains active until a system restart or the "Seal" command is used.

  8. (Optional) Prepare the image for use with "sysprep".
    If the non-persistent desktop preparation includes a sysprep stage, it will remove the private key of the agent certificate from the certificate store. To address this issue, follow these steps:

    The admin must supply their own certificate export password; otherwise, this process will fail.

    1. Locate the certificate serial number using the certutil -store “Ivanti Cloud Agent Agent” command.
      This lists the certificate in the agent certificate store.
    2. The certificate with the subject OU “ST Agent” (e.g. "Subject: OU=ST Agent, CN=011472EFB12BABF06122F2903BBE12AC4E32EBFE5082”) should be exported, using the corresponding serial number from that entry.

    3. After running the command “stagentctl prepareImage” at Step 7, you can export the agent certificate using the following command:

      certutil -exportPFX -privatekey -p "%pfxpass%" “Ivanti Cloud Agent Agent” %serialnumber% "%ProgramFiles%\Ivanti\Ivanti Cloud Agent\agent.pfx" NoChain,NoRoot

      In the above command:

      • %pfxpass% is a password supplied by the admin.

      • %serialnumber% is the located serial number of the agent certificate.

    4. Download the SetupComplete.cmd script available from Ivanti’s community website here: Restore private key from exported .pfx file script.
    5. Edit the SetupComplete.cmd script and update the password to match the password used to export the certificate used in Step 2.
    6. Store the script at %WINDIR%\Setup\Scripts\SetupComplete.cmd on the gold image.
      The script will automatically run once the Windows setup has been completed (which happens the first time the device is booted after sysprep).

      This will restore the private key from the exported .pfx file, then delete both the .pfx file and the script itself, so that the secret won’t leak into the non-persistent instances.

Step 2: Create and Test NP-VDI Instances

To spin a new instance from the base image, follow these steps:

  1. Ensure a new MAC address is assigned to each new instance (to ensure the instanceIdType MacAddress option will work).
    Alternatively, ensure a different hostname or tag is utilized.

  2. Start the virtual machine instance and confirm the instance appears in the Neurons UI as a unique NP-VDI endpoint. Go to Agents > Agent Management section of Ivanti Neurons interface to do this.
    A new VDI Type column is available which indicates whether the device is a Base Image, Non-Persistent, or Persistent device.

  3. Each agent endpoint is now linked from the Agent Management page to the Devices page. Click on the Agent Endpoint name to launch a new window showing the device in the Devices view.

  4. Click the Linked instances option to show all the instances spun up from this base image.
    The Non-Persistent Instances will be tagged as Non-persistent in the Devices view.

Step 3: Reassigning Policy with NP-VDI

To reassign a policy to the base image directly from the Ivanti Neurons interface, follow these steps:

  1. Navigate to Agents > Agent Policies.

  2. Select the base image and choose Reassign Policy from the Actions menu.

  3. Choose the policy to reassign and click Save.
    This reassigns the policy. After the policy is reassigned to the base image, all the non-persistent VDI instances will inherit the policy the next time they check-in (which by default is every 200 minutes).

  4. Validate that new instances inherit the updated policy after check in, either using the Ivanti Neurons Agents or Agent Management interface or from the non-persistent image itself, using the command line "Stagentctl status".

It is not possible to perform reboot actions on a NP-VDI instance. This would reset the device to its initial state, potentially causing the user to lose work they completed during their session.
In addition, Actions available from the Devices view for non-persistent instances do not contain reboot actions.

Additional STAgentCtle.exe Commands

You can use the following additional commands:

  • To open the base agent for updates, enter the "Stagentctl.exe unseal" command.

  • To force the command line to wait until the update has completed before returning control, enter the "Stagentctl.exe update –wait" command.

    The "wait" command may encounter problems when the agent is updated, as it requires the agent executables to be running, which leads to the need for a reboot after the update. To avoid this issue, Ivanti offers a PowerShell script that allows for a synchronous update command to be executed.

  • To close the base agent for updates, enter the "Stagentclt.exe seal" command.

Custom Tag List

A Custom Tag List is a user-defined collection of tags that can be assigned to endpoints in Ivanti Neurons, including NP-VDI instances. Custom tags help classify, organize, and identify devices based on business, operational, or technical requirements.

For example, using the tag "Sales-[MacAddress]" generates a unique tag for each device by replacing [MacAddress] with the device's actual MAC address. This functionality is particularly useful for generating unique tags for non-persistent VDI instances.

Use the following syntax to reference device attributes and environment variables:

  • To reference the MAC address, use "[MacAddress]"

  • To reference the hostname, use "[HostName]"

  • To reference an environment variable, use "[env:<name>]"

Where <name> is the case-sensitive name of the environment variable.

Update Tags

Tags assigned during base image registration remain static for all associated instances. If you need to update tags, re-register/seal the base image, or use automation to assign tags based on current criteria after VM deployment.

Appendix