# Microsoft AVD

Microsoft Azure Virtual Desktop (AVD) runs in the cloud and the VMs are hosted in the organization’s own Azure subscription. This allows organizations to centralize control of virtual desktops while taking advantage of scalable infrastructure provided by Azure. It is commonly used by enterprises looking to reduce on-premises data center dependency while maintaining flexibility in delivering both personal and pooled virtual desktops and applications.

{% stepper %}
{% step %}

### Set up the connector

Configure Nexthink to connect to Microsoft AVD APIs for session metadata ingestion. This step ensures that contextual data is available to enrich insights within the VDI Experience module.

To set up the connector, perform the procedure described in [connector-for-microsoft-azure-virtual-desktop](https://docs.nexthink.com/platform/configuring_nexthink/bringing-data-into-your-nexthink-instance/integrating-nexthink-with-third-party-tools/inbound-connectors/connector-for-microsoft-azure-virtual-desktop "mention").
{% endstep %}

{% step %}

### Install Collector on VMs <a href="#id-3.-install-collector-on-vms" id="id-3.-install-collector-on-vms"></a>

#### Manual or automated deployment <a href="#i.-shared-vdi-citrix-xenapp" id="i.-shared-vdi-citrix-xenapp"></a>

* **Shared VDI**: Install Collector on multi-session hosts deployed on the cloud platform. Ensure that session hosts are domain-joined and provisioned with appropriate sizing.
* **Personal VDI (persistent)**: Install Collector as a standard agent during provisioning or onboarding of the persistent desktop.

For both scenarios, perform the procedures described in the following documentation:

1. [#configuring-collector-for-vms](https://docs.nexthink.com/platform/configuring_nexthink/deploying-nexthink-in-non-vdi-environment/installing-collector/installing-collector-on-windows#configuring-collector-for-vms "mention")
2. [#installing-collector-on-vms](https://docs.nexthink.com/platform/configuring_nexthink/deploying-nexthink-in-non-vdi-environment/installing-collector/installing-collector-on-windows#installing-collector-on-vms "mention")
3. [#installingcollectoronwindows-deployingcollectorusingactivedirectorygrouppolicy-1](https://docs.nexthink.com/platform/configuring_nexthink/deploying-nexthink-in-non-vdi-environment/installing-collector/installing-collector-on-windows#installingcollectoronwindows-deployingcollectorusingactivedirectorygrouppolicy-1 "mention")

#### Golden image-based deployment <a href="#ii.-pooled-vdi-citrix-xendesktop-non-persistent" id="ii.-pooled-vdi-citrix-xendesktop-non-persistent"></a>

Pooled VDIs (non-persistent) use a golden image for deployment.

Perform the procedures described in the following documentation:

1. [#configuring-collector-for-vms](https://docs.nexthink.com/platform/configuring_nexthink/deploying-nexthink-in-non-vdi-environment/installing-collector/installing-collector-on-windows#configuring-collector-for-vms "mention")
2. [#installing-collector-on-vms](https://docs.nexthink.com/platform/configuring_nexthink/deploying-nexthink-in-non-vdi-environment/installing-collector/installing-collector-on-windows#installing-collector-on-vms "mention")
3. [#installingcollectoronwindows-deployingcollectorwithinawindowsreferenceimage](https://docs.nexthink.com/platform/configuring_nexthink/deploying-nexthink-in-non-vdi-environment/installing-collector/installing-collector-on-windows#installingcollectoronwindows-deployingcollectorwithinawindowsreferenceimage "mention")
   {% endstep %}

{% step %}

### Test the connector and Collector <a href="#id-2.-test-the-connector" id="id-2.-test-the-connector"></a>

#### Connector

Confirm that device and session data is being enriched with information from the connector integration by verifying fields such as:

* Disk Image
* Desktop Pool
* Virtualization Type

To test enrichment, ensure that Collector is installed on the VMs and is operational by running the following query:

{% code lineNumbers="true" %}

```sql
devices
| where virtualization.desktop_broker == azure_virtual_desktop
| list name, hardware.type, virtualization.disk_image, virtualization.desktop_pool, virtualization.environment_name, virtualization.type, virtualization.last_update
| sort virtualization.last_update desc
```

{% endcode %}

For more information about running queries, see the [investigations](https://docs.nexthink.com/platform/user-guide/investigations "mention") documentation.

#### Collector on VMs <a href="#id-4.-test-collector-on-vms" id="id-4.-test-collector-on-vms"></a>

{% hint style="info" %}
If needed, contact Nexthink support or your Nexthink representative.
{% endhint %}

**Shared VDI**

Ensure data such as the following are visible in Nexthink:

* Device ID
* User Name
* Desktop Pool

To check this, run the following query:

{% code lineNumbers="true" %}

```sql
vdi_sessions
| where device.virtualization.desktop_broker == azure_virtual_desktop and vdi_session.virtualization_type == shared
| list vdi_session.name, user.name, device.name, desktop_pool, first_seen
| sort first_seen desc
```

{% endcode %}

**Pooled VDI**

Confirm that instances report the following after deployment:

* Unique Device IDs
* Accurate Pool Names
* Fresh Boot Times

To check this, run the following query:

{% code lineNumbers="true" %}

```sql
devices
| where virtualization.desktop_broker == azure_virtual_desktop and virtualization.type == pooled
| list device.name, virtualization.desktop_pool, boot.last_full_boot_time
| sort boot.last_full_boot_time desc
```

{% endcode %}

**Personal VDI**

Verify the consistent reporting of the following:

* Device ID and Assigned User
* System uptime across Reboots and Logons

To check this, run the following query:

{% code lineNumbers="true" %}

```sql
devices
| where virtualization.desktop_broker == azure_virtual_desktop and virtualization.type == personal
| with session.vdi_events during past 168h
| compute number_of_sessions = vdi_session.count(), time_since_session_last_seen = end_time.last().time_elapsed(), last_user = user.name.last()
| include device_performance.boots during past 168h
| compute number_of_restarts = number_of_boots.sum()
| include session.logins during past 168h
| compute time_since_last_login = time.last().time_elapsed(), number_of_logons = number_of_logins.sum()
| list name, last_user, number_of_sessions, time_since_session_last_seen, number_of_logons, time_since_last_login, number_of_restarts, boot.last_full_boot_time.time_elapsed(), last_seen.time_elapsed()
| sort time_since_session_last_seen desc
```

{% endcode %}
{% endstep %}

{% step %}

### Install endpoint agents on client devices <a href="#id-5.-set-up-client-devices" id="id-5.-set-up-client-devices"></a>

#### Install Collectors on c**orporate-managed devices** <a href="#i.-corporate-managed-devices" id="i.-corporate-managed-devices"></a>

For client devices that are centrally managed by your organization, distribute Collector across all applicable devices using your preferred software deployment tools.

Perform the procedure described in the [installing-collector](https://docs.nexthink.com/platform/configuring_nexthink/bringing-data-into-your-nexthink-instance/deploying-nexthink-in-non-vdi-environment/installing-collector "mention") documentation.

{% hint style="info" %}
The VDI Client Extension is built into Collector; you do not need to install it separately.
{% endhint %}

#### Install VDI Extension on p**ersonal or self-managed devices** <a href="#ii.-personal-or-self-managed-devices" id="ii.-personal-or-self-managed-devices"></a>

For personal or self-managed client devices, make VDI Client Extension available for installation. This lightweight agent provides limited yet valuable client-side metrics without requiring full Collector deployment.

Perform the procedure described in the [installing-the-nexthink-vdi-client-extension](https://docs.nexthink.com/platform/configuring_nexthink/bringing-data-into-your-nexthink-instance/deploying-nexthink-in-vdi-environment/installing-the-nexthink-vdi-client-extension "mention") documentation.
{% endstep %}

{% step %}

### Test client devices <a href="#id-6.-test-client-devices" id="id-6.-test-client-devices"></a>

#### **Corporate-managed devices** <a href="#i.-corporate-managed-devices.1" id="i.-corporate-managed-devices.1"></a>

For sessions launched from managed client devices, confirm visibility into fields such as:

* Round-Trip Time
* Client CPU usage
* Wi-Fi Signal Strength
* Link Speed

While the network RTT is available even if Collector is installed only on the VM, full client performance information requires Collector to be installed on the endpoint. To validate the installation, check that client metrics are reported for the sessions.

If the client device is running Collector and reporting data to your Nexthink instance, its name appears as a link to the Device View, where you can access detailed information and activity.

To check this, run the following query:

{% code lineNumbers="true" %}

```sql
vdi_sessions
| with session.vdi_events during past 168h
| compute average_network_rtt = network_rtt.avg(), average_wifi_signal_strength = client.network.wifi_signal_strength.avg(), average_link_speed = client.network.wired_link_speed.avg(), average_client_cpu_usage = client.cpu.normalized_usage.avg(), last_client_plugin_version = client.plugin_version.last()
| list vdi_session.name, device.name, user.name, name, last_client.device.name, last_client_plugin_version, average_network_rtt, average_wifi_signal_strength, average_link_speed, average_client_cpu_usage
| sort last_seen desc
```

{% endcode %}

#### **Partner-managed or bring your own devices** <a href="#ii.-partner-managed-or-byo-devices" id="ii.-partner-managed-or-byo-devices"></a>

For sessions launched from externally-managed client devices, confirm visibility into fields such as:

* Round-Trip Time
* Client CPU usage
* Wi-Fi Signal Strength
* Link Speed

While the network RTT is available even if Collector is installed only on the VM, full network performance information requires either Collector or VDI Client Extension to be installed on the client device. To validate the installation, check that networking metrics are reported for the sessions.

If VDI Client Extension is installed, no additional device data is captured and therefore no Device View is available for the client device. In this case, client-related performance information is reported only within the VDI sessions.

To check this, run the following query:

{% code lineNumbers="true" %}

```sql
vdi_sessions
| with session.vdi_events during past 168h
| compute average_network_rtt = network_rtt.avg(), average_wifi_signal_strength = client.network.wifi_signal_strength.avg(), average_link_speed = client.network.wired_link_speed.avg(), average_client_cpu_usage = client.cpu.normalized_usage.avg(), last_client_plugin_version = client.plugin_version.last()
| list vdi_session.name, device.name, user.name, name, last_client.device.name, last_client_plugin_version, average_network_rtt, average_wifi_signal_strength, average_link_speed, average_client_cpu_usage
| sort last_seen desc
```

{% endcode %}
{% endstep %}
{% endstepper %}


---

# Agent Instructions: Querying This Documentation

If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter:

```
GET https://docs.nexthink.com/platform/configuring_nexthink/bringing-data-into-your-nexthink-instance/deploying-nexthink-in-vdi-environment/vdi-platform-specific-deployment-scenarios/microsoft-avd.md?ask=<question>
```

The question should be specific, self-contained, and written in natural language.
The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
