VMware Horizon 7.1 User Manual

View Integration
VMware Horizon 7
Version 7.1
This document supports the version of each product listed and supports all subsequent versions until the document is replaced by a new edition. To check for more recent editions of this document, see http://www.vmware.com/support/pubs.
EN-002046-00
You can find the most up-to-date technical documentation on the VMware Web site at:
hp://www.vmware.com/support/
The VMware Web site also provides the latest product updates.
If you have comments about this documentation, submit your feedback to:
docfeedback@vmware.com
Copyright © 2016–2017 VMware, Inc. All rights reserved. Copyright and trademark information.
VMware, Inc.
3401 Hillview Ave. Palo Alto, CA 94304 www.vmware.com
2 VMware, Inc.

Contents

View Integration 5
Introduction to View Integration 7
1
View Components 7
Integration Interfaces to View 8
Integrating View with the Event Database 9
2
Event Database Tables and Schemas 9
Connection Broker Events 11
Horizon Agent Events 16
View Administrator Events 17
Event Message Aributes 24
Sample Database Queries and Views 25
Using View PowerCLI 27
3
Geing Started with View PowerCLI 27
View Administrator, PowerCLI Cmdlets, and View Command-Line Interfaces Compared 30
View PowerCLI cmdlet Reference 34
View PowerCLI cmdlet Parameters 36
Examples of Using View PowerCLI cmdlets 40
Examples of Using View PowerCLI to Perform Advanced Tasks 46
Assigning Multiple Network Labels to a Desktop Pool 52
VMware, Inc.
Customizing LDAP Data 61
4
Introduction to LDAP Conguration Data 61
Modifying LDAP Conguration Data 62
Integrating View with Microsoft SCOM 67
5
Seing Up a SCOM Integration 67
Monitoring View in the Operations Manager Console 72
Examining PCoIP Session Statistics with WMI 77
6
Using PCoIP Session Statistics 77
General PCoIP Session Statistics 78
PCoIP Audio Statistics 78
PCoIP Imaging Statistics 79
PCoIP Network Statistics 80
PCoIP USB Statistics 81
Examples of Using PowerShell cmdlets to Examine PCoIP Statistics 82
3
Seing Desktop Policies with Start Session Scripts 83
7
Index 89
Obtaining Input Data for a Start Session Script 83
Best Practices for Using Start Session Scripts 83
Preparing a View Desktop to Use a Start Session Script 84
Sample Start Session Scripts 86
4 VMware, Inc.

View Integration

The View Integration document describes how to integrate View™ software with third-party software such as Windows PowerShell, business intelligence reporting engines, and Microsoft System Center Operations Manager (SCOM).
Intended Audience
This document is intended for anyone who wants to customize or integrate software to work with View. The information in this document is wrien for experienced Windows or Linux system administrators who are familiar with virtual machine technology and datacenter operations.
VMware, Inc. 5
6 VMware, Inc.

Introduction to View Integration 1

With View, system administrators can provision desktops and control user access to these desktops. Client software connects users to virtual machines running in VMware vSphere™, or to physical systems running within your network environment. In addition, View administrators can congure Remote Desktop Services (RDS) hosts to provide View desktop and application sessions to client devices.
This chapter includes the following topics:
“View Components,” on page 7
n
“Integration Interfaces to View,” on page 8
n

View Components

You can use View with VMware vCenter Server to create desktops from virtual machines that are running on VMware ESX® or VMware ESXi™ hosts and deploy these desktops to end users. You can also install View on RDS hosts to deploy desktops and applications to end users. View uses your existing Active Directory infrastructure for user authentication and management.
After you create a desktop or application, authorized end users can use Web-based or locally installed client software to securely connect to centralized virtual machines, back-end physical systems, or RDS hosts.
View consists of the following major components.
View Connection Server
Horizon Agent
Horizon Client
View Administrator
VMware, Inc. 7
A software service that acts as a broker for client connections by authenticating and then directing incoming user requests to the appropriate virtual machine, physical system, or RDS host.
A software service that is installed on all guest virtual machines, physical systems, or RDS hosts to allow them to be managed by View. Horizon Agent provides features such as connection monitoring, virtual printing, USB support, and single sign-on.
A software application that communicates with View Connection Server to enable users to connect to their desktops.
A Web application that enables View administrators to congure View Connection Server, deploy desktop and application pools, manage machines, control user authentication, initiate and examine system events, and perform analytical activities.
N View Administrator is named Horizon Administrator in Horizon 7.
vCenter Server
View Composer
A server that acts as a central administrator for ESX/ESXi hosts that are connected on a network. A vCenter Server instance provides the central point for conguring, provisioning, and managing virtual machines in the datacenter.
A software service that is installed on a vCenter Server instance to enable View to rapidly deploy multiple linked-clone desktops from a single centralized base image.

Integration Interfaces to View

You can use several interfaces to integrate View with external applications.
Event database
View PowerCLI
Lightweight Directory Access Protocol (LDAP)
Microsoft System Center Operations Manager (SCOM)
You can congure View to record events to a Microsoft SQL Server or Oracle database. You can then use business intelligence reporting engines to access and analyze this database.
You can use the PowerShell interface to perform a wide variety of administration tasks on View components.
You can export and import LDAP conguration data from and into View. You can create scripts that update this conguration data without accessing View Administrator directly.
You can monitor the operations of View components from the SCOM console.
Windows Management Instrumentation (WMI)
You can examine performance statistics for a PCoIP session.
8 VMware, Inc.
Integrating View with the Event
Database 2
You can congure View to record events to a Microsoft SQL Server or Oracle database. View records events such as end-user actions, administrator actions, alerts that report system failures and errors, and statistical sampling.
End-user actions include logging and starting desktop and application sessions. Administrator actions include adding entitlements and creating desktop and application pools. An example of statistical sampling is recording the maximum number of users over a 24-hour period.
You can use business intelligence reporting engines such as Crystal Reports, IBM Cognos, MicroStrategy 9, and Oracle Enterprise Performance Management System to access and analyze the event database.
This chapter includes the following topics:
“Event Database Tables and Schemas,” on page 9
n
“Connection Broker Events,” on page 11
n
“Horizon Agent Events,” on page 16
n
“View Administrator Events,” on page 17
n
“Event Message Aributes,” on page 24
n
“Sample Database Queries and Views,” on page 25
n

Event Database Tables and Schemas

View uses database tables to implement the event database. The event database prepends the names of these tables with a prex that you dene when you set up the database.
Event Database Tables
The following table shows the database tables that implement the event database in View.
Table 21. Event Database Tables
Table Name Description
event Metadata and search optimization data for recent events.
event_data Data values for recent events.
event_data_historical Data values for all events.
event_historical Metadata and search optimization data for all events.
VMware, Inc. 9
View records details about events to all the database tables. After a certain period of time has elapsed since writing an event record, View deletes the record from the event and event_data tables. You can use View Administrator to congure the time period for which the database keeps a record in the event and event_data tables.
I View does not restrict the growth of the event_historical and event_data_historical tables. You must implement a space management policy for these tables.
A unique primary key, EventID, identies each event that View records in the event and event_historical tables. View records data values for each event in the event_data and event_data_historical tables. You can obtain the complete set of information for an event by joining the event and event_data tables or the event_ historical and event_data_historical tables on the EventID column.
The EventType, Severity, and Time columns in the event and event_historical tables identify the type and severity of an event and the time at which it occurred.
For information about seing up the event database, see the View Installation document.
N Events might be lost if you restart View Connection Server instances while the event database is not running. For a solution that avoids this problem see hp://kb.vmware.com/kb/1021461.
Event Database Schemas
The following table shows the schema for the event and event_historical database tables.
Table 22. Schema for the event and event_historical Tables
Column Name Oracle Data Type SQL Server Data Type Description
Acknowledged SMALLINT tinyint Whether View acknowledged the event.
0 = false
n
1 = true
n
DesktopId NVARCHAR2(512) nvarchar(512) Desktop ID of the associated pool.
EventID INTEGER int Unique primary key for the event.
EventType NVARCHAR2(512) nvarchar(512) Event name that corresponds to an item
in the message catalog. For example, BROKER_USERLOGGEDIN.
FolderPath NVARCHAR2(512) nvarchar(512) Full path of the folder that contains the
associated object.
GroupId NVARCHAR2(512) nvarchar(512) SID of the associated group in Active
Directory.
LUNId NVARCHAR2(512) nvarchar(512) ID of the LUN that stores the associated
object.
MachineId NVARCHAR2(512) nvarchar(512) ID of the associated physical or virtual
machine.
Module NVARCHAR2(512) nvarchar(512) View component that raised the event.
For example, Admin, Broker, Tunnel, Framework, Client, or Agent.
ModuleAndEventText NVARCHAR2(512) nvarchar(512) Event message with values substituted
for aribute parameters.
Node NVARCHAR2(512) nvarchar(512) Name of the virtual device node.
Severity NVARCHAR2(512) nvarchar(512) Severity level. For example, INFO,
WARNING, ERROR, AUDIT_SUCCESS, AUDIT_FAIL.
Source NVARCHAR2(512) nvarchar(512) Identier for the source of the event.
10 VMware, Inc.
Chapter 2 Integrating View with the Event Database
Table 22. Schema for the event and event_historical Tables (Continued)
Column Name Oracle Data Type SQL Server Data Type Description
ThinAppId NVARCHAR2(512) nvarchar(512) ID of the associated ThinApp™ object.
Time TIMESTAMP datetime Time at which the event occurred,
measured from the epoch (January 1,
1970).
UserDiskPathId NVARCHAR2(512) nvarchar(512) ID of the user disk.
UserSID NVARCHAR2(512) nvarchar(512) SID of the associated user in Active
Directory.
The following table shows the schema for the event_data and event_data_historical database tables.
Table 23. Schema for the event_data and event_data_historical Tables
Column Name Oracle Data Type SQL Server Data Type Description
BooleanValue SMALLINT tinyint Value of a Boolean aribute.
0 = false
n
1 = true
n
EventID INTEGER int Unique primary key for the event.
IntValue INTEGER int Value of an integer aribute.
Name NVARCHAR2(512) nvarchar(512) Aribute name (for example,
UserDisplayName).
StrValue NVARCHAR2(512) nvarchar(512) Value of a string aribute. For other
types of aributes, this column contains an interpretation of the data type as a string.
TimeValue TIMESTAMP datetime Value of a date and time aribute.
Type SMALLINT tinyint The data type of the aribute.
0 = StrValue
n
1 = IntValue
n
2 = TimeValue
n
3 = BooleanValue
n

Connection Broker Events

Connection broker events report View Connection Server-related information, such as desktop and application sessions, user authentication failures, and provisioning errors.
The BROKER_DAILY_MAX_DESKTOP_SESSIONS event reports the maximum number of concurrent desktop sessions over a 24-hour period. If a user runs multiple desktop sessions concurrently, each desktop session is counted separately.
The BROKER_DAILY_MAX_APP_USERS event reports the maximum number of concurrent application users over a 24-hour period. If a user runs multiple applications concurrently, the user is counted only once. Short-lived sessions might not be included in the count because the sampling is performed every ve minutes.
The BROKER_VC_DISABLED and BROKER_VC_ENABLED events report the state of the vCenter driver that View uses to track a vCenter Server instance.
The BROKER_VC_STATUS_* events report the state of a vCenter Server instance.
The following table lists all the event types for View Connection Server.
VMware, Inc. 11
Table 24. Connection Broker Events
Event Type Severity ModuleAndEventText
BROKER_AGENT_OFFLINE BROKER_AGENT_OFF
LINE WARNING
The agent running on machine ${MachineName} has not responded to queries, marking it as oine
BROKER_AGENT_ONLINE WARNING The agent running on machine ${MachineName} is
responding again, but did not send a startup message
BROKER_APPLICATION_LAUNCH_FAILURE ERROR Unable to launch from Pool ${PoolId} for user $
{UserDisplayName}: The broker encountered an error while processing the request, please contact support for assistance
BROKER_APPLICATION_MISSING WARNING At least ${ApplicationMissingCount} applications, including
${ApplicationExecutable}, are not installed on $ {MachineName} in Pool ${PoolId}
BROKER_APPLICATION_NOT_ENTITLED AUDIT_FAIL Unable to launch from Pool ${PoolId} for user $
{UserDisplayName}: User is not entitled to this Pool
BROKER_APPLICATION_PROTOCOL_NOT_SUPP ORTED
AUDIT_FAIL Unable to launch from Pool ${PoolId} for user $
{UserDisplayName}: Requested protocol ${ProtocolId} is not supported
BROKER_APPLICATION_REQUEST INFO User ${UserDisplayName} requested Application $
{ApplicationId}
BROKER_APPLICATION_SESSION_REQUEST INFO User ${UserDisplayName} requested an application session
from Pool ${PoolId}
BROKER_DAILY_MAX_DESKTOP_SESSIONS INFO ${Time}: Over the past 24 hours, the maximum number of
concurrent desktop sessions was ${UserCount}
BROKER_DAILY_MAX_APP_USERS INFO ${Time}: Over the past 24 hours, the maximum number of
users with concurrent application sessions was ${UserCount}
BROKER_DESKTOP_LAUNCH_FAILURE ERROR Unable to launch from Pool ${DesktopId} for user $
{UserDisplayName}: The broker encountered an error while processing the request, please contact support for assistance
BROKER_DESKTOP_NOT_ENTITLED AUDIT_FAIL Unable to launch from Pool ${DesktopId} for user $
{UserDisplayName}: User is not entitled to this Pool
BROKER_DESKTOP_PROTOCOL_NOT_SUPPORTEDAUDIT_FAIL Unable to launch from Pool ${DesktopId} for user $
{UserDisplayName}: Requested protocol ${ProtocolId} is not supported
BROKER_DESKTOP_REQUEST INFO User ${UserDisplayName} requested Pool ${DesktopId}
BROKER_EVENT_HANDLING_STARTED INFO Broker ${BrokerName} has started handling events
BROKER_EVENT_HANDLING_STOPPED INFO ${BrokerName} has stopped handling events
BROKER_MACHINE_ALLOCATED INFO User ${UserDisplayName} requested Pool ${DesktopId},
allocated machine ${MachineName}
BROKER_MACHINE_ASSIGNED_UNAVAILABLE AUDIT_FAIL Unable to launch from Pool ${DesktopId} for user $
{UserDisplayName}: Assigned machine ${MachineName} is unavailable
BROKER_MACHINE_CANNOT_CONNECT AUDIT_FAIL Unable to launch from Pool ${DesktopId} for user $
{UserDisplayName}: Failed to connect to Machine $ {MachineName} using ${ProtocolId}
BROKER_MACHINE_CONFIGURED_VIDEO_SETTI NGS
INFO Successfully congured video seings for Machine VM $
{MachineName} in Pool ${DesktopId}
BROKER_MACHINE_NOT_READY WARNING Unable to launch from Pool ${DesktopId} for user $
{UserDisplayName}: Machine ${MachineName} is not ready to accept connections
BROKER_MACHINE_OPERATION_DELETED INFO machine ${MachineName} has been deleted
12 VMware, Inc.
Chapter 2 Integrating View with the Event Database
Table 24. Connection Broker Events (Continued)
Event Type Severity ModuleAndEventText
BROKER_MACHINE_PROTOCOL_NOT_SUPPORTEDAUDIT_FAIL Unable to launch from Pool ${DesktopId} for user $
{UserDisplayName}: Machine ${MachineName} does not support protocol ${ProtocolId}
BROKER_MACHINE_PROTOCOL_UNAVAILABLE AUDIT_FAIL Unable to launch from Pool ${DesktopId} for user $
{UserDisplayName}: Machine ${MachineName} did not report protocol ${ProtocolId} as ready
BROKER_MACHINE_REJECTED_SESSION WARNING Unable to launch from Pool ${DesktopId} for user $
{UserDisplayName}: Machine ${MachineName} rejected the start session request
BROKER_MACHINE_SESSION_TIMEDOUT WARNING Session for user ${UserDisplayName} timed out
BROKER_MULTIPLE_DESKTOPS_FOR_KIOSK_USERWARNING User ${UserDisplayName} is entitled to multiple desktop
pools
BROKER_POOL_CANNOT_ASSIGN AUDIT_FAIL Unable to launch from Pool ${DesktopId} for user $
{UserDisplayName}: There are no machines available to assign the user to
BROKER_POOL_COMANAGER_REQUIRED AUDIT_FAIL Unable to launch from Pool ${DesktopId} for user $
{UserDisplayName}: No co-management availability for protocol ${ProtocolId}
BROKER_POOL_EMPTY AUDIT_FAIL Unable to launch from Pool ${DesktopId} for user $
{UserDisplayName}: The Desktop Pool is empty
BROKER_POOL_NO_MACHINE_ASSIGNED AUDIT_FAIL Unable to launch from Pool ${DesktopId} for user $
{UserDisplayName}: No machine assigned to this user
BROKER_POOL_NO_RESPONSES AUDIT_FAIL Unable to launch from Pool ${DesktopId} for user $
{UserDisplayName}: No machines in the Desktop Pool are responsive
BROKER_POOL_OVERLOADED AUDIT_FAIL Unable to launch from Pool ${DesktopId} for user $
{UserDisplayName}: All responding machines are currently in use
BROKER_POOL_POLICY_VIOLATION AUDIT_FAIL Unable to launch from Pool ${DesktopId} for user $
{UserDisplayName}: This Desktop Pool does not allow online sessions
BROKER_POOL_PROTOCOL_NOT_SUPPORTED AUDIT_FAIL Unable to launch from Pool ${DesktopId} for user $
{UserDisplayName}: There were no machines available that support protocol ${ProtocolId}
BROKER_POOL_PROTOCOL_UNAVAILABLE AUDIT_FAIL Unable to launch from Pool ${DesktopId} for user $
{UserDisplayName}: There were no machines available that reported protocol ${ProtocolId} as ready
BROKER_POOL_TUNNEL_NOT_SUPPORTED AUDIT_FAIL Unable to launch from Pool ${DesktopId} for user $
{UserDisplayName}: Tunnelling is not supported for protocol ${ProtocolId}
BROKER_PROVISIONING_ERROR_CONFIG_CLEA RED
INFO The previously reported conguration problem is no longer
present on Pool ${DesktopId}
BROKER_PROVISIONING_ERROR_CONFIG_SET ERROR Provisioning error occurred on Pool ${DesktopId} because of
a conguration problem
BROKER_PROVISIONING_ERROR_DISK_CLEAREDINFO The previously reported disk problem is no longer present on
Pool ${DesktopId}
BROKER_PROVISIONING_ERROR_DISK_LC_RESE RVATION_CLEARED
INFO The previously reported error due to available free disk space
reserved for linked clones is no longer present on Pool $ {DesktopId}
BROKER_PROVISIONING_ERROR_DISK_LC_RESE RVATION_SET
ERROR Provisioning error occurred on Pool ${DesktopId} because
available free disk space is reserved for linked clones
VMware, Inc. 13
Table 24. Connection Broker Events (Continued)
Event Type Severity ModuleAndEventText
BROKER_PROVISIONING_ERROR_DISK_SET WARNING Provisioning error occurred on Pool ${DesktopId} because of
a disk problem
BROKER_PROVISIONING_ERROR_LICENCE_CLE ARED
INFO The previously reported licensing problem is no longer
present on Pool ${DesktopId}
BROKER_PROVISIONING_ERROR_LICENCE_SET ERROR Provisioning error occurred on Pool ${DesktopId} because of
a licensing problem
BROKER_PROVISIONING_ERROR_NETWORKING _CLEARED
BROKER_PROVISIONING_ERROR_NETWORKING _SET
BROKER_PROVISIONING_ERROR_RESOURCE_CL EARED
INFO The previously reported networking problems with
Horizon Agent are no longer present on Pool ${DesktopId}
ERROR Provisioning error occurred on Pool ${DesktopId} because of
a networking problem with Horizon Agent
INFO The previously reported resource problem is no longer
present on Pool ${DesktopId}
BROKER_PROVISIONING_ERROR_RESOURCE_SETERROR Provisioning error occurred on Pool ${DesktopId} because of
a resource problem
BROKER_PROVISIONING_ERROR_TIMEOUT_CUS TOMIZATION_CLEARED
BROKER_PROVISIONING_ERROR_TIMEOUT_CUS TOMIZATION_SET
INFO The previously reported timeout while customizing is no
longer present on Pool ${DesktopId}
ERROR Provisioning error occurred on Pool ${DesktopId} because of
a timeout while customizing
BROKER_PROVISIONING_ERROR_VM_CLONING ERROR Provisioning error occurred for Machine ${MachineName}:
Cloning failed for Machine
BROKER_PROVISIONING_ERROR_VM_CUSTOMI ZATION_ERROR
BROKER_PROVISIONING_ERROR_VM_CUSTOMI ZATION_NETWORKING
ERROR Provisioning error occurred for Machine ${MachineName}:
Customization failed for Machine
ERROR Provisioning error occurred for Machine ${MachineName}:
Customization error due to no network communication between Horizon Agent and Connection Server
BROKER_PROVISIONING_ERROR_VM_CUSTOMI ZATION_TIMEOUT
BROKER_PROVISIONING_SVI_ERROR_COMPOSE R_AGENT_INIT_FAILED
BROKER_PROVISIONING_SVI_ERROR_RECONFIG _FAILED
BROKER_PROVISIONING_SVI_ERROR_REFIT_ FAILED
BROKER_PROVISIONING_SVI_ERROR_ REMOVING_VM
BROKER_PROVISIONING_VERIFICATION_ FAILED_USER_ASSIGNED
ERROR Provisioning error occurred for Machine ${MachineName}:
Customization operation timed out
ERROR Provisioning error occurred for Machine ${MachineName}:
View Composer agent initialization failed
ERROR Provisioning error occurred for Machine ${MachineName}:
Recongure operation failed
ERROR Provisioning error occurred for Machine ${MachineName}:
Ret operation ${SVIOperation} failed
ERROR Provisioning error occurred for Machine ${MachineName}:
Unable to remove Machine from inventory
WARNING Provisioning verication failed for Machine $
{MachineName}: User is already assigned to a machine in Pool ${DesktopId}
BROKER_PROVISIONING_VERIFICATION_ FAILED_USER_CANNOT_BE_ASSIGNED
WARNING Provisioning verication failed for Machine $
{MachineName}: A user cannot be assigned because Pool $ {DesktopId} is not persistent
BROKER_PROVISIONING_VERIFICATION_ FAILED_VMNAME_IN_USE
WARNING Provisioning verication failed for Machine $
{MachineName}: A machine already exists in Pool $ {DesktopId} with name ${MachineName}
BROKER_SECURITY_SERVER_ADD_FAILED AUDIT_FAIL Failed to add security server ${SecurityServerId}
BROKER_SECURITY_SERVER_ADD_FAILED_ PASSWORD_EXPIRED
BROKER_SECURITY_SERVER_ADD_FAILED_ PASSWORD_INCORRECT
AUDIT_FAIL Failed to add security server ${SecurityServerId}, pairing
password expired
AUDIT_FAIL Failed to add security server ${SecurityServerId}, pairing
password incorrect
14 VMware, Inc.
Chapter 2 Integrating View with the Event Database
Table 24. Connection Broker Events (Continued)
Event Type Severity ModuleAndEventText
BROKER_SECURITY_SERVER_ADD_FAILED_ PASSWORD_NOT_SET
AUDIT_FAIL Failed to add security server ${SecurityServerId}, pairing
password not set
BROKER_SECURITY_SERVER_ADDED AUDIT_SUCCESS Security server ${SecurityServerId} added
BROKER_SVI_ARCHIVE_UDD_FAILED AUDIT_FAIL Failed to archive user data disk ${UserDiskName} to location
${SVIPath}
BROKER_SVI_ARCHIVE_UDD_SUCCEEDED AUDIT_SUCCESS Archived user data disk ${UserDiskName} to location $
{SVIPath}
BROKER_SVI_ATTACH_UDD_FAILED AUDIT_FAIL Failed to aach user data disk ${UserDiskName} to VM $
{SVIVMID}
BROKER_SVI_ATTACH_UDD_SUCCEEDED AUDIT_SUCCESS Aached user data disk ${UserDiskName} to VM $
{SVIVMID}
BROKER_SVI_DETACH_UDD_FAILED AUDIT_FAIL Failed to detach user data disk ${UserDiskName} from VM $
{SVIVMID}
BROKER_SVI_DETACH_UDD_SUCCEEDED AUDIT_SUCCESS Detached user data disk ${UserDiskName} from VM $
{SVIVMID}
BROKER_USER_AUTHFAILED_ACCOUNT_ DISABLED
BROKER_USER_AUTHFAILED_ACCOUNT_ EXPIRED
BROKER_USER_AUTHFAILED_ACCOUNT_ LOCKED_OUT
BROKER_USER_AUTHFAILED_ACCOUNT_ RESTRICTION
BROKER_USER_AUTHFAILED_BAD_USER_ PASSWORD
AUDIT_FAIL User ${UserDisplayName} failed to authenticate because the
account is disabled
AUDIT_FAIL User ${UserDisplayName} failed to authenticate because the
account has expired
AUDIT_FAIL User ${UserDisplayName} failed to authenticate because the
account is locked out
AUDIT_FAIL User ${UserDisplayName} failed to authenticate because of
an account restriction
AUDIT_FAIL User ${UserDisplayName} failed to authenticate because of a
bad username or password
BROKER_USER_AUTHFAILED_GENERAL AUDIT_FAIL User ${UserDisplayName} failed to authenticate
BROKER_USER_AUTHFAILED_NO_LOGON_ SERVERS
BROKER_USER_AUTHFAILED_PASSWORD_ EXPIRED
BROKER_USER_AUTHFAILED_PASSWORD_ MUST_CHANGE
BROKER_USER_AUTHFAILED_SECUREID_
AUDIT_FAIL User ${UserDisplayName} failed to authenticate because
there are no logon servers
AUDIT_FAIL User ${UserDisplayName} failed to authenticate because the
password has expired
AUDIT_FAIL User ${UserDisplayName} failed to authenticate because the
password must change
AUDIT_FAIL SecurID access denied for user ${UserDisplayName}
ACCESS_DENIED
BROKER_USER_AUTHFAILED_SECUREID_ NEWPIN_REJECTED
BROKER_USER_AUTHFAILED_SECUREID_ WRONG_NEXTTOKEN
BROKER_USER_AUTHFAILED_SECUREID_ WRONG_STATE
BROKER_USER_AUTHFAILED_TIME_ RESTRICTION
AUDIT_FAIL SecurID access denied for user ${UserDisplayName} because
new pin was rejected
AUDIT_FAIL SecurID access denied for user ${UserDisplayName} because
wrong next token entered
AUDIT_FAIL SecurID access denied for user ${UserDisplayName} because
of incorrect state
AUDIT_FAIL User ${UserDisplayName} failed to authenticate because of a
time restriction
BROKER_USER_NOT_AUTHORIZED AUDIT_FAIL User ${UserDisplayName} has authenticated, but is not
authorized to perform the operation
BROKER_USER_NOT_ENTITLED AUDIT_FAIL User ${UserDisplayName} has authenticated, but is not
entitled to any Pools
VMware, Inc. 15
Table 24. Connection Broker Events (Continued)
Event Type Severity ModuleAndEventText
BROKER_USERCHANGEDPASSWORD AUDIT_SUCCESS Password for ${UserDisplayName} has been changed by the
user
BROKER_USERLOGGEDIN AUDIT_SUCCESS User ${UserDisplayName} has logged in
BROKER_USERLOGGEDOUT AUDIT_SUCCESS User ${UserDisplayName} has logged out
BROKER_VC_DISABLED INFO vCenter at address ${VCAddress} has been temporarily
disabled
BROKER_VC_ENABLED INFO vCenter at address ${VCAddress} has been enabled
BROKER_VC_STATUS_CHANGED_CANNOT_ LOGIN
BROKER_VC_STATUS_CHANGED_DOWN INFO vCenter at address ${VCAddress} is down
BROKER_VC_STATUS_CHANGED_INVALID_ CREDENTIALS
BROKER_VC_STATUS_CHANGED_NOT_YET_ CONNECTED
BROKER_VC_STATUS_CHANGED_ RECONNECTING
BROKER_VC_STATUS_CHANGED_UNKNOWN WARNING The status of vCenter at address ${VCAddress} is unknown
BROKER_VC_STATUS_CHANGED_UP INFO vCenter at address ${VCAddress} is up
WARNING Cannot log in to vCenter at address ${VCAddress}
WARNING vCenter at address ${VCAddress} has invalid credentials
INFO Not yet connected to vCenter at address ${VCAddress}
INFO Reconnecting to vCenter at address ${VCAddress}

Horizon Agent Events

View Agent events report Horizon Agent-related information, such as the users who have logged in to or disconnected from a specic machine, whether Horizon Agent has shut down on a specic machine, and whether Horizon Agent has sent a start up message from a specic machine to View Connection Server.
Table 25. Horizon Agent Events
Event Type Severity ModuleAndEventText
AGENT_CONNECTED INFO User ${UserDisplayName} has logged in to a new session on machine $
{MachineName}
AGENT_DISCONNECTED INFO User ${UserDisplayName} has disconnected from machine $
{MachineName}
AGENT_ENDED INFO User ${UserDisplayName} has logged o machine ${MachineName}
AGENT_PENDING INFO The agent running on machine ${MachineName} has accepted an
allocated session for user ${UserDisplayName}
AGENT_PENDING_ EXPIRED WARNING The pending session on machine ${MachineName} for user $
{UserDisplayName} has expired
AGENT_RECONFIGURED INFO Machine ${MachineName} has been successfully recongured
AGENT_RECONNECTED INFO User ${UserDisplayName} has reconnected to machine ${MachineName}
AGENT_RESUME INFO The agent on machine ${MachineName} sent a resume message
AGENT_SHUTDOWN INFO The agent running on machine ${MachineName} has shut down, this
machine will be unavailable
AGENT_STARTUP INFO The agent running on machine ${MachineName} has contacted the
connection server and sent a startup message
AGENT_SUSPEND INFO The agent on machine ${MachineName} sent a suspend message
16 VMware, Inc.
Chapter 2 Integrating View with the Event Database

View Administrator Events

View Administrator events report information about actions that users initiate in View Administrator.
Table 26. View Administrator Events
EventType Severity ModuleAndEventText
ADMIN_ADD_DESKTOP_ENTITLEMENT AUDIT_SUCCESS ${EntitlementDisplay} was entitled to Pool $
{DesktopId} by ${UserDisplayName}
ADMIN_ADD_LICENSE AUDIT_SUCCESS ${UserDisplayName} added license
ADMIN_ADD_LICENSE_FAILED AUDIT_FAIL ${UserDisplayName} failed to add license
ADMIN_ADD_PM AUDIT_SUCCESS ${UserDisplayName} added physical machine
${MachineName} to Pool ${DesktopId}
ADMIN_ADD_PM_FAILED AUDIT_FAIL ${UserDisplayName} failed to add physical
machine ${MachineName} to Pool $ {DesktopId}
ADMIN_ADD_THINAPP_ENTITLEMENT AUDIT_SUCCESS Application ${ThinAppDisplayName} was
assigned to Desktop ${MachineName} by $ {UserDisplayName}
ADMIN_ADD_THINAPP_ENTITLEMENT_FAILED AUDIT_FAIL ${UserDisplayName} failed to add Application
entitlement
ADMIN_ADD_THINAPP_POOL_ENTITLEMENT AUDIT_SUCCESS Application ${ThinAppDisplayName} was
assigned to Pool ${DesktopId} by $ {UserDisplayName}
ADMIN_ADMINSTRATOR_REMOVE_FAILED AUDIT_FAIL ${UserDisplayName} failed to remove all
permissions for Administrator $ {AdminPermissionEntity}
ADMIN_ADMINSTRATOR_REMOVED AUDIT_SUCCESS ${UserDisplayName} removed all permissions
for Administrator ${AdminPermissionEntity}
ADMIN_CONNECTION_BROKER_UPDATE_FAILED AUDIT_FAIL ${UserDisplayName} failed to update
connection broker ${BrokerId}
ADMIN_CONNECTION_BROKER_UPDATED AUDIT_SUCCESS ${UserDisplayName} updated connection
broker ${BrokerId}: (${ArChangeType}: $ {ArName} = ${ArValue})
ADMIN_CONNECTION_SERVER_BACKUP_FAILED AUDIT_FAIL ${UserDisplayName} failed to initiate a backup
of connection broker ${BrokerId}
ADMIN_CONNECTION_SERVER_BACKUP_INITIATED AUDIT_SUCCESS ${UserDisplayName} initiated a backup of
connection broker ${BrokerId}
ADMIN_CONNECTION_SERVER_DISABLE_FAILED AUDIT_FAIL ${UserDisplayName} failed to disable
connection broker ${BrokerId}
ADMIN_CONNECTION_SERVER_DISABLED AUDIT_SUCCESS ${UserDisplayName} is disabling connection
broker ${BrokerId}
ADMIN_CONNECTION_SERVER_ENABLE_FAILED AUDIT_FAIL ${UserDisplayName} failed to enable
connection broker ${BrokerId}
ADMIN_CONNECTION_SERVER_ENABLED AUDIT_SUCCESS ${UserDisplayName} is enabling connection
broker ${BrokerId}
ADMIN_DATABASE_CONFIGURATION_ADD_FAILED AUDIT_FAIL ${UserDisplayName} failed to add database
conguration
ADMIN_DATABASE_CONFIGURATION_ ADDED AUDIT_SUCCESS ${UserDisplayName} has added database
conguration
VMware, Inc. 17
Table 26. View Administrator Events (Continued)
EventType Severity ModuleAndEventText
ADMIN_DATABASE_CONFIGURATION_DELETE_FAILED AUDIT_FAIL ${UserDisplayName} failed to delete database
conguration
ADMIN_DATABASE_CONFIGURATION_DELETE_FAILED AUDIT_SUCCESS ${UserDisplayName} has deleted database
conguration
ADMIN_DATABASE_CONFIGURATION_UPDATE_FAILED AUDIT_FAIL ${UserDisplayName} failed to update database
conguration
ADMIN_DATABASE_CONFIGURATION_UPDATED AUDIT_SUCCESS ${UserDisplayName} has updated database
conguration
ADMIN_DEFAULT_DESKTOPPOOL_ASSIGN AUDIT_SUCCESS ${UserDisplayName} assigned Pool $
{DesktopId} for default desktop to $ {UserName}
ADMIN_DEFAULT_DESKTOPPOOL_ASSIGN_FAILED AUDIT_FAIL ${UserDisplayName} failed to assign Pool $
{DesktopId} for default desktop to $ {UserName}
ADMIN_DEFAULT_DESKTOPPOOL_UNASSIGN AUDIT_SUCCESS ${UserDisplayName} removed pool
assignment for default desktop to $ {UserName}
ADMIN_DEFAULT_DESKTOPPOOL_UNASSIGN_FAILED AUDIT_FAIL ${UserDisplayName} failed to remove Pool
assignment for default desktop to $ {UserName}
ADMIN_DESKTOP_ADDED AUDIT_SUCCESS ${UserDisplayName} added Pool ${DesktopId}
ADMIN_DESKTOP_ASSIGN AUDIT_SUCCESS ${UserDisplayName} assigned Desktop $
{MachineName} to ${UserName}
ADMIN_DESKTOP_ASSIGN_FAILED AUDIT_FAIL ${UserDisplayName} failed to assign Desktop
${MachineName} to ${UserName}
ADMIN_DESKTOP_EDITED AUDIT_SUCCESS ${UserDisplayName} edited Pool ${DesktopId}
(${ArChangeType}: ${ArName} = $ {ArValue})
ADMIN_DESKTOP_MAINTENANCE_MODE_UPDATE_FAILED AUDIT_FAIL ${UserDisplayName} failed to update desktop
${MachineName} to ${MaintenanceMode} maintenance mode
ADMIN_DESKTOP_MAINTENANCE_MODE_UPDATED AUDIT_SUCCESS ${UserDisplayName} updated desktop $
{MachineName} to ${MaintenanceMode} maintenance mode
ADMIN_DESKTOP_UNASSIGN AUDIT_SUCCESS ${UserDisplayName} removed assignment for
Desktop ${MachineName}
ADMIN_DESKTOP_UNASSIGN_FAILED AUDIT_FAIL ${UserDisplayName} failed to remove
assignment for Desktop ${MachineName}
ADMIN_ENABLE_DESKTOP_FAILED AUDIT_FAIL ${UserDisplayName} failed to set Pool $
{DesktopId} to ${EnableStatus}
ADMIN_ENABLE_DESKTOP_SUCCEEDED AUDIT_SUCCESS ${UserDisplayName} set Pool ${DesktopId} to
${EnableStatus}
ADMIN_ENABLED_DESKTOP_PROVISION_FAILED AUDIT_FAIL ${UserDisplayName} failed to set provisioning
for Pool ${DesktopId} to ${EnableStatus}
ADMIN_ENABLED_DESKTOP_PROVISION_SUCCEEDED AUDIT_SUCCESS ${UserDisplayName} set provisioning for Pool
${DesktopId} to ${EnableStatus}
ADMIN_EVENT_CONFIGURATION_UPDATE_FAILED AUDIT_FAIL ${UserDisplayName} failed to update event
conguration
18 VMware, Inc.
Chapter 2 Integrating View with the Event Database
Table 26. View Administrator Events (Continued)
EventType Severity ModuleAndEventText
ADMIN_EVENT_CONFIGURATION_UPDATED AUDIT_SUCCESS ${UserDisplayName} has updated global
conguration
ADMIN_FOLDER_ADD_FAILED AUDIT_FAIL ${UserDisplayName} failed to add folder $
{AdminFolderName}
ADMIN_FOLDER_ADDED AUDIT_SUCCESS ${UserDisplayName} added folder $
{AdminFolderName}
ADMIN_FOLDER_CHANGE_FAILED AUDIT_FAIL ${UserDisplayName} failed to change object $
{ObjectID}(type=${ObjectType}) to folder $ {AdminFolderName}
ADMIN_FOLDER_CHANGED AUDIT_SUCCESS ${UserDisplayName} changed object $
{ObjectID}(type=${ObjectType}) to folder $ {AdminFolderName}
ADMIN_FOLDER_DELETE_FAILED AUDIT_FAIL ${UserDisplayName} failed to delete folder $
{AdminFolderName}
ADMIN_FOLDER_DELETED AUDIT_SUCCESS ${UserDisplayName} deleted folder $
{AdminFolderName}
ADMIN_GLOBAL_CONFIGURATION_UPDATE_FAILED AUDIT_FAIL ${UserDisplayName} failed to update global
conguration
ADMIN_GLOBAL_CONFIGURATION_UPDATED AUDIT_SUCCESS ${UserDisplayName} updated global
conguration (${ArChangeType}: $ {ArName} = ${ArValue})
ADMIN_GLOBAL_POLICY_UPDATE_FAILED AUDIT_FAIL ${UserDisplayName} failed to update global
policies
ADMIN_GLOBAL_POLICY_UPDATED AUDIT_SUCCESS ${UserDisplayName} updated global policy ($
{ArChangeType}: ${ArName} = $ {ArValue})
ADMIN_PERFMON_CONFIGURATION_UPDATE_FAILED AUDIT_FAIL ${UserDisplayName} failed to update
performance monitoring conguration
ADMIN_PERFMON_CONFIGURATION_UPDATED AUDIT_SUCCESS ${UserDisplayName} has updated
performance monitoring conguration
ADMIN_PERMISSION_ADD_FAILED AUDIT_FAIL ${UserDisplayName} failed to add Permission
to ${AdminPermissionEntity} with Role $ {AdminRoleName} on Folder $ {AdminFolderName}
ADMIN_PERMISSION_ADDED AUDIT_SUCCESS ${UserDisplayName} added Permission to $
{AdminPermissionEntity} with Role $ {AdminRoleName} on Folder $ {AdminFolderName}
ADMIN_PERMISSION_REMOVE_FAILED AUDIT_FAIL ${UserDisplayName} failed to remove
Permission to ${AdminPermissionEntity} with Role ${AdminRoleName} on Folder $ {AdminFolderName}
ADMIN_PERMISSION_REMOVED AUDIT_SUCCESS ${UserDisplayName} removed Permission to $
{AdminPermissionEntity} with Role $ {AdminRoleName} on Folder $ {AdminFolderName}
ADMIN_POOL_POLICY_UPDATE_FAILED AUDIT_FAIL ${UserDisplayName} failed to update Pool $
{DesktopId} policies
ADMIN_POOL_POLICY_UPDATED AUDIT_SUCCESS ${UserDisplayName} updated Pool $
{DesktopId} policy (${ArChangeType}: $ {ArName} = ${ArValue})
VMware, Inc. 19
Table 26. View Administrator Events (Continued)
EventType Severity ModuleAndEventText
ADMIN_REMOVE_DESKTOP_ENTITLEMENT AUDIT_SUCCESS ${EntitlementDisplay} was unentitled from
Pool ${DesktopId} by ${UserDisplayName}
ADMIN_REMOVE_DESKTOP_FAILED AUDIT_FAIL ${UserDisplayName} failed to removed Pool $
{DesktopId}
ADMIN_REMOVE_DESKTOP_SUCCEEDED AUDIT_SUCCESS ${UserDisplayName} removed Pool $
{DesktopId}
ADMIN_REMOVE_THINAPP_ENTITLEMENT AUDIT_SUCCESS Application ${ThinAppDisplayName} was
unassigned from Desktop ${MachineName} by ${UserDisplayName}
ADMIN_REMOVE_THINAPP_ENTITLEMENT_FAILED AUDIT_FAIL ${UserDisplayName} failed to remove
Application entitlement
ADMIN_REMOVE_THINAPP_POOL_ENTITLEMENT AUDIT_SUCCESS Application ${ThinAppDisplayName} was
unassigned from Pool ${DesktopId} by $ {UserDisplayName}
ADMIN_RESET_THINAPP_STATE AUDIT_SUCCESS Application ${ThinAppDisplayName} state are
reset for Desktop ${DesktopDisplayName} by ${UserDisplayName}
ADMIN_RESET_THINAPP_STATE_FAILED AUDIT_FAIL ${UserDisplayName} failed to reset
Application state for ${ThinAppDisplayName
ADMIN_ROLE_ADD_FAILED AUDIT_FAIL ${UserDisplayName} failed to add Role $
{AdminRoleName} with privileges $ {AdminPrivilegeName}
ADMIN_ROLE_ADDED AUDIT_SUCCESS ${UserDisplayName} added Role $
{AdminRoleName} with privileges $ {AdminPrivilegeName}
ADMIN_ROLE_PRIV_UPDATE_FAILED AUDIT_FAIL ${UserDisplayName} failed to update Role $
{AdminRoleName} to privileges $ {AdminPrivilegeName}
ADMIN_ROLE_PRIV_UPDATED AUDIT_SUCCESS ${UserDisplayName} updated Role $
{AdminRoleName} to privileges $ {AdminPrivilegeName}
ADMIN_ROLE_REMOVE_FAILED AUDIT_FAIL ${UserDisplayName} failed to remove Role $
{AdminRoleName}
ADMIN_ROLE_REMOVED AUDIT_SUCCESS ${UserDisplayName} removed Role $
{AdminRoleName}
ADMIN_ROLE_RENAME_FAILED AUDIT_FAIL ${UserDisplayName} failed to rename Role $
{AdminRoleName} to $ {AdminRoleNewName}
ADMIN_ROLE_RENAMED AUDIT_SUCCESS ${UserDisplayName} renamed Role $
{AdminRoleName} to $ {AdminRoleNewName}
ADMIN_SECURITY_SERVER_ADD_FAILED AUDIT_FAIL ${UserDisplayName} failed to add security
server ${SecurityServerId}
ADMIN_SECURITY_SERVER_ADDED AUDIT_SUCCESS ${UserDisplayName} added security server $
{SecurityServerId}
ADMIN_SECURITY_SERVER_EDIT_FAILED AUDIT_FAIL ${UserDisplayName} failed to edit security
server ${SecurityServerId}
ADMIN_SECURITY_SERVER_EDITED AUDIT_SUCCESS ${UserDisplayName} edited security server $
{SecurityServerId} (${ArChangeType}: $ {ArName} = ${ArValue})
20 VMware, Inc.
Chapter 2 Integrating View with the Event Database
Table 26. View Administrator Events (Continued)
EventType Severity ModuleAndEventText
ADMIN_SECURITY_SERVER_REMOVE_FAILED AUDIT_FAIL ${UserDisplayName} failed to remove security
server ${SecurityServerId}
ADMIN_SECURITY_SERVER_REMOVED AUDIT_SUCCESS ${UserDisplayName} removed security server
${SecurityServerId}
ADMIN_SESSION_SENDMSG AUDIT_SUCCESS ${UserDisplayName} sent message ($
{SessionMessage}) to session (User $ {UserName}, Desktop ${MachineName})
ADMIN_SESSION_SENDMSG_FAILED AUDIT_FAIL ${UserDisplayName} failed to send message ($
{SessionMessage}) to session ${ObjectId}
ADMIN_SVI_ADD_DEPLOYMENT_GROUP_FAILED AUDIT_FAIL Failed to add deployment group for $
{SVIParentVM} : ${SVISnapshot}
ADMIN_SVI_ADD_DEPLOYMENT_GROUP_SUCCEEDED AUDIT_SUCCESS Added deployment group $
{SVIDeploymentGroupID} for $ {SVIParentVM} : ${SVISnapshot}
ADMIN_SVI_ADD_UDD_FAILED AUDIT_FAIL Failed to add user data disk ${UserDiskName}
ADMIN_SVI_ADD_UDD_SUCCEEDED AUDIT_SUCCESS Added user data disk ${UserDiskName}
ADMIN_SVI_ADMIN_ADDED AUDIT_SUCCESS ${UserDisplayName} added SVI QuickPrep
domain ${SVIAdminFqdn}($ {SVIAdminName})
ADMIN_SVI_ADMIN_REMOVED AUDIT_SUCCESS ${UserDisplayName} removed SVI QuickPrep
domain (id=${SVIAdminID})
ADMIN_SVI_ADMIN_UPDATED AUDIT_SUCCESS ${UserDisplayName} updated SVI QuickPrep
domain ${SVIAdminFqdn}($ {SVIAdminName})
ADMIN_SVI_ATTACH_UDD_FAILED AUDIT_FAIL Failed to request aach user data disk $
{UserDiskName} to VM ${SVIVMID}
ADMIN_SVI_ATTACH_UDD_SUCCEEDED AUDIT_SUCCESS Requested aach user data disk $
{UserDiskName} to VM ${SVIVMID}
ADMIN_SVI_DELETE_UDD_FAILED AUDIT_FAIL Failed to delete user data disk $
{UserDiskName}
ADMIN_SVI_DELETE_UDD_SUCCEEDED AUDIT_SUCCESS Deleted user data disk ${UserDiskName}
ADMIN_SVI_DETACH_UDD_FAILED AUDIT_FAIL Failed to request detach user data disk $
{UserDiskName} from VM ${SVIVMID}
ADMIN_SVI_DETACH_UDD_SUCCEEDED AUDIT_SUCCESS Requested detach user data disk $
{UserDiskName} from VM ${SVIVMID}
ADMIN_SVI_REBALANCE_VM_FAILED AUDIT_FAIL Failed to rebalance VM ${SVIVMID}
ADMIN_SVI_REBALANCE_VM_SUCCEEDED AUDIT_SUCCESS Rebalanced VM ${SVIVMID}
ADMIN_SVI_REFRESH_VM_FAILED AUDIT_FAIL Failed to refresh VM ${SVIVMID}
ADMIN_SVI_REFRESH_VM_SUCCEEDED AUDIT_SUCCESS Refreshed VM ${SVIVMID}
ADMIN_SVI_RESYNC_VM_FAILED AUDIT_FAIL Failed to resync VM ${SVIVMID} to
deployment group ${SVIDeploymentGroupID}
ADMIN_SVI_RESYNC_VM_SUCCEEDED AUDIT_SUCCESS Resyncd VM ${SVIVMID} to deployment
group ${SVIDeploymentGroupID}
ADMIN_SVI_UPDATE_POOL_DEPLOYMENT_GROUP_FAILED AUDIT_FAIL Failed to update pool ${DesktopId} to
deployment group ${SVIDeploymentGroupID}
ADMIN_SVI_UPDATE_POOL_DEPLOYMENT_GROUP_SUCCEEDEDAUDIT_SUCCESS Updated pool ${DesktopId} to deployment
group ${SVIDeploymentGroupID}
VMware, Inc. 21
Table 26. View Administrator Events (Continued)
EventType Severity ModuleAndEventText
ADMIN_SVI_UPDATE_UDD_FAILED AUDIT_FAIL Failed to update user data disk $
{UserDiskName}
ADMIN_SVI_UPDATE_UDD_SUCCEEDED AUDIT_SUCCESS Set user data disk ${UserDiskName} pool to $
{DesktopId} and user to ${UserName}
ADMIN_THINAPP_ADD_FAILED AUDIT_FAIL ${UserDisplayName} failed to add Application
${ThinAppDisplayName}
ADMIN_THINAPP_ADDED AUDIT_SUCCESS ${UserDisplayName} added Application $
{ThinAppDisplayName}
ADMIN_THINAPP_DESKTOP_AVAILABLE AUDIT_SUCCESS Application ${ThinAppDisplayName} is now
available on Desktop ${DesktopDisplayName}
ADMIN_THINAPP_DESKTOP_REMOVED AUDIT_SUCCESS Application ${ThinAppDisplayName} has
been removed from Desktop $ {DesktopDisplayName}
ADMIN_THINAPP_EDITED AUDIT_SUCCESS ${UserDisplayName} edited Application $
{ThinAppDisplayName}
ADMIN_THINAPP_FAILED_DESKTOP_DELIVERY AUDIT_FAIL Failed to deliver Application $
{ThinAppDisplayName} to Desktop $ {DesktopDisplayName}
ADMIN_THINAPP_FAILED_DESKTOP_REMOVAL AUDIT_FAIL Failed to remove Application $
{ThinAppDisplayName} from Desktop $ {DesktopDisplayName}
ADMIN_THINAPP_GROUP_ADD_FAILED AUDIT_FAIL ${UserDisplayName} failed to add Application
Template ${ThinAppGroupName}
ADMIN_THINAPP_GROUP_ADDED AUDIT_SUCCESS ${UserDisplayName} added Application
Template ${ThinAppGroupName} with Applications ${ThinAppGroupApplications}
ADMIN_THINAPP_GROUP_EDIT_FAILED AUDIT_FAIL ${UserDisplayName} failed to edit Application
Template ${ThinAppGroupName}
ADMIN_THINAPP_GROUP_EDITED AUDIT_SUCCESS ${UserDisplayName} edited Application
Template ${ThinAppGroupName} with Applications ${ThinAppGroupApplications}
ADMIN_THINAPP_GROUP_REMOVE_FAILED AUDIT_FAIL ${UserDisplayName} failed to remove
Application Template ${ThinAppGroupName}
ADMIN_THINAPP_GROUP_REMOVED AUDIT_SUCCESS ${UserDisplayName} removed Application
Template ${ThinAppGroupName}
ADMIN_THINAPP_REMOVE_FAILED AUDIT_FAIL ${UserDisplayName} failed to remove
Application ${ThinAppDisplayName}
ADMIN_THINAPP_REMOVED AUDIT_SUCCESS ${UserDisplayName} removed Application $
{ThinAppDisplayName}
ADMIN_THINAPP_REPO_ADD_FAILED AUDIT_FAIL ${UserDisplayName} failed to add Repository
${ThinAppRepositoryName}, path $ {ThinAppRepositoryPath}
ADMIN_THINAPP_REPO_ADDED AUDIT_SUCCESS ${UserDisplayName} added Repository $
{ThinAppRepositoryName}, path $ {ThinAppRepositoryPath}
ADMIN_THINAPP_REPO_EDIT_FAILED AUDIT_FAIL ${UserDisplayName} failed to edit Repository
${ThinAppRepositoryName}, path $ {ThinAppRepositoryPath}
22 VMware, Inc.
Chapter 2 Integrating View with the Event Database
Table 26. View Administrator Events (Continued)
EventType Severity ModuleAndEventText
ADMIN_THINAPP_REPO_EDITED AUDIT_SUCCESS ${UserDisplayName} edited Repository $
{ThinAppRepositoryName}, path $ {ThinAppRepositoryPath}
ADMIN_THINAPP_REPO_REMOVED AUDIT_SUCCESS ${UserDisplayName} removed Repository $
{ThinAppRepositoryName}
ADMIN_UNREGISTER_PM AUDIT_SUCCESS ${UserDisplayName} unregistered physical
machine ${MachineName})
ADMIN_UNREGISTER_PM_FAILED AUDIT_FAIL ${UserDisplayName} fails to unregister
physical machine ${MachineName})
ADMIN_USER_INFO_UPDATE_FAILED AUDIT_FAIL ${UserDisplayName} failed to update user info
with AD server for ${UserName}
ADMIN_USER_INFO_UPDATED AUDIT_SUCCESS ${UserDisplayName} updated user info with
AD server for ${UserName}
ADMIN_USER_POLICY_DELETE_FAILED AUDIT_FAIL ${UserDisplayName} failed to delete Pool $
{DesktopId} override policies for user $ {UserName}
ADMIN_USER_POLICY_DELETED AUDIT_SUCCESS ${UserDisplayName} deleted Pool $
{DesktopId} override policy for user $ {UserName} (${ArChangeType}: ${ArName} = ${ArValue})
ADMIN_USER_POLICY_UPDATE_FAILED AUDIT_FAIL ${UserDisplayName} failed to update Pool $
{DesktopId} policies for user ${UserName}
ADMIN_USER_POLICY_UPDATED AUDIT_SUCCESS ${UserDisplayName} updated Pool $
{DesktopId} policy for user ${UserName} ($
{ArChangeType}: ${ArName} = $ {ArValue})
ADMIN_USERLOGGEDIN AUDIT_SUCCESS User ${UserDisplayName} has logged in to
View Administrator
ADMIN_USERLOGGEDOUT AUDIT_SUCCESS User ${UserDisplayName} has logged out from
View Administrator
ADMIN_VC_ADD_FAILED AUDIT_FAIL ${UserDisplayName} failed to add VC server $
{VCAddress}
ADMIN_VC_ADDED AUDIT_SUCCESS ${UserDisplayName} added VC server $
{VCAddress}
ADMIN_VC_EDITED AUDIT_SUCCESS ${UserDisplayName} edited VC server $
{VCAddress} (${ArChangeType}: $ {ArName} = ${ArValue})
ADMIN_VC_LICINV_ALARM_DISABLED AUDIT_SUCCESS Alarm on VC server ${VCAddress} for License
Inventory monitoring was disabled as all Hosts have desktop licenses
ADMIN_VC_REMOVE_FAILED AUDIT_FAIL ${UserDisplayName} failed to remove VC
server ${VCAddress}
ADMIN_VC_REMOVED AUDIT_SUCCESS ${UserDisplayName} removed VC server $
{VCAddress}
VMware, Inc. 23

Event Message Attributes

ModuleAndEventText messages use certain aributes. To determine the data type for an aribute, you can examine its value in the type column in the event_data or event_data_historical table.
Table 27. Attributes that ModuleAndEventText Messages Use
Attribute Name Description
AdminFolderName Name of a folder that requries privileged access.
AdminPermissionEntity Name of an object that requires privileged access.
AdminPrivilegeName Name of an administrative privilege.
AdminRoleName Name of an administrative role.
AdminRoleNewName New name of an administrative role.
ArChangeType Type of change that was applied to a generic aribute.
ArName Name of a generic aribute.
ArValue Value of a generic aribute.
BrokerId Identier of a View Connection Server instance.
BrokerName Name of a View Connection Server instance.
DesktopDisplayName Display name of a desktop pool.
DesktopId Identier of a desktop pool.
EntitlementDisplay Display name of a desktop entitlement.
MachineId Name of a physical or virtual machine.
MachineName Name of a physical or virtual machine.
MaintenanceMode Maintenance mode state.
ObjectID Identier of an inventory object.
ObjectType Type of an inventory object.
PolicyDisplayName Display name of a policy.
PolicyObject Identier of a policy object.
PolicyValue Value of a policy object.
ProtocolId Identier of a display protocol.
SecurityServerId Identier of a security server.
SVIAdminFqdn FQDN of a QuickPrep domain.
SVIAdminID Identier of a QuickPrep domain.
SVIAdminName Name of a QuickPrep domain.
SVIDeploymentGroupID Identier of a View Composer deployment group.
SVIOperation Name of a View Composer operation.
SVIParentVM Parent virtual machine in View Composer.
SVIPath Path of an object in View Composer.
SVISnapshot Snapshot in View Composer.
SVIVMID Identier of a virtual machine in View Composer.
ThinAppDisplayName Display name of a ThinApp object.
ThinAppId Identier of a ThinApp object.
24 VMware, Inc.
Table 27. Attributes that ModuleAndEventText Messages Use (Continued)
Attribute Name Description
ThinAppRepositoryName Name of a ThinApp repository
ThinAppRepositoryPath Path of a ThinApp repository.
Time Date and time value.
UserCount Maximum number of desktop users over a 24-hour period.
UserDiskName Name of a user data disk.
UserDisplayName User name in the form DOMAIN\username.
UserName Name of a user in Active Directory.
VCAddress URL of a vCenter Server.

Sample Database Queries and Views

You can query the event_historical database to display error events, warning events, and specic recent events.
N Replace the dbo.VE_ prex in the following examples with the appropriate prex for your event database.
Chapter 2 Integrating View with the Event Database
List Error Events
The following query displays all error events from the event_historical table.
CREATE VIEW error_events AS
(
SELECT ev.EventID, ev.Time, ev.Module, ev.EventType, ev.ModuleAndEventText
FROM dbo.VE_event_historical AS ev
WHERE ev.Severity = ‘ERROR’
);
List Warning Events
The following query displays all warning events from the event_historical table.
CREATE VIEW warning_events AS
(
SELECT ev.EventID, ev.Time, ev.Module, ev.EventType, ev.ModuleAndEventText
FROM dbo.VE_event_historical AS ev
WHERE ev.Severity = ‘WARNING’
);
List Recent Events
The following query lists all recent events that are associated with the user fred in the domain MYDOM.
CREATE VIEW user_fred_events AS
(
SELECT ev.EventID, ev.Time, ev.Module, ev.EventType, ev.Severity, ev.Acknowledged
FROM dbo.VE_event_historical AS ev,
dbo.VE_event_data_historical AS ed
WHERE ev.EventID = ed.EventID AND ed.Name = 'UserDisplayName' AND ed.StrValue =
‘MYDOM\fred’
);
VMware, Inc. 25
The following query lists all recent events where the agent on a machine shut down.
CREATE VIEW agent_shutdown_events AS
(
SELECT ev.EventID, ev.Time, ed.StrValue
FROM dbo.VE_event_historical AS ev,
dbo.VE_event_data_historical AS ed
WHERE ev.EventID = ed.EventID AND ev.EventType = ‘AGENT_SHUTDOWN’ AND
ed.Name = ‘MachineName’
);
The following query lists all recent events where a desktop failed to launch because the desktop pool was empty.
CREATE VIEW desktop_launch_failure_events AS
(
SELECT ev.EventID, ev.Time, ed1.StrValue, ed2.StrValue
FROM dbo.VE_event_historical AS ev,
dbo.VE_event_data_historical AS ed1,
dbo.VE_event_data_historical AS ed2
WHERE ev.EventID = ed1.EventID AND ev.EventID = ed2.EventID AND
ev.EventType = ‘BROKER_POOL_EMPTY’ AND
ed1.Name = ‘UserDisplayName’ AND ed2.Name = ‘DesktopId’
);
The following query lists all recent events where an administrator removed a desktop pool.
CREATE VIEW desktop_pool_removed_events AS
(
SELECT ev.EventID, ev.Time, ed1.StrValue, ed2.StrValue
FROM dbo.VE_event_historical AS ev,
dbo.VE_event_data_historical AS ed1,
dbo.VE_event_data_historical AS ed2
WHERE ev.EventID = ed1.EventID AND ev.EventID = ed2.EventID AND
ev.EventType = ‘ADMIN_DESKTOP_REMOVED’ AND
ed1.Name = ‘UserDisplayName’ AND ed2.Name = ‘DesktopId’
);
The following query lists all recent events where an administrator added a ThinApp repository.
CREATE VIEW thinapp_repository_added_events AS
(
SELECT ev.EventID, ev.Time, ed1.StrValue, ed2.StrValue, ed3.StrValue
FROM dbo.VE_event_historical AS ev,
dbo.VE_event_data_historical AS ed1,
dbo.VE_event_data_historical AS ed2,
dbo.VE_event_data_historical AS ed3
WHERE ev.EventID = ed1.EventID AND ev.EventID = ed2.EventID AND ev.EventID = ed3.EventID
AND
ev.EventType = ‘ADMIN_THINAPP_REPO_ADDED’ AND
ed1.Name = ‘UserDisplayName’ AND ed2.Name = ‘ThinAppRepositoryName’ AND
ed3.Name = ‘ThinAppRepositoryPath’
);
26 VMware, Inc.

Using View PowerCLI 3

Eective in Horizon 7 version 7.0.3, View PowerCLI is deprecated.
For previous versions of Horizon 7, you can use View PowerCLI as an easy-to-use PowerShell interface to View and use View PowerCLI cmdlets to perform various administration tasks on View components.
In Horizon 7 version 7.0.3, you can use Horizon PowerCLI cmdlets with VMware PowerCLI. Use Horizon PowerCLI cmdlets to perform various administration tasks on Horizon components.
For more information about Horizon PowerCLI cmdlets, read the VMware PowerCLI Cmdlets Reference.
For information on the API specications to create advanced functions and scripts to use with Horizon PowerCLI, see the View API Reference at the VMware Developer Center.
For more information on sample scripts that you can use to create your own Horizon PowerCLI scripts, see the Horizon PowerCLI community on GitHub.
This chapter includes the following topics:
“Geing Started with View PowerCLI,” on page 27
n
“View Administrator, PowerCLI Cmdlets, and View Command-Line Interfaces Compared,” on
n
page 30
“View PowerCLI cmdlet Reference,” on page 34
n
“View PowerCLI cmdlet Parameters,” on page 36
n
“Examples of Using View PowerCLI cmdlets,” on page 40
n
“Examples of Using View PowerCLI to Perform Advanced Tasks,” on page 46
n
“Assigning Multiple Network Labels to a Desktop Pool,” on page 52
n

Getting Started with View PowerCLI

PowerShell is a command line and scripting environment designed for Microsoft Windows. PowerShell uses the .NET object model and provides administrators with management and automation capabilities. You work with PowerShell by running commands, which are called cmdlets in PowerShell. The command line syntax for View PowerCLI cmdlets is the same as generic PowerShell syntax.
The View PowerCLI cmdlets are dened in the PowershellServiceCmdlets.dll le, which is installed in the
C:\Program Files\VMware\VMware View\Server\bin directory. The PowershellServiceCmdlets.dll le
constitutes the VMware.View.Broker snapin.
You can edit and extend the View PowerCLI cmdlets script conguration le, InitViewCmdlets.ps1, to dene cmdlet aliases, congure the environment, and set startup actions. InitViewCmdlets.ps1 is in the
Extras folder in the View installation directory.
VMware, Inc.
27
View Integration
You can use View PowerCLI cmdlets in conjunction with vSphere PowerCLI cmdlets. vSphere PowerCLI cmdlets provide an administrative interface to VMware vSphere. If vSphere PowerCLI is installed on a View Connection Server instance, the vSphere PowerCLI cmdlets load when you launch View PowerCLI.
You can refer to virtual machines and vCenter Server instances by ID in View PowerCLI, but you cannot pass these entities as objects. For other vSphere objects, such as resource pools and folders, you must provide a full path. You can use View PowerCLI cmdlets to examine the conguration of vCenter Server instances within View.
For general information about using PowerShell, see the Microsoft documentation.

Start the PowerShell Console with View PowerCLI Loaded

You can run the View PowerCLI cmdlets directly on a View Connection Server host.
Prerequisites
Verify that the View Connection Server host has the following software installed.
View 4.5 or later
n
Microsoft .NET framework
n
Windows PowerShell 1.0
n
Procedure
1 Log in to the View Connection Server instance as a user in a role that has sucient privileges to modify
conguration data.
For example, the Administrators role can modify conguration data. A read-only role cannot update conguration data.
2 Select Start > All Programs > VMware > View PowerCLI.
What to do next
If you receive an error message that states the script conguration le cannot be loaded because the execution of scripts is disabled, type the PowerShell Set-ExecutionPolicy Unrestricted command and restart the PowerShell console.

Use View PowerCLI cmdlets from a Remote System

You can use the PowerShell remoting feature to access View PowerCLI cmdlets from a remote system.
Procedure
1 On the remote system, open the C:\Windows\System32\WindowsPowerShells\v1.0\Profile.ps1 le in a
text editor.
2 Add the line add-pssnapin vm* to the Profile.ps1 le.
3 Save your changes.
The View PowerCLI snapin to the PowerShell prole is added on the remote system.
What to do next
Take the same precautions for protecting the View PowerCLI operations as you would for other remoting PowerShell operations.
28 VMware, Inc.
Chapter 3 Using View PowerCLI

Display Help for View PowerCLI

You can display help for View PowerCLI by typing commands in the PowerShell console.
Procedure
1 On a View Connection Server instance, select Start > All Programs > VMware > View PowerCLI.
2 Display the View PowerCLI help.
Option Action
List all View PowerCLI cmdlets
Display help for a specific cmdlet
Display detailed help for a specific cmdlet
Run the Get-Command cmdlet.
For example: Get-Command -PSSnapin VMware.View.Broker | more
Type Get-Help followed by the name of the cmdlet.
For example: Get-Help Add-ViewVC | more
Type Get-Help followed by the name of the cmdlet and the -full parameter.
For example: Get-Help Add-ViewVC -full | more
Alternatively, use the help alias for Get-Help.
For example: Add-ViewVC -full | more

Examining View PowerCLI cmdlet Errors

View PowerCLI cmdlets handle all errors as non-terminating errors that halt the execution of a cmdlet but do not terminate a pipeline. You can examine the $error automatic variable to determine the cause of an error.
To control how PowerShell handles non-terminating errors and how it displays errors in the shell, set the standard PowerShell $ErrorActionPreference and $errorView automatic variables.

Piping and Specifying Objects of the Same Type

If you aempt to pipe an object into a cmdlet and specify an object of the same type to that cmdlet, the cmdlet fails with the following error.
The input object cannot be bound to any parameters for the command either because the command
does not take pipeline input or the input and its properties do not match any of the parameters
that take pipeline input.
For example, the following cmdlet usage produces this error.
Get-Pool -pool_id Pool1 | Update-ManualPool -pool_id Pool2 -displayName “Manual Pool 2”

Escaping Characters in vCenter Server Path Names

If you specify a path to a vCenter Server folder that includes certain special characters in the name of an entity, you must escape the special characters.
Table 31. Escape Sequences for Special Characters
Special Character Escape Sequence
% %25
/ %2f
\ %5c
VMware, Inc. 29
Do not escape the slashes in the path name itself. For example, represent the path to the folder /datacenter_01/vm/img%-12 as /datacenter_01/vm/img%25-12.
Certain cmdlets and parameters require escape sequences in entity names.
Table 32. cmdlet Parameters that Require Escape Sequences
cmdlet Parameters that Require Escape Sequences
Add-AutomaticLinkedClonePool
Update-AutomaticLinkedClonePool
-datastoreSpecs
-parentVMPath
-resourcePoolPath
-vmfolderPath
Add-AutomaticPool
Update-AutomaticPool
-datastorePaths
-resourcePoolPath
-templatePath
-vmfolderPath
Send-LinkedCloneRecompose -parentVMPath

View Administrator, PowerCLI Cmdlets, and View Command-Line Interfaces Compared

You can use View Administrator, View PowerCLI cmdlets, vdmadmin, vdmutil, and lmvutil to perform administrative operations on View objects. Not all administrative operations are available in all interfaces.
Table 33. View Administrator, PowerCLI, and View Command-Line Interface Operations
View
Object Operation
Application pool Add X
Delete X
Update X
Entitle user X
Remove entitlement X
Cloud Pod Architecture View Cloud Pod Architecture
conguration
View pod federation health X
List global entitlements X X
List pools in a global entitlement (desktop or application)
List users or groups in a global entitlement
List the eective home site for a user
List dedicated desktop pool assignments
List pods or sites in a Cloud Pod Architecture topology
View desktop and application sessions in the pod federation
Desktop pool Add X X
Assign dedicated X
Administrator
X X
X X
X X
X X
X X
X X
X X
View PowerCLI vdmadmin
vdmutil or lmvutil
30 VMware, Inc.
Table 33. View Administrator, PowerCLI, and View Command-Line Interface Operations (Continued)
Object Operation
View Administrator
View PowerCLI vdmadmin
Assign ThinApp X
Disable X X
Enable X X
Entitle user X X
Get information X X
Get unentitled policies X X
Get unentitled users X X
Remove X X
Remove assignment X
Remove entitlement X X
Restrict entitlement X
Set policy X X
Update X X
Assign network label X
Get network label conguration X
Domain lter Get information X
Remove lter X
Set lter X
Events Get list X X X
Get report X X
Farm Add X
Disable X
Enable X
Get information X
Delete X
Update X
Folder Add X
Get information X
Move X
Remove X
Global entitlement (desktop
Add X X
or application)
Update X X
Remove X X
Add pool X X
Remove pool X X
Add user or group X X
Remove user or group X X
Chapter 3 Using View PowerCLI
vdmutil or lmvutil
VMware, Inc. 31
Table 33. View Administrator, PowerCLI, and View Command-Line Interface Operations (Continued)
Object Operation
View Administrator
View PowerCLI vdmadmin
Home site Assign home site to a user or group X X
Remove X X
Modify home site assignment X X
Create home site override X X
Modify home site override X X
Remove home site override X X
List eective home site for a user X X
Instant Clone desktop Push image X
Recover X
Instant Clone domain
Add X
admin
Get information X
Remove X
Update X
Kiosk mode Add client account X
Disable authentication X
Enable authentication X
Get information X
Get defaults X
Remove client account X
Set defaults X
Linked-clone desktop Rebalance X X
Recompose X X
Recreate X
Refresh X X
Restore X
Set storage overcommit X X
Get network label conguration X
Linked-clone farm Recompose X
Set storage overcommit X
Permission Add X
Get information X
Remove X
Persistent user data disk Aach X
Delete X
Detach X
Get information X X
Replace X
vdmutil or lmvutil
32 VMware, Inc.
Chapter 3 Using View PowerCLI
Table 33. View Administrator, PowerCLI, and View Command-Line Interface Operations (Continued)
Object Operation
Physical computer with
Get information X X X
View Administrator
View PowerCLI vdmadmin
Horizon Agent installed
Pod Initialize X X
Uninitialize X X
Join X X
Unjoin X X
Update X X
Remote session Disconnect X X
Get information X X
Log out X X
Role Add X
Modify X
Remove X
RDS host Get information X X
SAML authenticator Add X
Get information X
Remove X
Update X
Site Add X X
Update X X
Remove X X
Assign pods to site X X
Remove pods from site X X
User Congure policy X
Create administrator X
Get information X X X
Remove administrator X
Update FSP X
vCenter Server instance Add X X
Get information X X
Remove X X
Update X X
Horizon Agent Create DCT bundle X
Get copy of log le X
Get list of log les X
Get logging level X
Get status X
Get version X
vdmutil or lmvutil
VMware, Inc. 33
Table 33. View Administrator, PowerCLI, and View Command-Line Interface Operations (Continued)
View
Object Operation
Override IP address X
Set logging level X
View Composer domain Get information X
View Connection Server instance
View Connection Server group
View global seing Get information X X
View service health monitor Get information X X X
Virtual machine with Horizon Agent installed
VMware Horizon license Get information X X
Back up conguration X
Get information X X
Remove from group X
Restore conguration X
Update X X
Set GUID of group X
Set name of group X
Update X X
Get information X X X
Remove ownership X X
Reset X X
Update ownership X X
Set license X X
Administrator
View PowerCLI vdmadmin
vdmutil or lmvutil

View PowerCLI cmdlet Reference

You can use View PowerCLI cmdlets to administer View on a View Connection Server instance.
The following table lists all the available View PowerCLI cmdlets, organized by View object. For cmdlet syntax, use the Get-Help cmdlet. For more information, see “Display Help for View PowerCLI,” on page 29.
Table 34. View PowerCLI cmdlets
Object cmdlet Description
Desktop pool
Get-Pool
Remove-Pool
Add-PoolEntitlement
Get-PoolEntitlement
Remove-PoolEntitlement
Linked-clone desktop pool
Add-AutomaticLinkedClonePool
Update-AutomaticLinkedClonePool
34 VMware, Inc.
Returns information about desktop pools.
Removes a desktop pool.
Creates desktop pool entitlements for users.
Returns information about the users who are entitled to use desktop pools.
Removes desktop pool entitlement from users.
Adds an automatically provisioned linked­clone desktop pool.
Updates an automatically provisioned linked­clone desktop pool.
Table 34. View PowerCLI cmdlets (Continued)
Object cmdlet Description
Rebalances linked-clone desktops among the available logical drives.
Recomposes linked-clone desktops from a snapshot of their parent virtual machine.
Refreshes the operating system disks of linked-clone desktops to their original state and size.
Lists the shared network labels on all the hosts in a specied cluster on which a linked­clone desktop pool is to be deployed. The output is exported to a conguration le.
Lists the shared network labels on all the hosts in a specied cluster on which a full­clone desktop pool is to be deployed. The output is exported to a conguration le.
Adds an automatically provisioned full virtual machine desktop pool.
Updates an automatically provisioned full virtual machine desktop pool.
Adds a manually provisioned pool of managed desktops.
Updates a manually provisioned pool of managed desktops.
Adds a manually provisioned pool of unmanaged desktops.
Updates a manually provisioned pool of unmanaged desktops.
Returns information about View Composer.
Returns information about View Connection Server and security server instances.
Updates the conguration of a View Connection Server or security server instance.
Returns the View licenses on a View Connection Server instance.
Sets a View license on a View Connection Server instance.
Returns a list of physical machines that are available for use with unmanaged desktop pools.
Returns information about virtual machines.
Resets a virtual machine.
Returns an event report for a specied view.
Returns the views that are available for use with the Get-EventReport cmdlet.
Returns global conguration information about the View environment.
Updates global conguration information about the View environment.
Full-clone desktop pool
Automatic virtual machine desktop pool
Manual desktop pool
View Composer domain
View Connection Server instance
VMware Horizon license
Physical machine
Virtual machine
Event
View global seing
Send-LinkedCloneRebalance
Send-LinkedCloneRecompose
Send-LinkedCloneRefresh
Export­NetworkLabelSpecForLinkedClone
Export­NetworkLabelSpecForFullClone
Add-AutomaticPool
Update-AutomaticPool
Add-ManualPool
Update-ManualPool
Add-ManualUnmanagedPool
Update-ManualUnmanagedPool
Get-ComposerDomain
Get-ConnectionBroker
Update-ConnectionBroker
Get-License
Set-License
Get-DesktopPhysicalMachine
Get-DesktopVM
Send-VMReset
Get-EventReport
Get-EventReportList
Get-GlobalSetting
Update-GlobalSetting
Chapter 3 Using View PowerCLI
VMware, Inc. 35
Table 34. View PowerCLI cmdlets (Continued)
Object cmdlet Description
View service health monitor
Persistent user data disk
Remote session
User
vCenter Server instance
Get-Monitor
Get-ProfileDisk
Get-RemoteSession
Send-SessionDisconnect
Send-SessionLogoff
Get-User
Remove-UserOwnership
Update-UserOwnership
Add-ViewVC
Get-ViewVC
Remove-ViewVC
Update-ViewVC
Returns a list of health monitors for View services.
Returns information about persistent user data disks.
Returns information about active remote sessions.
Disconnects an active remote session.
Logs out an active remote session.
Returns information about users.
Removes the ownership of a virtual machine.
Assigns a user (specied as a SID) to a virtual machine. This cmdlet does not support the assignment of users to physical machines.
Adds a vCenter Server instance to View.
Returns information about vCenter Server instances.
Removes a vCenter Server instance from View.
Updates the conguration of a vCenter Server instance in View.

View PowerCLI cmdlet Parameters

Some View PowerCLI cmdlet parameters accept seings. For example, the -flashQuality parameter accepts seings that specify the maximum allowable quality for Adobe Flash content.
Default Display Protocol Parameter
The -defaultProtocol parameter species the default display protocol for a desktop pool.
Table 35. -defaultProtocol Parameter Settings
Setting Description
PCOIP Set the default display protocol to PCoIP.
RDP Set the default display protocol to Microsoft RDP.
Deletion Policy Parameter
The -deletePolicy parameter species the deletion policy for automatically provisioned oating and linked-clone desktop pools.
Table 36. -deletePolicy Parameter Settings
Setting Description
Default Do not delete the machine when the user logs out.
DeleteOnUse Delete the machine when the user logs out.
RefreshOnUse Refresh the machine when the user logs out.
N This seing applies only to linked clone desktop pools.
36 VMware, Inc.
Chapter 3 Using View PowerCLI
Flash Quality Parameter
The -flashQuality parameter species the maximum allowable quality for Adobe Flash content. This value overrides the seing on a Web page. If the Adobe Flash quality for a Web page is higher than the maximum value allowed, the client reduces the quality to the specied maximum. Lowering the quality of Adobe Flash content causes the content to use less bandwidth.
Table 37. -flashQuality Parameter Settings
Setting Description
HIGH Allow low, medium, or high quality Flash content.
LOW Allow only low quality Flash content.
MEDIUM Allow low or medium quality Flash content.
NO_CONTROL Allow the Web page seings to determine the quality of Flash content.
Flash Throttling Parameter
The -flashThrottling parameter species how often Adobe Flash refreshes onscreen information. Throling Adobe Flash to increase the refresh interval reduces the frame rate. This reduction causes Adobe
Flash content to use less bandwidth, but it might also cause Adobe Flash to drop frames.
Table 38. -flashThrottling Parameter Settings
Setting Description
AGGRESSIVE Set the refresh interval to 2500 milliseconds. This seing produces the
highest number of dropped frames. The speed of audio transmission is
unaected.
CONSERVATIVE Set the refresh interval to 100 milliseconds. This seing produces the
lowest number of dropped frames. The speed of audio transmission is
unaected.
DISABLED Disable throling. The timer interval is not modied.
MODERATE Set the refresh interval to 500 milliseconds. The speed of audio
transmission is unaected.
LDAP Backup Frequency Parameter
The -ldapBackupFrequency parameter species the LDAP backup frequency for a View Connection Server instance.
Table 39. -ldapBackupFrequency Parameter Settings
Setting Description
Every12Hour Back up the LDAP database once every 12 hours.
Every2Day Back up the LDAP database once every two days.
Every2Week Back up the LDAP database once every two weeks.
Every6Hour Back up the LDAP database once every six hours.
EveryDay Back up the LDAP database once per day.
EveryHour Back up the LDAP database once per hour.
EveryWeek Back up the LDAP database once per week.
Never Turn o backup for the LDAP database.
VMware, Inc. 37
Pool Type Parameter
The -poolType parameter species the desktop pool type.
Table 310. -poolType Parameter Settings
Setting Description
IndividualUnmanaged The pool contains an individual unmanaged machine.
IndividualVC The pool contains an individual machine that is managed and
Manual The pool contains manually congured oating (nonpersistent)
ManualUnmanagedNonPersistent The pool contains manually congured oating (nonpersistent)
ManualUnmanagedPersistent The pool contains manually congured dedicated (persistent) machines
ManualVCPersistent The pool contains manually congured dedicated (persistent) machines
NonPersistent (AutomaticPool) The pool contains automatically congured oating
OnRequestSviNonPersistent (AutomaticPool) The pool contains oating (nonpersistent) machines
OnRequestSviPersistent (AutomaticPool) The pool contains dedicated (persistent) machines that
OnRequestVcNonPersistent (AutomaticPool) The pool contains oating (nonpersistent) machines
OnRequestVcPersistent (AutomaticPool) The pool contains dedicated (persistent) machines that
Persistent (AutomaticPool) The pool contains automatically congured dedicated
SVINonPersistent (AutomaticPool) The pool contains oating (nonpersistent) machines
SVIPersistent (AutomaticPool) The pool contains dedicated (persistent) machines that
congured by a vCenter Server instance.
machines that are managed and congured by a vCenter Server instance.
machines that are not managed by a vCenter Server instance.
that are not managed by a vCenter Server instance.
that are managed by a vCenter Server instance.
(nonpersistent) machines that are provisioned, managed, and congured by a vCenter Server instance.
that are provisioned, managed, and congured by a vCenter Server instance and View Composer when requested.
are provisioned, managed, and congured by a vCenter Server instance and View Composer when requested.
that are provisioned, managed, and congured by a vCenter Server instance when requested.
are provisioned, managed, and congured by a vCenter Server instance when requested.
(persistent) machines that are provisioned, managed, and congured by a vCenter Server instance.
that are provisioned, managed, and congured by a vCenter Server instance and View Composer.
are provisioned, managed, and congured by a vCenter Server instance and View Composer.
Power Policy Parameter
The -powerPolicy parameter species the power policy for a desktop pool.
38 VMware, Inc.
Chapter 3 Using View PowerCLI
Table 311. -powerPolicy Settings
Setting Description
AlwaysOn Congure the machine to remain powered on, even when no one is
using it. If you shut down the machine, the machine restarts immediately.
RemainOn Start the machine when required if the machine is powered down. The
machine remains powered on until you shut it down.
PowerO Shut down the machine when no one is using it.
Suspend Suspend the machine when no one is using it.
Refresh Policy Type Parameter
The -refreshPolicyType parameter species the refresh policy for the OS disks of automatically provisioned dedicated and linked clone desktop pools.
Table 312. -refreshPolicyType Settings
Setting Description
Always Refresh the OS disk whenever the user logs o.
Conditional Refresh the OS disk when the user logs o, but only if certain
conditions are met. Use the -refreshpolicyDays and ­refreshPolicyUsage parameters to specify the refresh interval in days and the percentage of the maximum allowable size for the disk.
Never Never refresh the OS disk when the user logs o.
Smart Card Setting Parameter
The -smartCardSetting parameter species the smart card authentication policy seing. This seing applies to Update-ConnectionBroker, and does not have any eect unless you also specify -UseSSLClient $true with
Update-GlobalSetting.
Table 313. -smartCardSetting Parameter Settings
Setting Description
NotAllowed Disable smart card authentication.
Optional Allow users to use smart card authentication or password
authentication to connect to the View Connection Server instance. If smart card authentication fails, the user must provide a password.
Required Require users to use smart card authentication when they connect to the
View Connection Server instance. Smart card authentication replaces only Windows password authentication. If SecureID is enabled, users are required to authenticate by using both SecureID and smart card authentication.
View Composer Task Parameter
The -composerTask parameter species a View Composer maintenance task on a virtual machine.
Table 314. -composerTask Parameter Settings
Setting Description
aachUdd Aach a persistent disk.
detachUdd Detach a persistent disk.
VMware, Inc. 39
Table 314. -composerTask Parameter Settings (Continued)
Setting Description
mkChkPoint Create a checkpoint snapshot.
rebalance Rebalance a linked clone machine.
replaceUdd Replace a persistent disk.
resync Recompose a linked clone machine.

Examples of Using View PowerCLI cmdlets

With View PowerCLI cmdlets, you can perform View management tasks from the command line or from scripts instead of using View Administrator.

Managing View Connection Server Instances

You can use View PowerCLI cmdlets to perform View Connection Server management tasks.
Table 3‑15. Examples of Common View Connection Server Management Tasks
Task Example View PowerCLI cmdlet Syntax
Get conguration seings for a specic View Connection Server instance
Update conguration seings for a specic View Connection Server instance
Congure secure PCoIP connections for a specic View Connection Server instance
Set the PCoIP external URL for a specic View Connection Server instance
Set the PCoIP external URL for a specic security server
Get-ConnectionBroker -broker_id CONNSVR1
Update-ConnectionBroker -broker_id CONNSVR1 -directConnect $false -secureIdEnabled $true -ldapBackupFrequency EveryWeek
Update-ConnectionBroker -broker_id CS-VSG -directPCoIP $FALSE
Update-ConnectionBroker -broker_id CS-VSG -externalPCoIPURL
10.18.133.34:4172
Update-ConnectionBroker -broker_id SECSVR-03 -externalPCoIPURL
10.116.32.136:4172

Managing vCenter Server Instances in View

You can use View PowerCLI cmdlets to perform vCenter Server management tasks in View.
Table 316. Examples of Common vCenter Server Management Tasks in View
Task Example View PowerCLI cmdlet Syntax
Add a vCenter Server instance to the View conguration
Get information about a specic vCenter Server instance in View
Get information about all the vCenter Server instances in a specic DNS domain
Change the ramp factor values for a specic vCenter Server instance
40 VMware, Inc.
Add-ViewVC -serverName vc01.mydom.int -username Administrator
-password clydenw -createRampFactor 5 -deleteRampFactor 5
Get-ViewVC -serverName vc01.mydom.int
Get-ViewVC -serverName *.mycorp.com
Get-ViewVC -serverName svr11.mycorp.com | Update-ViewVC ­createRampFactor 5 -deleteRampFactor 10
Table 316. Examples of Common vCenter Server Management Tasks in View (Continued)
Task Example View PowerCLI cmdlet Syntax
Change the create ramp factor value for all vCenter Server instances in a specic DNS domain
Remove a vCenter Server instance from the View conguration
Get-ViewVC -serverName *.mycorp.com | Update-ViewVC ­createRampFactor 5
Get-ViewVC -serverName vc02.mydom.int | Remove-ViewVC

Managing Desktop Pools

You can use View PowerCLI cmdlets to perform desktop pool management tasks.
Table 317. Examples of Common Desktop Pool Management Tasks
Task Example View PowerCLI cmdlet Syntax
Get information about a desktop pool that has a specic display name
Get information about all desktop pools that have a display name with a specic
prex
Get information about all desktop pools that are congured to use the PCoIP display protocol
Get information about all individual unmanaged desktop pools
Remove a desktop pool that has a specic pool ID
Remove a desktop pool that has a specic pool ID and terminate any active sessions, but do not delete its image from disk
Remove a desktop pool that has a specic display name and delete its image from disk
Get-Pool -displayName "My Pool 1"
Get-Pool -pool_id mypool-*
Get-Pool -protocol PCOIP
Get-Pool -poolType IndividualUnmanaged
Remove-Pool -pool_id dtpool-10
Remove-Pool -pool_id dtpool-12 -TerminateSession $true ­DeleteFromDisk $false
Get-Pool -displayName "My Pool 1" | Remove-Pool ­DeleteFromDisk $true
Chapter 3 Using View PowerCLI

Creating and Updating Automatically Provisioned Desktop Pools

You can use the Get-ViewVC and Update-AutomaticPool cmdlets to create and update automatically provisioned desktop pools.
In the following example, the Get-ViewVC cmdlet adds an automatically provisioned desktop pool called auto1. The desktop pool is managed by a vCenter Server instance called vc.mydom.int.
Get-ViewVC -serverName vc.mydom.int | Add-AutomaticPool -pool_id auto1 -displayName "ADP1"
-namePrefix "adp1-{n:fixed=4}" -vmFolderPath /AutoConfig/vm
-resourcePoolPath /AutoConfig/host/Resources -templatePath /AutoConfig/vm/ADP_template
-dataStorePaths /host/datastore_1/lun10 -customizationSpecName "Windows 7 Variation 3"
-minimumCount 4 -maximumCount 10
You can provision all the desktops in advance by seing the -minimumCount and -maximumCount parameters to the same value.
In the following example, the Update-AutomaticPool cmdlet updates the conguration of an automatically provisioned desktop pool called auto1.
Update-AutomaticPool -pool_id auto1 -displayName "Automatic Desktop Pool 1"
-isProvisioningEnabled $false -dataStorePaths /host/datastore_1/lun10;/host/datastore_1/lun12
VMware, Inc. 41
Because the datastores specied in the -datastorePaths parameter override the previous seing, you must specify any existing datastores in the parameter for the desktop pool to continue to use those datastores.

Creating and Updating Linked-Clone Desktop Pools

You can use the Get-ViewVC and Get-DesktopVM cmdlets to create and update linked-clone desktop pools.
In the following example, the Get-ViewVC cmdlet adds a linked-cloned desktop pool named lcdpool_1. The pool is managed by View Composer on a vCenter Server instanced named vc.mydom.int.
Get-ViewVC -serverName vc.mydom.int | Get-ComposerDomain -domain VCDOM |
Add-AutomaticLinkedClonePool -pool_id lcdpool_1 -displayName "LCD Pool 1"
-namePrefix "lcp1-{n}-dt" -parentVMPath /AutoPoolVMs/parent
-parentSnapshotPath /AutoPoolSnapshots/parent1_snapshot -vmFolderPath /AutoConfig/VM_folder
-resourcePoolPath /AutoConfig/host/Resources
-datastoreSpecs [Aggressive,os,data]/host/datastore_1/lun04;/host/datastore_2/lun16
-dataDiskLetter "D" -dataDiskSize 100 -minimumCount 4 -maximumCount 10
You can provision all the desktops in advance by seing the -minimumCount and -maximumCount parameters to the same value. If you specify a persistent data disk, use an uppercase leer for the drive. Do not use a leer that already exists on the parent virtual machine for a drive such as A, B, or C, or a leer that conicts with a network-mounted drive.
In the following example, the Get-ViewVC cmdlet updates the conguration of a linked-clone desktop pool named lcdpool_1.
Get-ViewVC -serverName vc.mydom.int | Get-ComposerDomain -domain VCDOM |
Update-AutomaticLinkedClonePool -pool_id lcdpool_1 -datastoreSpecs
[Conservative,os,data]/host/datastore_1/lun04;/host/datastore_2/lun16;/host/datastore_2/lun22
-minimumCount 4 -maximumCount 20 -headroomCount 2 -powerPolicy Suspend -defaultProtocol PCOIP
-isUserResetAllowed $true
Because the datastores specied in the -datastoreSpecs parameter override the previous seing, you must specify any existing datastores in the parameter for the pool to continue to use those datastores.
You can use the Get-DesktopVM cmdlet to perform rebalance, refresh, and recompose operations.
Table 318. Examples of Rebalance, Refresh and Recompose Operations
Task Example View PowerCLI cmdlet Syntax
Rebalance desktops among the available datastores in a linked-clone desktop pool
Refresh the operating system disk in each linked-clone desktop by restoring its original state and size
Recompose all linked-clone desktops from a snapshot of the parent virtual machine
Get-DesktopVM -pool_id lcdpool_2 | Send­LinkedCloneRebalance -schedule 2011-05-10:01:00:00 ­forceLogoff $false -stopOnError $true
Get-DesktopVM -pool_id lcdpool_2 | Send-LinkedCloneRefresh
-schedule "May 12 2011 01:15" -forceLogoff $true ­stopOnError $true
Get-DesktopVM -pool_id lcdpool_2 | Send­LinkedCloneRecompose -schedule ((Get-Date).AddHours(8)) ­parentVMPath /AutoPoolVMs/parent2 ­parentSnapshotPath /AutoPoolSnapshots/parent2_snapshot ­forceLogoff $true -stopOnError $true
42 VMware, Inc.
Chapter 3 Using View PowerCLI

Creating and Updating Manually Provisioned Desktop Pools

You can use the Add-ManualPool, Get-ViewVC, and Update-ManualPool cmdlets to create and update manually provisioned desktop pools.
In the following example, the Add-ManualPool cmdlet creates a manually provisioned desktop pool named manPool that contains a virtual machine named myVM.
Add-ManualPool -pool_id manPool -id (Get-VM -name "myVM").id -isUserResetAllowed $true
In the following example, the Get-ViewVC cmdlet creates a manually provisioned desktop pool named man1 from the desktops managed by the vCenter Server instance named vc.mydom.int.
Get-ViewVC -serverName vc.mydom.int | Get-DesktopVM -poolType Manual | Add-ManualPool -pool_id
man1 -isUserResetAllowed $false
In the following example, the Update-ManualPool cmdlet updates the conguration of a manually provisioned desktop pool named man1.
Update-ManualPool -pool_id man1 -displayName "Manual Desktop 1" -isUserResetAllowed $true
N To use the Get-VM cmdlet, you must install vSphere PowerCLI.

Creating and Updating Manual Unmanaged Desktop Pools

You can use the Add-ManualUnmanagedPool and Update-ManualUnmanagedPool cmdlets to create and update manual unmanaged desktop pools.
In the following example, the Add-ManualUnmanagedPool cmdlet creates an unmanaged desktop pool named unman1 that contains physical machines named pm01 and pm02.
Add-ManualUnmanagedPool -pool_id unman1 -pm_id_list pm01;pm02 -isUserResetAllowed $true
In the following example, the Update-ManualUnmanagedPool cmdlet updates the conguration of an unmanaged desktop pool named unman1.
Update-ManualUnmanagedPool -pool_id unman1 -displayName "Unmanaged Desktop 1"
-isUserResetAllowed $false

Displaying Information About Users and Groups

You can use the Get-User cmdlet to display information about Active Directory users and groups.
In the following example, the Get-User cmdlet displays information about all the users in a domain named mydom.
Get-User -domain "mydom"
In the following example, the Get-User cmdlet displays information about a user named fred in the domain named mydom. It excludes information about the user's group.
Get-User -name "fred" -domain "mydom" -includeGroup $false
VMware, Inc. 43

Managing Desktop Entitlements

You can use View PowerCLI cmdlets to manage desktop entitlements.
Table 319. Examples of Common Desktop Entitlement Management Tasks
Task Example View PowerCLI cmdlet Syntax
Entitle a user in a specic domain to a specic desktop pool
Entitle a user to all desktop pools
Get information about all the users who are entitled to use a specic desktop pool
Get information about all the users who are entitled to use desktop pools that have IDs with a specic prex
Remove an entitlement to use a specic desktop pool
Remote all entitlements
Get-User -name "mydom\fred" | Add-PoolEntitlement -pool_id dtop-12
Get-Pool | Add-PoolEntitlement -sid (Get-User -name "usr1").sid
Get-PoolEntitlement -pool_id dtop-1
Get-Pool -pool_id dtpool-* | Get-PoolEntitlement
Get-PoolEntitlement -pool_id dtpool-11 | Remove­PoolEntitlement
Get-PoolEntitlement | Remove-PoolEntitlement -forceRemove $true
N If you do not specify the -forceRemove parameter, you can use this command to obtain information about the entitlements to be removed.

Managing Remote Sessions

You can use View PowerCLI cmdlets to manage remote sessions.
Table 320. Examples of Common Remote Session Management Tasks
Task Example View PowerCLI cmdlet Syntax
List all active remote sessions for a specic domain user
Disconnect all active sessions for a specic domain user
Log o all active remote sessions for a specic domain user
Log o all active remote sessions that use the RDP display protocol
Get-RemoteSession -username mydom\fred
Get-RemoteSession -username mydom\fred | Send­SessionDisconnect
Get-RemoteSession -username mydom\fred | Send-SessionLogoff
Get-RemoteSession -protocol RDP | Send-SessionLogoff

Managing Virtual Machines

You can use View PowerCLI cmdlets to manage virtual machines. Horizon Agent must be running in the virtual machines.
Table 321. Examples of Common Virtual Machine Management Tasks
Task Example View PowerCLI cmdlet Syntax
Get information about the virtual machines for a specic desktop pool
Get information about the virtual machines congured on a specic vCenter Server instance
Get-DesktopVM -pool_id dtpool-3
Get-DesktopVM -vc_id (Get-ViewVC -serverName vc03.local.int).vc_id
44 VMware, Inc.
Chapter 3 Using View PowerCLI
Table 321. Examples of Common Virtual Machine Management Tasks (Continued)
Task Example View PowerCLI cmdlet Syntax
Get information about the virtual machines managed by the same vCenter Server instance that provisions a specic desktop pool
Get information about all the virtual machines managed by a specic vCenter Server instance
List all the active persistent user data disks for a specic virtual machine
Reset all the virtual machines for a specic desktop pool
Reset the virtual machine for a desktop pool that has a specic display name
Get-ViewVC -pool_id dtpool-1 | Get-DesktopVM
Get-ViewVC -serverName vc01.mydom.int | Get-DesktopVM
Get-ProfileDisk -VMname vm01
Get-Pool -pool_id dtpool-05 | Get-DesktopVM | Send-VMReset
Get-Pool -displayName dtp1 | Get-DesktopVM | Send-VMReset

Displaying Information About Physical Machines

You can use the Get-DesktopPhysicalMachine cmdlet to display information about a physical machine.
In this example, the Get-DesktopPhysicalMachine cmdlet displays information about a physical machine that has a specic IP address.
Get-DesktopPhysicalMachine -hostname myhost01

Updating Virtual Machine Ownership

You can use the Update-UserOwnership and Remove-UserOwnership cmdlets to update ownership for virtual machines.
In this example, the Update-UserOwnership cmdlet updates the ownership of a virtual machine named vm04 for a user named user1.
Update-UserOwnership -machine_id (Get-DesktopVM -Name "vm04").machine_id
-sid (Get-User -name usr1).sid
In this example, the Remove-UserOwnership cmdlet removes the ownership of a virtual machine named vm22.
Remove-UserOwnership -machine_id (Get-DesktopVM -Name "vm22").machine_id

Displaying Event Reports

You can use View PowerCLI cmdlets to display event reports.
Table 3‑22. Examples of Common Event Reporting Tasks
Task Example View PowerCLI cmdlet Syntax
List all the available event reporting views
Display all the conguration change events that occurred after a specic date
Display all the user events that occurred between two specic dates
Get-EventReportList
Get-EventReport -viewName config_changes -startDate (Get-Date
-Year 2011 -Month 5 -Day 20 -Hour 0 -Minute 0 -Second 0)
Get-EventReport -viewName user_events -startDate (Get-Date ­Year 2011 -Month 12 -Day 1 -Hour 0 -Minute 0 -Second 0) ­endDate (Get-Date -Year 2011 -Month 12 -Day 2 -Hour 0 -Minute 0 -Second 0)
VMware, Inc. 45
View Integration
Table 322. Examples of Common Event Reporting Tasks (Continued)
Task Example View PowerCLI cmdlet Syntax
Display all the user events that occurred during for the last 24 hours
Display all the user events that occurred during the current year
Get-EventReport -viewName user_events -startDate ((Get­Date).AddDays(-1))
Get-EventReport -viewName user_events -startDate (Get-Date ­Day 01 -Month 01 -Hour 0 -Minute 0 -Second 0)

Displaying and Updating Global Settings

You can use View PowerCLI cmdlets to display and update global seings for View.
Table 323. Examples of Common Global Settings Management Tasks
Task Example View PowerCLI cmdlet Syntax
Display the global seings
Update the session timeout seing
Update the forced logout warning message and delay period
Require clients to use SSL to connect and set the prelogin message
Get-GlobalSetting
Update-GlobalSetting -SessionTimeout 1800
Update-GlobalSetting -DisplayLogoffWarning $true ­ForcedLogoffAfter $logoutdelay -ForcedLogoffMessage "Forced log out will occur in $logoutdelay minutes"
Update-GlobalSetting -UseSSLClient $true -PreLoginMessage "Insert disclaimer and other notices here."

Displaying and Adding License Keys

You can use the Get-License and Set-License cmdlets to display and add license keys for View.
In this example, the Get-License cmdlet displays the installed license keys.
Get-License
In this example, the Set-License cmdlet adds a license key.
Set-License -key "08A25-0212B-0212C-4D42E"

Examples of Using View PowerCLI to Perform Advanced Tasks

You can combine View PowerCLI and vSphere PowerCLI cmdlets to create PowerShell functions that perform complex operations, such as resizing pools and adding datastores to desktop pools.

Determining if View Connection Server Is Running

The following PowerShell function determines whether the View Connection Server service is running and starts the service if it is not running.
# WaitForViewStartup
# Parameters
# $ClearError If $true, clear the $error object on completion.
# $StartBroker If $true, start the service if it is not running.
function WaitForViewStartup
{ param ($ClearError = $true, $StartBroker = $true)
$service = Get-Service wsbroker
if($service -and (Get-Service wstomcat)){
$started = $false
if($service.Status -eq "Stopped"){
if($StartBroker){ # Start the broker if it is not running.
46 VMware, Inc.
Chapter 3 Using View PowerCLI
Write-Warning "Connection Broker service is stopped, attempting to start."
$errCountBefore = $error.Count
Start-Service wsbroker
$errCountAfter = $error.Count
if($errorCountAfter -gt $errorCountBefore){
break
}
} else {
Write-Error "Connection Broker service is stopped."
break
}
}
while(!$started){ # Loop until service has completed starting up.
Write-Warning "Waiting for View Connection Server to start."
$errCountBefore = $error.Count
$output = Get-GlobalSetting -ErrorAction SilentlyContinue
$errCountAfter = $error.Count
$started = $true
if($errCountAfter -gt $errCountBefore){
$err = $error[0].ToString()
if($err.Contains("NoQueueHandler")){
$started = $false
Start-Sleep -s 1
} else {
if($ClearError){
$error.Clear()
}
Write-Error $err
break
}
}
if($ClearError){
$error.Clear()
}
}
} else {
Write-Error "The View Connection Server services could not be found. Is the Connection
Server installed?"
}
}

Resizing Automatic and Linked-Clone Pools

The following PowerShell functions determine the current usage of all desktop pools and resize any automatically provisioned or linked-clone desktop pools that are at maximum capacity.
# PollAllPoolsUsage
# Parameters
# $increment Amount by which to increase a pool that is at maximum capacity (default = 5).
function PollAllPoolsUsage
{ param ($increment)
if(-not $increment){
$increment = 5
}
VMware, Inc. 47
# Retrieve all pool objects and check each one individually
$pools = Get-Pool
foreach ($pool in $pools){
PollPoolUsage $pool $increment
}
}
# PollPoolUsage
# Parameters
# $Pool Pool object that represents the pool to be checked.
# $increment Amount by which to increase pool that is at maximum capacity.
function PollPoolUsage
{ param ($Pool, $increment)
# Get a list of remote sessions for the pool (errors are suppressed)
$remotes = Get-RemoteSession -pool_id $Pool.pool_id -ErrorAction SilentlyContinue
# Count the remote sessions.
$remotecount = 0
if($remotes){
$remotecount = ([Object[]]($remotes)).Count
}
# Determine the maximum number of desktops configured for a pool.
$maxdesktops = 0
if($Pool.deliveryModel -eq "Provisioned"){
$maxdesktops = $Pool.maximumCount
} else {
$maxdesktops = $Pool.machineDNs.split(";").Count
}
# Output the usage statistics for a pool.
Write-Output ("==== " + $Pool.pool_id + " ====")
Write-Output ("Remote session count: " + $remotecount)
Write-Output ("Maximum desktops: " + $maxdesktops)
# If a pool is using all its desktops, increase its maximum size
# or output a warning if it cannot be resized.
if($maxdesktops -eq $remotecount){
if($Pool.deliveryModel -eq "Provisioned"){ # Pool type can be resized
$newmaximum = [int]$Pool.maximumCount + [int]$increment
if($Pool.desktopSource -eq "VC"){ # Resize an automatic pool
Update-AutomaticPool -pool_id $Pool.pool_id -maximumCount $newmaximum
} elseif ($Pool.desktopSource -eq "SVI"){ # Resize a linked-clone pool
Update-AutomaticLinkedClonePool -pool_id $Pool.pool_id -maximumCount $newmaximum
}
Write-Output ("Pool " + $Pool.pool_id + " is using 100% of its desktops. Maximum VMs
increased to " + $newmaximum)
} else { # Pool type cannot be resized
Write-Output ("Pool " + $Pool.pool_id + " is using 100% of its desktops. Consider
increasing its capacity.")
}
}
}
48 VMware, Inc.
Chapter 3 Using View PowerCLI

Determining Paths to vSphere Inventory Objects

The following PowerShell function uses vSphere PowerCLI to return the full path to a vSphere inventory object.
# VVGetInventoryPath
# Parameters
# $InvObject Inventory object in vSphere PowerCLI.
#
# Examples
# VVGetInventoryPath (Get-VM -name myVM)
# VVGetInventoryPath (Get-ResourcePool | Select -first 1)
function VVGetPath($InvObject){
if($InvObject){
$objectType = $InvObject.GetType().Name
$objectBaseType = $InvObject.GetType().BaseType.Name
if($objectType.Contains("DatastoreImpl")){
Write-Error "Use the VVGetDataStorePath function to determine datastore paths."
break
}
if(-not ($objectBaseType.Contains("InventoryItemImpl") -or
$objectBaseType.Contains("FolderImpl") -or
$objectBaseType.Contains("DatacenterImpl") -or
$objectBaseType.Contains("VMHostImpl") ) ){
Write-Error ("The provided object is not an expected vSphere object type. Object type
is " + $objectType)
break
}
$path = ""
# Recursively move up through the inventory hierarchy by parent or folder.
if($InvObject.ParentId){
$path = VVGetPath(Get-Inventory -Id $InvObject.ParentId)
} elseif ($InvObject.FolderId){
$path = VVGetPath(Get-Folder -Id $InvObject.FolderId)
}
# Build the path, omitting the "Datacenters" folder at the root.
if(-not $InvObject.isChildTypeDatacenter){ # Add object to the path.
$path = $path + "/" + $InvObject.Name
}
$path
}
}
VMware, Inc. 49

Determining Paths to vSphere Datastore Objects

The following PowerShell function uses vSphere PowerCLI to return the full path to a datastore in a cluster as specied by a resource pool.
# VVGetDatastorePath
# Parameters
# $Datastore Datastore object in vSphere PowerCLI.
# $ResourcePool Resource pool in cluster.
#
#Example
# VVGetDatastorePath (Get-Datastore "datastore1") (Get-ResourcePool "Resources")
function VVGetDatastorePath($Datastore,$ResourcePool){
if($Datastore -and $ResourcePool){
$dsType = $Datastore.GetType().Name
$rpType = $ResourcePool.GetType().Name
if(-not ($dsType.Contains("Datastore")) ){
Write-Error "The Datastore provided is not a Datastore object."
break
}
if(-not ($rpType.Contains("ResourcePool")) ){
Write-Error "The Resource Pool provided is not a ResourcePool object."
break
}
$ClusterPath = VVGetPath(Get-Inventory -Id $ResourcePool.ParentId)
$path = $ClusterPath + "/" + $Datastore.Name
$path
}
}

Adding and Removing Datastores

You can dene PowerShell functions to add and remove datastores.
The PowerShell functions in the following example add and remove a datastore for an automatic pool.
# AddDatastoreToAutomaticPool
# Parameters
# $Pool Pool ID of pool to be updated.
# $Datastore Full path to datastore to be added.
function AddDatastoreToAutomaticPool
{ param ($Pool, $Datastore)
$PoolSettings = (Get-Pool -pool_id $Pool)
$datastores = $PoolSettings.datastorePaths + ";$Datastore"
Update-AutomaticPool -pool_id $Pool -datastorePaths $datastores
}
Define a PowerShell function to remove a datastore from an automatic pool.
# RemoveDatastoreFromAutomaticPool
# Parameters
# $Pool Pool ID of pool to be updated.
# $Datastore Full path to datastore to be removed.
50 VMware, Inc.
Chapter 3 Using View PowerCLI
function RemoveDatastoreFromAutomaticPool
{ param ($Pool, $Datastore)
$PoolSettings = (Get-Pool -pool_id $Pool)
$currentdatastores = $PoolSettings.datastorePaths
$datastores = ""
foreach ($path in $currentdatastores.split(";")){
if(-not ($path -eq $Datastore)){
$datastores = $datastores + "$path;"
}
}
Update-AutomaticPool -pool_id $Pool -datastorePaths $datastores
}
The PowerShell functions in the following example add and remove a datastore for a linked-clone pool.
# AddDatastoreToLinkedClonePool
# Parameters
# $Pool Pool ID of pool to be updated.
# $Datastore Full path to datastore to be added.
function AddDatastoreToLinkedClonePool
{ param ($Pool, $Datastore)
$PoolSettings = (Get-Pool -pool_id $Pool)
$datastores = $PoolSettings.datastoreSpecs + ";$Datastore"
Update-AutomaticLinkedClonePool -pool_id $Pool -datastoreSpecs $datastores
}
Define a PowerShell function to remove a datastore from a linked-clone pool.
# RemoveDatastoreFromLinkedClonePool
# Parameters
# $Pool Pool ID of pool to be updated.
# $Datastore Full path to datastore to be removed.
function RemoveDatastoreFromLinkedClonePool
{ param ($Pool, $Datastore)
$PoolSettings = (Get-Pool -pool_id $Pool)
$currentdatastores = $PoolSettings.datastoreSpecs
$datastores = ""
foreach ($spec in $currentdatastores.split(";")){
$path = $spec.split("]")[1]
$pathToRemove = $Datastore.split("]")[1]
if(-not $pathToRemove){
$pathToRemove = $Datastore
}
if(-not ($path -eq $pathToRemove)){
$datastores = $datastores + "$spec;"
}
}
Update-AutomaticLinkedClonePool -pool_id $Pool -datastoreSpecs $datastores
}
VMware, Inc. 51

Assigning Multiple Network Labels to a Desktop Pool

In View 5.2 and later releases, you can congure automated full-clone and linked-clone desktop pools to use multiple network labels. This feature expands the number of IP addresses you can assign to the virtual machines in a pool, making it easier to create pools that have a large number of desktops. You can use View PowerCLI cmdlets to assign network labels that are available in the vCenter Server resource pool where the automated full-clone or linked-clone desktop pool is deployed.
By default, the virtual machines in a desktop pool inherit the network interface card (NIC) and its associated network label from the parent virtual machine or template. Some parent virtual machines or templates might have multiple NICs and associated network labels. Typically, the subnet mask of a VLAN dened by a network label has a limited range of available IP addresses. For example, a subnet mask might have a maximum of 254 IP addresses that can be assigned to the desktop virtual machines.
View distributes network labels among the virtual machines in the entire desktop pool. When View provisions desktops, it assigns network labels in alphabetical order. When the maximum number of virtual machines are provisioned with IP addresses that use the rst network label, View starts to assign the second label, and so on.
To congure a desktop pool to use multiple network labels, you select network labels from the labels dened for the ESXi cluster in vCenter Server, associate the labels with the NICs that are inherited from a parent virtual machine or template, specify the maximum number of IP addresses that can be assigned to virtual machines from each network label, and save the information in a network label conguration le. You specify the network label conguration le in the View PowerCLI cmdlet that you use to create the desktop pool.

Network Label Configuration File Format

You use a network label conguration le to congure automated full-clone and linked-clone desktop pools to use multiple network labels. The network label conguration le contains a ag that controls whether network labels are assigned and sections that dene NICs, network labels, and network label aributes.
Enabled Flag
This ag is set to enabled=true by default. Keep the ag set to true to allow View to assign network labels to the pool.
Parameter Definition for NIC Section
This section lists the NICs dened in vCenter Server on the template or snapshot of the parent virtual machine. Do not edit this section.
Parameter Definition for Network Section
This section lists the network labels dened in vCenter Server instance for the ESXi hosts in the cluster. Network labels are listed in alphabetical order. If a cluster uses standard network labels and distributed virtual switch network labels, use only one type of label for a pool. Do not edit this section.
Network Label Attribute Definition Section
This section lists the network labels associated with each NIC. The network labels are commented out and the assignments are not functional. You must remove the comments (### marks) from the appropriate network labels to allow them to be assigned to a desktop pool.
The maxvm parameter denes the maximum number of IP assignments that can be made to virtual machines from the network label. The value of the maxvm parameter is generated by the -maxVMsPerNetworkLabel parameter in the Export-NetworkLabelSpecForLinkedClone or Export-NetworkLabelSpecForFullClone cmdlet. You can manually edit this value in the conguration le.
52 VMware, Inc.
Chapter 3 Using View PowerCLI
As a best practice, do not assign a network label to more than one desktop pool. The maximum network label counts are honored only on a per-NIC, per-pool basis. For example, if you congure NIC1 on pool1 to use network06 with a maxvm of 244, and you congure NIC1 on pool2 to use the same network label, network06, with a maxvm of 244, network06 must have an actual assignable IP address space of at least 488 addresses or the IP assignments from the network label might become oversubscribed.
If the parent virtual machine or template has two NICs, each network label discovered by the Export-
NetworkLabelSpecForLinkedClone or Export-NetworkLabelSpecForFullClone cmdlet is associated with both
NICs. Warning messages explain that IP address assignments can become oversubscribed because the assignment function for one NIC is not aware of the assignments that are made from the same network label for the second NIC. Each NIC is aware only of its own network label assignments.

Example Network Label Configuration File

The following example shows a typical network label conguration le.
#Network Label Configuration Spec
#WARNING! Setting enabled flag to false will
#turn off the automatic network label assignment
#for newly provisioned desktops.
enabled=true
#Parameter Definition for NIC
nic1=Network adapter 1
nic2=Network adapter 2
#Parameter Definition for Network
network01=dv_2k_2004
network02=dv_2kclient_2164
network03=dv_2kdt1_2084
network04=dv_2kInfra_1924
network05=dv_vMotion
network06=desktop-auto01-230
network07=desktop-auto02-240
network08=desktop-auto03-250
network09=desktop-auto04-260
network10=desktop-auto05-270
#Network Label Attribute Definition
#Expected format:
#<nic_param>.<network_param>.maxvm=<max vm for network label>
#WARNING! Multiple NICs:(nic1,nic2) detected against network01,
#total port count against network01: 488.
#IP address might be over-subscribed.
#WARNING! Multiple NICs:(nic1,nic2) detected against network02,
#total port count against network02: 488.
#IP address might be over-subscribed.
...
...
#WARNING! Multiple NICs:(nic1,nic2) detected against network02,
#total port count against network10: 488.
#IP address might be over-subscribed.
####nic1.network01.maxvm=244
####nic1.network02.maxvm=244
VMware, Inc. 53
####nic1.network03.maxvm=244
####nic1.network04.maxvm=244
####nic1.network05.maxvm=244
####nic1.network06.maxvm=244
####nic1.network07.maxvm=244
####nic1.network08.maxvm=244
####nic1.network09.maxvm=244
####nic1.network10.maxvm=244
####nic2.network01.maxvm=244
####nic2.network02.maxvm=244
####nic2.network03.maxvm=244
####nic2.network04.maxvm=244
####nic2.network05.maxvm=244
####nic2.network06.maxvm=244
####nic2.network07.maxvm=244
####nic2.network08.maxvm=244
####nic2.network09.maxvm=244
####nic2.network10.maxvm=244

Obtain and Export NIC and Network Label Information

Before you can assign multiple network labels to a pool, you must obtain NIC and network label information and export that information to a network label conguration le.
For a full-clone pool, you obtain information about the NICs congured on the template that you use to create the full-clone pool. For a linked-clone pool, you obtain information about the NICs congured on the parent virtual machine that you use to create the linked-clone pool. You obtain network label information from the available network labels congured on the ESXi hosts in the cluster on which the desktop pool is to be deployed.
When you export the NIC and network label information to a network label conguration le, you set the maximum number of virtual machines that can be provisioned with IP addresses from each network label. You should allow a certain number of virtual machines for overhead. For example, if a network label VLAN allows a maximum of 254 IP addresses to be assigned to virtual machines, you might set the maximum number to 244.
Prerequisites
Become familiar with using View PowerCLI. See “Geing Started with View PowerCLI,” on page 27.
Procedure
To obtain and export NIC and network label information to create a full-clone pool, use the Export-
n
NetworkLabelSpecForFullClone cmdlet.
For example:
Export-NetworkLabelSpecForFullClone -vc_id id -clusterPath "cluster-path"
-TemplatePath "template-path" -maxVMsPerNetworkLabel nn
-networkLabelConfigFile "config-file-path"
To obtain and export NIC and network label information to create a linked-clone pool, use the Export-
n
NetworkLabelSpecForLinkedClone cmdlet.
For example:
Export-NetworkLabelSpecForLinkedClone -vc_id id -clusterPath "cluster-path"
-parentVMPath "parent-vm-path" -parentSnapshotPath "snapshot-path"
-maxVMsPerNetworkLabel nn -networkLabelConfigFile "config-file-path"
54 VMware, Inc.
Chapter 3 Using View PowerCLI
The network label cmdlet obtains the network labels congured in vCenter Server for all the ESXi hosts in the specied cluster, sets the maximum number of virtual machines that can be provisioned with IP addresses from each network label, and exports the list of NICs and network labels to the network label conguration le.
Example: Obtaining NIC and Network Label Information
In this example, the Export-NetworkLabelSpecForLinkedClone cmdlet obtains NICs from the Win7-Parent virtual machine and Snapshot1, and network label information from Cluster1. A maximum of 244 virtual machines can be provisioned with IP addresses from each network label. The information is exported to a network label conguration le named C:/label.txt.
Export-NetworkLabelSpecForLinkedClone -vc_id 1a2b3c4d-5e6f
-clusterPath "/myresourcepool/host/Cluster1/"
-parentVMPath "/myresourcepool/vm/Win7-Parent" -parentSnapshotPath "/snapshot1"
-maxVMsPerNetworkLabel 244 -networkLabelConfigFile "C:/label.txt"
What to do next
Verify and edit the network label conguration le. See “Verify and Edit a Network Label Conguration
File,” on page 55.

Verify and Edit a Network Label Configuration File

After you generate a network label conguration le, you must verify its contents and edit it to specify the NIC and network label pairings to assign to the pool.
Prerequisites
Generate a network label conguration le. See “Obtain and Export NIC and Network Label
n
Information,” on page 54.
Become familiar with the network label conguration le format. See “Network Label Conguration
n
File Format,” on page 52.
Procedure
1 In a text editor, open the network label conguration le.
2 For each NIC and network label pairing that you want to assign to the pool, remove the comments (###
marks).
3 Verify that each network label is assigned to only one NIC.
4 Verify that only one type of network label is used for the pool.
A NIC can be congured with a standard network switch or distributed virtual network switch.
5 Save your changes.
Example: Edited Network Label Configuration File
In this example, network06 and network07 are assigned to nic1 (Network adapter 1) and network08 and network09 are assigned to nic2 (Network adapter 2). network01 through network05 remain commented and are not used. This conguration can support a pool of up to 488 virtual machines.
#Network Label Configuration Spec
...
#Network Label Attribute Definition
#Expected format:
#<nic_param>.<network_param>.maxvm=<max vm for network label>
VMware, Inc. 55
...
####nic1.network01.maxvm=244
####nic1.network02.maxvm=244
####nic1.network03.maxvm=244
####nic1.network04.maxvm=244
####nic1.network05.maxvm=244
nic1.network06.maxvm=244
nic1.network07.maxvm=244
####nic1.network08.maxvm=244
####nic1.network09.maxvm=244
####nic1.network10.maxvm=244
####nic2.network01.maxvm=244
####nic2.network02.maxvm=244
####nic2.network03.maxvm=244
####nic2.network04.maxvm=244
####nic2.network05.maxvm=244
####nic2.network06.maxvm=244
####nic2.network07.maxvm=244
nic2.network08.maxvm=244
nic2.network09.maxvm=244
####nic2.network10.maxvm=244
What to do next
Create a desktop pool that can use the multiple network labels. See “Deploy a Desktop Pool That Uses
Multiple Network Labels,” on page 56.

Deploy a Desktop Pool That Uses Multiple Network Labels

You can use View PowerCLI cmdlets to deploy an automated full-clone or linked-clone desktop pool that uses multiple network labels.
Prerequisites
Generate a network label conguration le. See “Obtain and Export NIC and Network Label
n
Information,” on page 54.
Verify and edit the network label conguration le. See “Verify and Edit a Network Label
n
Conguration File,” on page 55.
Procedure
Use a View PowerCLI cmdlet to deploy the desktop pool.
u
Option Action
Deploy a linked-clone pool
Deploy a full-clone desktop pool
Run the Add-AutomaticLinkedClonePool cmdlet and specify the path to the network label conguration le with the -NetworkLabelConfigFile parameter.
Run the Add-AutomaticPool cmdlet and specify the path to the network label conguration le with the -NetworkLabelConfigFile parameter.
56 VMware, Inc.
Chapter 3 Using View PowerCLI
Example: Linked-Clone Desktop Pool Deployment
In this example, the Add-AutomaticLinkedClonePool cmdlet creates a linked-clone pool named POOL_NAME and assigns the network labels in the network label conguration le named label.txt le.
Add-AutomaticLinkedClonePool -Pool_id POOL_NAME -NamePrefix NAME_PREFIX -Vc_id
2162aa44-e99c-4f1a-875d-dd295681d2ca -Persistence Persistent
-VmFolderPath "/resourcepool/vm/Discovered virtual machine"
-ResourcePoolPath "/resourcepool/host/Cluster1/Resources/Cluster1_pool1"
-ParentVmPath "/resourcepool/vm/Win7-Parent" -ParentSnapshotPath
"/780936_agent/noServiceRestart/updatedVPListener" -DatastoreSpecs
"[Conservative,replica]/resourcepool/host/Cluster1/Cluster1_Replica1;[Mod
erate,OS,data]/resourcepool/host/Cluster1/Desktop_FC_9;[Moderate,OS,data]
/resourcepool/host/Cluster1/Desktop_FC_8;[Moderate,OS,data]/resourcepool/
host/Cluster1/Desktop_FC_7” -Composer_ad_id
1a2b3c4d-5d6e-7f-1234-1234abcd -UseUserDataDisk $false -UseTempDisk
$false -MinimumCount 2000 -MaximumCount 2000 -HeadroomCount 1500
-PowerPolicy AlwaysOn -SuspendProvisioningOnError $false
-NetworkLabelConfigFile "C:/label.txt"
Assigning Network Labels
As View provisions virtual machines in a pool, it assigns network labels to the NICs in the virtual machines. When the maximum number of virtual machines to be assigned a certain network label is reached, View begins provisioning from the next network label.
After View assigns a network label to a virtual machine, it does not change the assignment.
If virtual machines in a pool are deleted, the associated network label assignments are freed and can be assigned to any newly provisioned virtual machines in the pool.
View Composer refresh operations do not aect network label assignments. Virtual machines continue to receive the network labels that were assigned to them when they were rst provisioned.
Preserving Network Labels During Recompose and Rebalance Operations
During View Composer recompose and rebalance operations, View aempts to ensure that the network label of each NIC aached to each linked-clone desktop is preserved when a linked clone inherits new NICs from a new base image. View preserves the network label of a NIC that was in place before the recompose or rebalance operation as long as the new base image has an available NIC congured with the same type of network switch. You can congure a NIC with a standard network switch or distributed virtual network switch.
The following examples describe the rules that govern network label preservation during recompose and rebalance operations.
If both the original linked-clone desktop and the new base image have one NIC congured with a
n
standard network switch, the network label and MAC address are preserved.
If both the original linked-clone desktop and the new base image have one NIC congured with a
n
distributed virtual network switch, the network label and MAC address are preserved.
If the original linked-clone desktop has one NIC congured with a standard network switch and the
n
new base image has one NIC congured with a distributed virtual network switch, the network label is not preserved. The MAC address is preserved.
If the original linked-clone desktop has two NICs, both of which are congured with a standard
n
network switch, and the new base image has one NIC congured with a standard network switch, the network label of one original NIC is preserved, but all network properties associated with the other original NIC are not preserved.
VMware, Inc. 57

Displaying Network Label Assignments for a Pool

You can use the Get-Pool cmdlet to display the network label assignments for a pool. The
networkLabelSpecs output parameter shows the network labels that are assigned to the pool. You do not
need to add a parameter in the command line to display this information.
The following table describes the networkLabelSpecs output format.
Table 324. networkLabelSpecs Output Format
Value Description
nl Network label name.
nic NIC name.
enabled A value of 1 means the label is active. A value of 0 means it is disabled.
max Maximum number of virtual machines that can be assigned the network label.
usage Number of virtual machines currently assigned to the network label.
When the usage value equals the max value, View stops assigning that network label and starts making assignments from the next available label.
The following Get-Pool cmdlet example shows network label assignments for the pool Pool2.
> get-pool -pool_id Pool2
...
networkLabelSpecs : [nl=desktop-auto01-230;nic=Network adapter 1;enable
d=1;max=239;usage=239];[nl=desktop-auto02-240;nic=N
etwork adapter 1;enabled=1;max=239;usage=239];[nl=vie
wscale-auto03-250;nic=Network adapter 1;enabled=1;max
=239;usage=239];[nl=desktop-auto04-260;nic=Network
adapter 1;enabled=1;max=239;usage=239];[nl=desktopauto05-
270;nic=Network adapter 1;enabled=1;max=239;us
age=239];[nl=desktop-auto06-280;nic=Network adapter
1;enabled=1;max=239;usage=239];[nl=desktop-auto07-
290;nic=Network adapter 1;enabled=1;max=239;usage=239
];[nl=desktop-auto08-300;nic=Network adapter 1;enab
led=1;max=239;usage=239];[nl=desktop-auto09-310;nic
=Network adapter 1;enabled=1;max=239;usage=88] ...

Displaying Network Label Assignments for a Virtual Machine

You can use the Get-DesktopVM cmdlet to display network label assignments for a virtual machine. The
netLabelAutoAssigns output parameter shows the NIC names and network labels that View aempted to
assign to the virtual machine. You do not have to add a parameter in the command line to display this information.
If the enabled ag in the network label conguration le was set to 0, the netLabelAutoAssigns output shows this feature is disabled.
The netLabelAutoAssigns output displays the network label assignments that View Connection Server reserves for the virtual machine. To see the network labels that are assigned to the virtual machine in vCenter Server, use the -getNetworkLabel parameter with the Get-DesktopVM cmdlet. For more information, see “Displaying vCenter Server Network Label Assignments for a Virtual Machine,” on page 59.
58 VMware, Inc.
Chapter 3 Using View PowerCLI
The following Get-DesktopVM cmdlet example displays network label assignments for the virtual machine 918 in the pool pool2.
> get-desktopvm -pool_id pool2
...
vm : 918
ps_object_type : vc_vm
id : VirtualMachine-vm-47878
vc_id : 2162aa44-e99c-4f1a-875d-dd295681d2ca
Name : pool2-1811
UnescapedName : pool2-1811
Path : /resource/vm/Discovered virtual machine/pool2/pool2-1811
GuestFullName : Microsoft Windows 7 (32-bit)
GuestID : windows7Guest
HostName : POOL2-1811.vdi3.net
IPAddress : 10.143.30.205
machine_id : 56496104-bf91-4d69-8bae-fb4493608542
user_sid :
user_displayname :
isInPool : true
pool_id : pool2
isLinkedClone : true
composerTask : refresh
netLabelAutoAssigns : {Network adapter 1=desktop-auto08-300} ...

Displaying vCenter Server Network Label Assignments for a Virtual Machine

vCenter Server can make additional network label assignments to virtual machines. These assignments are outside the control of View.
To see the network labels that are assigned to a virtual machine in vCenter Server, use the -getNetworkLabel parameter with the Get-DesktopVM cmdlet. You must type a Boolean value of $true in the command line to enable the -getNetworkLabel parameter. The output of the Get-DesktopVM cmdlet displays the networkLabels parameter, which shows the NICs and network label assignments that were made for the virtual machine.
The following Get-DesktopVM cmdlet example displays network label assignments made in vCenter Server for the virtual machine 1849 in the pool pool2.
> get-desktopvm -pool_id pool2 -getnetworklabel $true
...
vm : 1849
ps_object_type : vc_vm
id : VirtualMachine-vm-46148
vc_id : 2162aa44-e99c-4f1a-875d-dd295681d2ca
Name : pool2-85
UnescapedName : pool2-85
Path : /resource/vm/Discovered virtual machine/pool2/pool2-85
GuestFullName : Microsoft Windows 7 (32-bit)
GuestID : windows7Guest
HostName : POOL2-85.vdi3.net
IPAddress : 192.168.1.10
networkLabels : {Network adapter 1=desktop-auto01-230}
machine_id : be14deda-ec1b-4dd1-834a-915fcc7d51a0
user_sid :
user_displayname :
isInPool : true
VMware, Inc. 59
pool_id : pool2
isLinkedClone : true
composerTask :
netLabelAutoAssigns : {Network adapter 1=desktop-auto01-230} ...
N Because the -getNetworkLabel parameter is a long-running parameter, run the Get-DesktopVM cmdlet with the -getNetworkLabel parameter during o-peak periods of vSphere utilization.

Disable Automatic Network Label Assignments

You can disable network label assignments on an existing pool that uses automatic assignments.
Procedure
1 In a text editor, open the network label conguration le.
2 Set the enabled ag to false.
For example: enabled=false
3 Save your changes.
4 Run the Update-AutomaticLinkedClonePool or Update-AutomaticPool cmdlet and specify the path to the
updated network label conguration le with the -NetworkLabelConfigFile parameter.
When View provisions new virtual machines in the pool, it uses the network labels on the parent virtual machine or template.
60 VMware, Inc.

Customizing LDAP Data 4

You can use VMware and Microsoft command-line tools to import and export LDAP conguration data to and from View. These command-line tools import and export LDAP conguration data in LDAP Data Interchange Format (LDIF) conguration les.
This feature is intended for use by advanced administrators who want to perform automatic bulk conguration operations. To create scripts to update the View conguration, use View PowerCLI.
This chapter includes the following topics:
“Introduction to LDAP Conguration Data,” on page 61
n
“Modifying LDAP Conguration Data,” on page 62
n

Introduction to LDAP Configuration Data

All View conguration data is stored in an LDAP directory. Each View Connection Server standard or replica instance contains a local LDAP conguration repository and a replication agreement between each of the View Connection Server instances. This arrangement ensures that changes to one repository are automatically replicated to all other repositories.
When you use View Administrator to modify the View conguration, the appropriate LDAP data is updated in the repository. For example, if you add a desktop pool, View stores information about users, user groups, and entitlements in LDAP. View Connection Server instances manage other LDAP conguration data automatically, and they use the information in the repository to control View operations.
VMware, Inc.
You can use LDIF conguration les to perform a number of tasks, including transferring conguration data between View Connection Server instances and backing up your View conguration so that you can restore the state of a View Connection Server instance.
You can also use LDIF conguration les to dene a large number of View objects, such as desktop pools, and add those objects to your View Connection Server instances without having to use View Administrator to perform the task manually.
In View 3.1 and later releases, View performs regular backups of the LDAP repository.
LDAP conguration data is transferred as plain ASCII text and conforms to the Internet Engineering Task Force (IETF) RFC 2849 standard.
61

Modifying LDAP Configuration Data

You can export LDAP conguration data on a View Connection Server instance to an LDIF conguration le, modify the LDIF conguration le, and import the modied LDIF conguration le into other View
Connection Server instances to perform automatic bulk conguration operations.
You can obtain examples of LDIF syntax for any item of LDAP conguration data in View by examining the contents of an exported LDIF conguration le. For example, you can extract the data for a desktop pool and use that data as a template to create a large number of desktop pools.

Export LDAP Configuration Data

You can use the vdmexport command-line utility to export conguration data from a standard or replica View Connection Server instance to an LDIF conguration le.
By default, the vdmexport command-line utility is installed in the C:\Program Files\VMware\VMware
View\Server\tools\bin directory.
Procedure
1 Log in to a standard or replica View Connection server instance.
Option Action
View 3.1 and earlier
View 4.5 and later
2
At the command prompt, type the vdmexport command and use the -f option to specify the name of the LDIF conguration le to export.
Log in as an administrator and be a member of the Local Administrators user group.
Log in as a user in the Administrators or Administrators (Read only) role.
N You must be logged in as a user in the Administrators or Administrators (Read only) role to export conguration data from the View conguration repository.
For example: vdmexport -f myexport.LDF
Alternatively, you can redirect the output instead of using the -f option.
For example: vdmexport > myexport.LDF
The vdmexport command writes the conguration of your View Connection Server instance to the le that you specify. The command displays errors if your role has insucient privileges to view the data in the conguration repository.

Defining a Desktop Pool in an LDIF Configuration File

You can dene a desktop pool in an LDIF conguration le and import the customized LDIF conguration le to create a large number of desktop pools.
N You can also create customized LDIF conguration les for other objects that are dened in the LDAP repository, including global conguration seings, conguration seings for a specic View Connection Server instance or security server, and conguration seings for a specic user.
To dene a desktop pool in an LDIF conguration le, you must add the following entries to the le.
A Virtual Desktop VM entry for each virtual desktop in the desktop pool
n
A VM Pool entry for each desktop pool
n
A Desktop Application entry that denes the entitlement of the desktop pool
n
62 VMware, Inc.
Chapter 4 Customizing LDAP Data
You associate each VM Pool entry with one Desktop Application entry in a one-to-one relationship. A Desktop Application entry cannot be shared between VM Pool entries, and a VM Pool entry can only be associated with one Desktop Application entry.
The following table describes the aributes you must specify when you modify a desktop pool denition in an LDIF conguration le.
Table 41. Important Attributes for Defining a Desktop Pool
Entry Attribute Description
Virtual Desktop VM
VM Pool
Desktop Application
Desktop Application member A list of Active Directory (AD) users and groups who are entitled to
cn Common name of an entry. If you require names to be generated
automatically, specify globally unique identier (GUID) strings. You can use any reliable GUID generator, such as the mechanism provided by .NET (for example, by calling System.Guid.NewGuid().ToString() in Visual Basic).
access the desktop pool. The aribute is specied in the form of a Windows Security Identier (SID) reference. A member value of <SID=S-1-2-3-4> represents an AD user or group with the SID value S-1-2-3-4.
In LDIF format, the left angle (<) character is reserved, so you must place two colons (::) after the aribute name and specify the SID value in base 64 format (for example, PFNJRD1TLTEtMi0zLTQ+IA==). Because this aribute is multivalued, you can use it on multiple lines to represent each entry in a list of SIDs.
Sample LDIF Configuration File Desktop Pool Entries
The following example is an excerpt from an LDIF conguration le. It shows sample entries for a desktop pool named Pool1, which contains two virtual desktops named VM1 and VM2. The desktop pool entry is paired with the Desktop Application entry, which is also named Pool1.
#
# Virtual Desktop VM entry VM1
#
DN: CN=vm1,OU=Servers,DC=vdi,DC=vmware,DC=int
changetype: add
objectClass: top
objectClass: pae-Server
objectClass: pae-WinServer
objectClass: pae-ThinWinServer
objectClass: pae-VM
cn: vm1
description: sample virtual desktop entry
pae-VmSuspended:: IA==
pae-OptIgnoreProcessList: 0
pae-MOID: vm-1
pae-VmState: READY
pae-ServerManaged: 1
pae-SSOEnabled: 1
pae-DisplayName: virtual desktop 1
pae-TunneledConnection: 1
pae-pwdEncryption: KERB5
ipHostNumber: vm1
pae-ClientProtVersion: 1
pae-WinDomain: NULL
pae-thinProto: XP_RDP
pae-Services: SESSION |, HEARTBEAT |, EVENTS |, USED |
VMware, Inc. 63
pae-VmPath: /New Datacenter/vm/vm-1
pae-OptSuspendTimeout: 0
pae-OptDisconnectLimitTimeout: 0
pae-OptMaximumSessions: 0
pae-Disabled: 0
#
# Virtual Desktop VM entry VM2
#
DN: CN=vm2,OU=Servers,DC=vdi,DC=vmware,DC=int
changetype: add
objectClass: top
objectClass: pae-Server
objectClass: pae-WinServer
objectClass: pae-ThinWinServer
objectClass: pae-VM
cn: vm2
description: sample virtual desktop entry
pae-VmSuspended:: IA==
pae-OptIgnoreProcessList: 0
pae-MOID: vm-2
pae-VmState: READY
pae-ServerManaged: 1
pae-SSOEnabled: 1
pae-DisplayName: virtual desktop 2
pae-TunneledConnection: 1
pae-pwdEncryption: KERB5
ipHostNumber: vm2
pae-ClientProtVersion: 1
pae-WinDomain: NULL
pae-thinProto: XP_RDP
pae-Services: SESSION |, HEARTBEAT |, EVENTS |, USED |
pae-VmPath: /New Datacenter/vm/vm-2
pae-OptSuspendTimeout: 0
pae-OptDisconnectLimitTimeout: 0
pae-OptMaximumSessions: 0
pae-Disabled: 0
#
# Further Virtual Desktop VM entries as required
#
#
# VM Pool entry Pool1
#
DN: CN=Pool1,OU=Server Groups,DC=vdi,DC=vmware,DC=int
changetype: add
objectClass: top
objectClass: pae-ServerPool
cn: Pool1
pae-VCDN: CN=b180b93b-2dd3-4b58-8a81-b8534a4b7565,OU=VirtualCenter,OU=Properties,DC=vdi,
DC=vmware,DC=int
pae-MemberDN: CN=vm1,OU=Servers,DC=vdi,DC=vmware,DC=int
pae-MemberDN: CN=vm2,OU=Servers,DC=vdi,DC=vmware,DC=int
pae-VmPowerPolicy: remainon
pae-VmProvEnabled: 1
pae-VmProvSuspendOnError: 1
64 VMware, Inc.
Chapter 4 Customizing LDAP Data
pae-VmStartClone: 1
pae-VmPoolCalculatedValues: 1
pae-ServerPoolType: 0
pae-VmMinimumCount: 0
pae-VmHeadroomCount: 0
pae-VmMaximumCount: 0
pae-Disabled: 0
#
# Desktop Application entry Pool1 -- one entry is required for each VM Pool
#
DN: CN=Pool1,OU=Applications,DC=vdi,DC=vmware,DC=int
changetype: add
objectClass: top
objectClass: pae-Entity
objectClass: pae-App
objectClass: pae-WinApp
objectClass: pae-ThinWinApp
objectClass: pae-DesktopApplication
cn: Pool1
member:: PFNJRD1TLTEtMi0zLTQ+IA==
pae-Icon: /thinapp/icons/desktop.gif
pae-URL: \
pae-Servers: CN=Pool1,OU=Server Groups,DC=vdi,DC=vmware,DC=int
pae-ServerProtocolLevel: OSX_NETOP
pae-ServerProtocolLevel: OS2_NETOP
pae-ServerProtocolLevel: NT4_NETOP
pae-ServerProtocolLevel: WIN2K_NETOP
pae-ServerProtocolLevel: NT4_RDP
pae-ServerProtocolLevel: WIN2K_RDP
pae-ServerProtocolLevel: XP_RDP
pae-Disabled: 0

Use the vdmimport Command to Import LDAP Configuration Data

In View 4.5 and later releases, you can use the vdmimport command to import conguration data from an LDIF conguration le into a standard or replica View Connection Server instance.
By default, the vdmimport command-line utility is installed in the C:\Program Files\VMware\VMware
View\Server\tools\bin directory.
Prerequisites
Verify that you have View 4.5 or later. If you have an earlier View release, see “Use the LDIFDE
n
Command to Import LDAP Conguration Data,” on page 66.
Export LDAP conguration data to an LDIF conguration le. See “Export LDAP Conguration Data,”
n
on page 62.
Procedure
1 Log in to a View Connection Server instance as a user in the Administrators role.
You must be logged in as a user in the Administrators role to import conguration data into the View conguration repository.
VMware, Inc. 65
2
At the command prompt, type the vdmimport command and use the -f option to specify the LDIF conguration le to import.
For example: vdmimport -f myexport.LDF
After the vdmimport command runs, the conguration of your View Connection Server instance is updated with the data from the le, and the number of records that have been successfully updated is displayed. Errors are displayed if some records could not be updated because your role has insucient privileges.

Use the LDIFDE Command to Import LDAP Configuration Data

You can use the Microsoft LDIFDE command to import conguration data from an LDIF conguration le into a standard or replica View Connection Server instance.
In View releases earlier than View 4.5, you must use the Microsoft LDIFDE command to import conguration data from an LDIF conguration le. The vdmimport command is not supported in View releases earlier than View 4.5.
If you have View 4.5 or later, use the vdmimport command rather than the LDIFDE command. The vdmimport command does not display the large number of error messages that are produced by running the LDIFDE command. For more information, see “Use the vdmimport Command to Import LDAP Conguration Data,” on page 65.
Because the LDIFDE command does not update, create, or delete any LDAP records that are not dened in the LDIF conguration le, it enables you to customize an LDIF conguration le so that only selected records are aected when you import the le. For complete information about using the LDIFDE command, go to hp://support.microsoft.com/kb/237677.
Prerequisites
Export LDAP conguration data to an LDIF conguration le. See “Export LDAP Conguration Data,” on page 62.
Procedure
1 Log in to a View Connection server instance.
Option Action
View 3.1 or earlier
View 4.5 or later
Log in as an administrator and be a member of the Local Administrators user group.
Log in as a user in the Administrators role.
N You must be logged in as a user in the Administrators role to import conguration data into the View conguration repository.
2
At the command prompt, type the LDIFDE command and use the -f option to specify an existing LDIF conguration le.
For example: LDIFDE -i -f myexport.LDF -s 127.0.0.1 -z
After the LDIFDE command runs, the conguration of your View Connection Server instance is updated with the data from the le, and the number of records that are successfully updated is displayed.
Error messages appear whenever an existing entry in the repository is overwrien. You can ignore these error messages. Error messages also appear if a record cannot be updated because your role has insucient privileges.
66 VMware, Inc.
Integrating View with Microsoft
SCOM 5
You can use Microsoft System Center Operations Manager (SCOM) to monitor the state of View components, including View Connection Server instances, security servers, and the View services that run on View Connection Server and security server hosts.
This chapter includes the following topics:
“Seing Up a SCOM Integration,” on page 67
n
“Monitoring View in the Operations Manager Console,” on page 72
n

Setting Up a SCOM Integration

Integrating View with SCOM involves assigning a name to the View Connection Server group, importing the View management packs on the SCOM server, enabling a proxy agent on each View Connection Server instance and security server, and running the View discovery script in the Operations Manager console.

Assign a Name to the View Connection Server Group

Before you can use SCOM to monitor and manage the state of View components, you must assign a name to the View Connection Server group in View. The Operations Manager console displays this name to help you identify the View Connection Server group within SCOM.
VMware, Inc.
N View Administrator does not display the View Connection Server group name.
Prerequisites
Become familiar with the vdmadmin command-line interface. For more information, see the View Administration document.
Procedure
1 Log in to one of the View Connection Server hosts in the View Connection Server group.
2
At the command prompt, type the vdmadmin command with the -C and -c options.
For example: vdmadmin -C -c group_name
The -c option species the name to assign to the View Connection Server group.
Example: Assigning a View Connection Server Group Name
In this example, the vdmadmin command sets the name of a View Connection Server group to VCSG01.
vdmadmin -C -c VCSG01
67
What to do next
Complete the procedure described in “Import the View Management Packs on the SCOM Server,” on page 68.

View Management Packs

View management packs enable you to use SCOM to monitor and manage the state of View components.
Table 51. View Management Packs
View Management Pack Description
VMware.View.Discovery.mp
VMware.View.Monitoring.mp
VMware.View.Library.mp
VMware.View.Image.Library.mp
The View management packs are installed in the C:\Program Files\VMware\VMware
View\Server\extras\ManagementPacks directory on a View Connection Server instance or security server
when you install the View Connection Server software.
Contains the agent that discovers instances of View Server installations.
Contains the views and monitors that you can use with View in the Operations Manager console.
Contains class and relationship denitions for the managed objects in View.
Contains graphics that represent the classes dened in VMware.View.Library.mp.
The View management packs require the default System management pack that is installed with SCOM and the management pack for Microsoft Windows Server Base OS System Center Operations Manager 2007.

Import the View Management Packs on the SCOM Server

You must import the View management packs on the SCOM server to use SCOM to monitor and manage the state of View components.
I McAfee VirusScan Enterprise 8.0i blocks the operation of Visual Basic scripts that SCOM uses. For more information and details about the available patch, go to
hp://support.microsoft.com/kb/890736/en-us.
Prerequisites
Complete the procedure described in “Assign a Name to the View Connection Server Group,” on
n
page 67.
Become familiar with the View management packs. See “View Management Packs,” on page 68.
n
Procedure
1 Copy the View management packs from the View Connection Server instance or security server to the
SCOM server.
The View management packs are in the C:\Program Files\VMware\VMware
View\Server\extras\ManagementPacks directory on the View Connection Server host or security server.
2 In the Operations Manager console, go to Administration\Management Packs and select Import
Management Packs.
3 Use the Import Management Packs wizard to import the View management packs.
What to do next
Complete the procedure described in “Enable a Proxy Agent on a View Connection Server Host or Security
Server,” on page 69.
68 VMware, Inc.
Chapter 5 Integrating View with Microsoft SCOM

Enable a Proxy Agent on a View Connection Server Host or Security Server

You must use the Operations Manager console to enable a proxy agent on each View Connection Server host or security server that you want to monitor with SCOM. The discovery script can discover a Windows server only if you enable the proxy agent for the server.
Prerequisites
Complete the procedure described in “Import the View Management Packs on the SCOM Server,” on page 68.
Procedure
1 In the Operations Manager console, go to Administration\Agent Managed, select the server, and click
Properties.
2 On the Security tab, select the Allow this agent to act as a proxy and discover managed objects on
other computers option.
3 Click OK to save your changes.

Run the Discovery Script in the Operations Manager Console

The discovery script nds systems on which a View server is installed. It probes the registries of Windows servers for entries that indicate the version of the View software, the type of server, and the name and ID of the View Connection Server group.
N Running the discovery script manually is optional. The discovery script is scheduled to run automatically once every hour.
Prerequisites
Complete the procedure described in “Import the View Management Packs on the SCOM Server,” on
n
page 68.
Complete the procedure described in “Enable a Proxy Agent on a View Connection Server Host or
n
Security Server,” on page 69. The discovery script can discover a Windows server only if you use the
Operations Manager console to enable the proxy agent for the server.
Procedure
1 In the Operations Manager console, go to Monitoring\Windows Computers.
2 Select a computer system and click the VMware View Run Discovery Probe action.
If the discovery script detects that a View server is installed on a computer, it creates instances of the View object classes that are dened in the VMware.View.Library management pack and establishes relationships between these managed objects.
For a list of the managed objects for View Connection Server instances and security servers, see “View
Connection Server and Security Server Managed Objects,” on page 70. For information about the View
object classes and their relationships, see “View Object Classes and Relationships,” on page 70.
What to do next
(Optional) Verify the objects that the discovery script creates for a server by viewing the objects in the Operations Manager console. See “Display Discovered and Managed View Objects,” on page 74.
VMware, Inc. 69

View Connection Server and Security Server Managed Objects

The discovery script discovers managed objects for View Connection Server instances and security servers.
Table 52. Managed Objects for View Connection Server Instances and Security Servers
View Connection Server
Object
VMware.View.Cluster
VMware.View.Cluster.Node.Item
VMware.View.ConnectionServerRole.Item
VMware.View.Component.ConnectionServer.Item
VMware.View.Component.Framework.Item
VMware.View.Component.Web.Item
VMware.View.Component.Directory.Item
VMware.View.Component.SecureGateway.Item
VMware.View.Component.MessageBus.Item
VMware.View.Component.SecurityServer.Item
Instance Security Server
X X
X X
X X
X X
X X
X
X
X X
X
X

View Object Classes and Relationships

The VMware.View.Library management pack contains class and relationship denitions for the View management packs. A class can have properties, such as a name or ID. The relationships between classes describe their hierarchy. For example, the relationship contains exists between VMware.View.Clusters and
VMware.View.Cluster, and between VMware.View.Cluster and VMware.View.Cluster.Node.
The VMware.View.Library management pack also contains friendly name strings for classes and properties. The SCOM console displays friendly names in preference to class and property names.
View Connection Server Group Classes
The VMware.View.Library management pack contains View Connection Server group class denitions.
Table 5‑3. View Library View Connection Server Group Classes
Class Name Description
VMware.View.Cluster
VMware.View.Clusters
Base Classes
The VMware.View.Library management pack contains abstract base class denitions.
Represents a View Connection Server group. This class has the properties ClusterID and DisplayName (the name of the group).
Represents a singleton class that contains instances of VMware.View.Cluster.
N The currently supported instances that are derived from these classes must be View 5.1.x or a later release.
70 VMware, Inc.
Table 54. View Library Base Classes
Class Name Description
VMware.View.Cluster.Node
VMware.View.Component
VMware.View.Component.ConnectionSe rver
VMware.View.Component.Directory
VMware.View.Component.Framework
VMware.View.Component.MessageBus
VMware.View.Component.SecurityGate way
VMware.View.Component.SecurityServ er
VMware.View.Component.Web
VMware.View.ConnectionServerRole
VMware.View.NodeRole
VMware.View.SecurityServerRole
Represents a member of a View Connection Server group. This class has the properties ClusterID, ClusterName, ProductVersion, and InstallPath.
Represents a View component that has been installed on a member of a View Connection Server group. This class has the property Name.
Represents the Connection Server component that has been installed on a member of a View Connection Server group. This class inherits its properties from VMware.View.Component.
Represents the Directory component that has been installed on a member of a View Connection Server group. This class inherits its properties from VMware.View.Component.
Represents the Framework component that has been installed on a member of a View Connection Server group. This class inherits its properties from VMware.View.Component.
Represents the Message Bus component that has been installed on a member of a View Connection Server group. This class inherits its properties from VMware.View.Component.
Represents the Security Gateway component that has been installed on a member of a View Connection Server group. This class inherits its properties from VMware.View.Component.
Represents the Security Server component that has been installed on a member of a View Connection Server group. This class inherits its properties from VMware.View.Component.
Represents the Web component that has been installed on a member of a View Connection Server group. This class inherits its properties from VMware.View.Component.
Represents a member of a View Connection Server group with the Connection Server installed on it. This class inherits its properties from VMware.View.NodeRole.
Represents the role of a member of a View Connection Server group.
Represents a member of a View Connection Server group with the Security Server installed on it. This class inherits its properties from VMware.View.NodeRole.
Chapter 5 Integrating View with Microsoft SCOM
Concrete Classes
The VMware.View.Library management pack contains concrete class denitions.
N These concrete classes are the latest versions and are supported in View 5.1.x and later releases.
Table 55. View Library Concrete Classes
Class Name Description
VMware.View.Cluster.Node.Item
VMware.View.Component.ConnectionServe r.Item
VMware, Inc. 71
Represents a View Connection Server group member that has version
5.1.x or a later release of View installed. This class inherits its properties from VMware.View.Cluster.Node.
Represents version 5.1.x or a later release of the Connection Server component that has been installed on a member of a View Connection Server group. This class inherits its properties from VMware.View.Component.ConnectionServer.
Table 55. View Library Concrete Classes (Continued)
Class Name Description
VMware.View.Component.Directory.Item
VMware.View.Component.Framework.Item
VMware.View.Component.MessageBus.Item
VMware.View.Component.SecurityGateway .Item
VMware.View.Component.SecurityServer. Item
VMware.View.Component.Web.Item
VMware.View.ConnectionServerRole.Item
VMware.View.SecurityServerRole.Item
Represents version 5.1.x or a later release of the Directory component that has been installed on a member of a View Connection Server group. This class inherits its properties from VMware.View.Component.Directory.
Represents version 5.1.x or a later release of the Framework component that has been installed on a member of a View Connection Server group. This class inherits its properties from VMware.View.Component.Framework.
Represents version 5.1.x or a later release of the Message Bus component that has been installed on a member of a View Connection Server group. This class inherits its properties from VMware.View.Component.MessageBus.
Gateway component that has been installed on a member of a View Connection Server group. This class inherits its properties from VMware.View.Component.SecureGateway.
Represents version 5.1.x or a later release of the Security Server component that has been installed on a member of a View Connection Server group. This class inherits its properties from VMware.View.Component.SecurityServer.
Represents version 5.1.x or a later release of the Web component that has been installed on a member of a View Connection Server group. This class inherits its properties from VMware.View.Component.Web.
Represents a member of a View Connection Server group with version
5.1.x or a later release of the Connection Server installed on it. This class inherits its properties from VMware.View.NodeRole.
Represents a member of a View Connection Server group with version
5.1.x or a later release of the Security Server installed on it. This class inherits its properties from VMware.View.NodeRole.

Monitoring View in the Operations Manager Console

When View is integrated with SCOM, you can use the Operations Manager console to monitor and manage View components.

Views and Monitors to Use with View

The VMware.View.Monitoring management pack contains the views and monitors that you can use to monitor and manage View components in the Operations Manager console.
Views Available for View Objects
You can use the views dened in the VMware.View.Monitoring management pack to examine discovered View objects.
Table 56. Available Views for View Objects
View Description
Active Alerts Displays critical View alerts.
Node State Displays the state of all discovered members of all View Connection
Server groups.
Group State Displays the state of the discovered View Connection Server groups.
72 VMware, Inc.
Chapter 5 Integrating View with Microsoft SCOM
Table 56. Available Views for View Objects (Continued)
View Description
Groups Displays a diagram of all discovered View Connection Server groups,
members, roles, and components. You can obtain details about objects and their relationships by clicking the icons and the connectors.
Connection Server Role Performance Data Displays the following data sets.
All Sessions
n
All Sessions High
n
SVI Sessions
n
SVI Sessions High
n
Secure Gateway Role Performance Data Displays the following data sets.
Secure Gateway Sessions
n
Secure Gateway Sessions High
n
Available Monitor Types for View Objects
The VMware.View.Monitoring management pack provides the following monitor types.
Performance monitor
Collects system data and return this data to the SCOM performance database and data warehouse. You can examine the data graphically in the Connection Server Role Performance Data and Secure Gateway Role Performance Data views.
Service component monitors
Collect information about the state of the View component services. If a monitored service is not running, SCOM sets its state to error and raises an alert. If a component is in the error state, the aected View Connection Server group and its members also enter the error state.
Domain connectivity monitor
Veries that a View Connection Server instance can bind to all the domains of which it is a member. The monitor queries the status of the Web component on a View Connection Server instance every three minutes. If a View Connection Server instance cannot bind to a domain, SCOM sets its state to error and raises an alert.
Event database connectivity monitor
Checks that the event database is congured and that events are writable to the database. The monitor queries the Web component every three minutes for this information and raises an alert if the event database is not connected.
Virtual Center (vCenter) connectivity monitor
Checks that a View Connection Server instance can connect to the congured vCenter Server instances. The monitor queries the Web component every three minutes for this information and raises an alert if a vCenter Server instance is not available.
Service Component Monitors for View Connection Server Instances
The following table describes the service component monitors that the VMware.View.Monitoring management pack provides for View Connection Server instances.
Table 57. View Service Component Monitors for a View Connection Server Instance
Monitor Display Name Monitored Service
ConnectionServerServiceCheck Connection Server Service Health VMware View Connection Server
FrameworkServiceCheck Base Framework Service Health VMware View Framework
Component
MessageBusServiceCheck Message Bus Service Health VMware View Message Bus
Component
VMware, Inc. 73
Table 57. View Service Component Monitors for a View Connection Server Instance (Continued)
Monitor Display Name Monitored Service
SecureGatewayCheck Security Gateway Service Health VMware View Security Gateway
WebServiceCheck Web Service Health VMware View Web Component
DirectoryServiceCheck Directory Service Health VMwareVDMDS
Service Component Monitors for Security Servers
The following table describes the service component monitors that the VMware.View.Monitoring management pack provides for security servers.
Table 58. View Server Component Monitors for a Security Server
Monitor Display Name Monitored Service
SecureGatewayServerServiceCheck Security Server Service Health VMware View Security Server
FrameworkServiceCheck Base Framework Service Health VMware View Framework Component
SecureGatewayCheck Security Gateway Service Health VMware View Security Gateway
Component
Component

Display Discovered and Managed View Objects

You can display discovered and managed View objects in the Operations Manager console.
Prerequisites
Integrate View with SCOM. See “Seing Up a SCOM Integration,” on page 67.
Procedure
To display the View objects that the discovery script creates for a server, go to Monitoring\Discovery
n
Inventory in the Operations Manager console.
To display the View objects that SCOM manages and the relationships between those objects, go to
n
Monitoring\VMware View in the Operations Manager console and select the required view.

Display Performance Information

You can display graphical performance data for a View Connection Server instance or security server in the Operations Manager console.
Prerequisites
Integrate View with SCOM. See “Seing Up a SCOM Integration,” on page 67.
Procedure
1 In the Operations Manager console, go to Monitoring\VMware View\Performance.
2 Select the Connection Server Role Performance Data or Secure Gateway Role Performance Data view.
3 Select the required data sets.
74 VMware, Inc.
Chapter 5 Integrating View with Microsoft SCOM

Display Alerts for a View Connection Server Group

You can use the Health Explorer in the Operations Manager console to display information about alerts that the health monitors raise for a View Connection Server group.
Prerequisites
Integrate View with SCOM. See “Seing Up a SCOM Integration,” on page 67.
Procedure
1 In the Operations Manager console, go to Monitoring\VMware View and select the Active Alerts view.
2 Select an alert to display the knowledge article for that alert.

Close an Alert

You can close an alert in the Operations Manager console without taking any action.
N This method does not prevent the alert from being raised again if the underlying cause persists.
Prerequisites
Integrate View with SCOM. See “Seing Up a SCOM Integration,” on page 67.
Procedure
1 In the Operations Manager console, go to Monitoring\VMware View and select the Active Alerts view.
2 Select the alert and click the Close Alert action.

Restart a View Component Service

You can restart a service from the Health Explorer in the Operations Manager console. The service component monitors alert you if a View component service stops working.
Prerequisites
Integrate View with SCOM. See “Seing Up a SCOM Integration,” on page 67.
Procedure
1 In the Operations Manager console, go to Monitoring\VMware View and select the Group State view
or the Group Node State view.
2 Right-click a View Connection Server group or member that is in the alert state and select Open >
Health Explorer.
3 In the Health Explorer, select the alert and click Restart the service in the knowledge article.

Exclude a Domain from Connectivity Monitoring

The Domain Connectivity Health monitor checks the connectivity between a View Connection Server host’s domain and any trusted domains. To avoid seeing alerts for a domain, you can exclude the domain from connectivity monitoring.
Prerequisites
Integrate View with SCOM. See “Seing Up a SCOM Integration,” on page 67.
VMware, Inc. 75
Procedure
1 In the Operations Manager console, go to Monitoring\VMware View and select the Group State view
2 Right-click the View Connection Server instance and select Open > Health Explorer.
3 Right-click the Domain Connectivity Health entry for the View Connection Server instance in the
4 On the Overrides tab, click Override and select the option for all objects of the same class.
5 In the Override Properties window, select the Override check box for the DomainExcludeList
6 Click Apply and then click OK to save your changes.
or the Group Node State view.
Health Explorer and select Monitor Properties.
parameter, type the name of the excluded domain in the Override  text box, and select the Enforced check box.
To exclude more than one domain, use spaces to separate the domain names.
76 VMware, Inc.
Examining PCoIP Session Statistics
with WMI 6
You can use Windows Management Instrumentation (WMI) to examine performance statistics for a PCoIP session by using any of the supported programming interfaces, including C#, C++, PowerShell, VBScript, VB .NET, and Windows Management Instrumentation Command-line (WMIC).
You can also use the Microsoft WMI Code Creator tool to generate VBScript, C#, and VB .NET code that accesses the PCoIP performance counters. For more information about WMI, WMIC, and the WMI Code Creator tool, go to hp://technet.microsoft.com/en-us/library/bb742610.aspx and
hp://www.microsoft.com/downloads/en/details.aspx?familyid=2cc30a64-ea15-4661-8da4-55bbc145c30e&dis
playlang=en.
This chapter includes the following topics:
“Using PCoIP Session Statistics,” on page 77
n
“General PCoIP Session Statistics,” on page 78
n
“PCoIP Audio Statistics,” on page 78
n
“PCoIP Imaging Statistics,” on page 79
n
“PCoIP Network Statistics,” on page 80
n
“PCoIP USB Statistics,” on page 81
n
“Examples of Using PowerShell cmdlets to Examine PCoIP Statistics,” on page 82
n

Using PCoIP Session Statistics

The WMI namespace for the PCoIP session statistics is root\CIMV2. The names of the statistics are suxed with (Server) or (Client), according to whether the statistic is recorded on the PCoIP server or PCoIP client.
You can use Windows Performance Monitor (PerfMon) with the counters to calculate averages over a specied sampling period. You must have administrator privileges to access the performance counters remotely.
All statistics are reset to 0 when a PCoIP session is closed. If the WMI SessionDurationSeconds property is a non-zero value and stays constant, the PCoIP server was forcefully ended or crashed. If the
SessionDurationSeconds property changes from a non-zero value to 0, the PCoIP session is closed.
To avoid a division-by-zero error, verify that the denominator in the expressions for calculating bandwidth or packet-loss percentage does not evaluate to zero.
USB statistics are recorded for zero clients, but not for thin clients or software clients.
VMware, Inc.
77

General PCoIP Session Statistics

The WMI class name for PCoIP general session statistics is
Win32_PerfRawData_TeradiciPerf_PCoIPSessionGeneralStatistics.
Table 61. General Session Statistics
WMI Property Name Description
BytesReceived
BytesSent
PacketsReceived
PacketsSent
RXPacketsLost
SessionDurationSeconds
TXPacketsLost
Total number of bytes of PCoIP data that have been received since the PCoIP session started.
Total number of bytes of PCoIP data that have been transmied since the PCoIP session started.
Total number of packets that have been received successfully since the PCoIP session started. Not all packets are the same size.
Total number of packets that have been transmied since the PCoIP session started. Not all packets are the same size.
Total number of received packets that have been lost since the PCoIP session started.
Total number of seconds that the PCoIP Session has been open.
Total number of transmied packets that have been lost since the PCoIP session started.
Calculating Bandwith for Received PCoIP Data
To calculate the bandwidth in kilobytes per second for received PCoIP data over the time interval from time
t1 to time t2, use the following formula.
(BytesReceived[t2]-BytesReceived[t1]) * 8 / (1024 * (t2-t1))
Calculating Bandwidth for Transmitted PCoIP Data
To calculate the bandwidth in kilobits per second for transmied PCoIP data over the time interval from time t1 to time t2, use the following formula.
(BytesSent[t2]-BytesSent[t1]) * 8 / (1024 * (t2-t1))
Calculating Packet Loss for Received PCoIP Data
To calculate the percentage of received packets that are lost, use the following formula.
100 / (1 + ((PacketsReceived[t2]-PacketsReceived[t1])/(RXPacketsLost[t2]-RXPacketsLost[t1])))
Calculating Packet Loss for Transmitted PCoIP Data
To calculate the percentage of transmied packets that are lost, use the following formula.
100 * (TXPacketsLost[t2]-TXPacketsLost[t1]) / (PacketsSent[t2]-PacketsSent[t1])

PCoIP Audio Statistics

The WMI class name for PCoIP audio statistics is
Win32_PerfRawData_TeradiciPerf_PCoIPSessionAudioStatistics.
N Audio statistics do not include audio data that is carried within USB data.
78 VMware, Inc.
Chapter 6 Examining PCoIP Session Statistics with WMI
Table 62. PCoIP Audio Statistics
WMI Property Name Description
AudioBytesReceived
AudioBytesSent
AudioRXBWkbitPersec
AudioTXBWkbitPersec
AudioTXBWLimitkbitPersec
Total number of bytes of audio data that have been received since the PCoIP session started.
Total number of bytes of audio data that have been sent since the PCoIP session started.
Bandwidth for ingoing audio packets averaged over the sampling period, in seconds.
Bandwidth for outgoing audio packets averaged over the sampling period, in seconds.
Transmission bandwidth limit in kilobits per second for outgoing audio packets. The limit is dened by a GPO seing.
Calculating Bandwidth for Received Audio Data
To calculate the bandwidth in kilobits per second for received audio data over the time interval from time t1 to time t2, use the following formula.
(AudioBytesReceived[t2]-AudioBytesReceived[t1]) * 8 / (1024 * (t2-t1))
Do not use AudioTXBWkbitPersec for this calculation.
Calculating Bandwidth for Transmitted Audio Data
To calculate the bandwidth in kilobits per second for transmied audio data over the time interval from time
t1 to time t2, use the following formula.
(AudioBytesSent[t2]-AudioBytesSent[t1]) * 8 / (1024 * (t2-t1))
Do not use AudioTXBWkbitPersec for this calculation.

PCoIP Imaging Statistics

The WMI class name for PCoIP imaging statistics is
Win32_PerfRawData_TeradiciPerf_PCoIPSessionImagingStatistics.
Table 63. PCoIP Imaging Statistics
WMI Property Name Description
ImagingBytesReceived
ImagingBytesSent
ImagingDecoderCapabilitykbitPersec
ImagingEncodedFramesPersec
ImagingActiveMinimumQuality
ImagingRXBWkbitPersec
ImagingTXBWkbitPersec
Total number of bytes of imaging data that have been received since the PCoIP session started.
Total number of bytes of imaging data that have been transmied since the PCoIP session started.
Estimated processing capability of the imaging decoder in kilobits per second. This statistic is updated once per second.
Number of imaging frames that were encoded over a one­second sampling period.
Lowest encoded quality value on a scale from 0 to 100. This statistic is updated once per second. This counter does not correspond to the GPO seing for minimum quality.
Bandwidth for incoming imaging packets averaged over the sampling period, in seconds.
Bandwidth for outgoing imaging packets averaged over the sampling period, in seconds.
VMware, Inc. 79
Calculating Bandwidth for Received Imaging Data
To calculate the bandwidth in kilobits per second for received imaging data over the time interval from time
t1 to time t2, use the following formula.
(ImagingBytesReceived[t2]-ImagingBytesReceived[t1]) * 8 / (1024 * (t2-t1))
Do not use ImagingRXBWkbitPersec for the calculation.
Calculating Bandwidth for Transmitted Imaging Data
To calculate the bandwidth in kilobits per second for transmied imaging data over the time interval from time t1 to time t2, use the following formula.
(ImagingBytesSent[t2]-ImagingBytesSent[t1]) * 8 / (1024 * (t2-t1))
Do not use ImagingTXBWkbitPersec for the calculation.

PCoIP Network Statistics

The WMI class name for PCoIP network statistics is
Win32_PerfRawData_TeradiciPerf_PCoIPSessionNetworkStatistics.
Table 6‑4. PCoIP Network Statistics
WMI Property Name Description
RoundTripLatencyms
RXBWkbitPersec
RXBWPeakkbitPersec
RXPacketLossPercent
TXBWkbitPersec
TXBWActiveLimitkbitPersec
TXBWLimitkbitPersec
TXPacketLossPercent
Round trip latency in milliseconds between the PCoIP server and the PCoIP client.
Overall bandwidth for incoming PCoIP packets averaged over the sampling period, in seconds.
Peak bandwidth in kilobits per second for incoming PCoIP packets over a one-second sampling period.
Percentage of received packets lost during a sampling period.
Overall bandwidth for outgoing PCoIP packets averaged over the sampling period, in seconds.
Estimated available network bandwidth in kilobits per second. This statistic is updated once per second.
Transmission bandwidth limit in kilobits per second for outgoing packets. The limit is the minimum of the following values.
GPO bandwidth limit for the PCoIP client
n
GPO bandwidth limit for the PCoIP server
n
Bandwidth limit for the local network connection
n
Negotiated bandwidth limit for the Zero Client
n
rmware based on encryption limits
Percentage of transmied packets lost during a sampling period.
Calculating Bandwidth for Received Network Data
To calculate the bandwidth in kilobits per second for received data over the time interval from time t1 to time t2, use the following formula.
(BytesReceived[t2]-BytesReceived[t1]) * 8 / (1024 * (t2-t1))
Do not use RXBWkbitPersec for the calculation.
80 VMware, Inc.
Chapter 6 Examining PCoIP Session Statistics with WMI
Calculating Bandwidth for Transmitted Network Data
To calculate the bandwidth in kilobits per second for transmied data over the time interval from time t1 to time t2, use the following formula.
(BytesSent[t2]-BytesSent[t1]) * 8 / (1024 * (t2-t1))
Do not use TXBWkbitPersec for the calculation.
Calculating Packet Loss for Received Network Data
To calculate the packet loss in percentage for received data over the time interval from time t1 to time t2, use the following formula.
PacketsReceived during interval = (PacketsReceived[t2]-PacketsReceived[t1])
RXPacketsLost during interval = (RXPacketsLost[t2]-RXPacketsLost[t1])
RXPacketsLost % = RXPacketsLost during interval /
(RXPacketsLost during interval + PacketsReceived during interval) * 100
Do not use RXPacketLostPercent or RXPacketLostPercent_Base for the calculation.
Calculating Packet Loss for Transmitted Network Data
To calculate the packet loss in percentage for transmied data over the time interval from time t1 to time t2, use the following formula.
PacketsSent during interval = (PacketsSent[t2]-PacketsSent[t1])
TXPacketsLost during interval = (TXPacketsLost[t2]-TXPacketsLost[t1])
TXPacketsLost % = TXPacketsLost during interval /
(TXPacketsLost during interval + PacketsSent during interval) * 100
Do not use TXPacketLostPercent or TXPacketLostPercent_Base for the calculation.
Use this formula to prevent the packet loss percent from becoming greater than 100 percent. This calculation is required because PacketsLost and PacketsSent are asynchronous.

PCoIP USB Statistics

The WMI class name for PCoIP USB statistics is
Win32_PerfRawData_TeradiciPerf_PCoIPSessionUSBStatistics.
Table 65. PCoIP USB Statistics
WMI Property Name Description
USBBytesReceived
USBBytesSent
USBRXBWkbitPersec
USBTXBWkbitPersec
Total number of bytes of USB data that have been received since the PCoIP session started.
Total number of bytes of USB data that have been transmied since the PCoIP session started.
Bandwidth for incoming USB packets averaged over the sampling period, in seconds.
Bandwidth for outgoing USB packets averaged over the sampling period, in seconds.
VMware, Inc. 81
Calculating Bandwidth for Received USB Data
To calculate the bandwidth in kilobits per second for received USB data over the time interval from time t1 to time t2, use the following formula.
(USBBytesReceived[t2]-USBBytesReceived[t1]) * 8 / (1024 * (t2-t1))
Do not use USBRXBWkbitPersec for the calculation.
Calculating Bandwidth for Transmitted USB Data
To calculate the bandwidth in kilobits per second for transmied USB data over the time interval from time
t1 to time t2, use the following formula.
(USBBytesSent[t2]-USBBytesSent[t1]) * 8 / (1024 * (t2-t1))
Do not use USBTXBWkbitPersec for the calculation.

Examples of Using PowerShell cmdlets to Examine PCoIP Statistics

You can use PowerShell cmdlets to examine PCoIP statistics.
In the following example, the Get-WmiObject cmdlet retrieves the PCoIP network statistics for the client cm-02.
Get-WmiObject -namespace "root\cimv2" -computername cm-02 -class
Win32_PerfRawData_TeradiciPerf_PCoIPSessionNetworkStatistics
In the following example, the Get-WmiObject cmdlet retrieves the PCoIP general session statistics for desktop dt-03 if any transmied packets have been lost.
Get-WmiObject -namespace "root\cimv2" -computername desktop-03 -query "select * from
Win32_PerfRawData_TeradiciPerf_PCoIPSessionGeneralStatistics where TXPacketsLost > 0"
82 VMware, Inc.
Setting Desktop Policies with Start
Session Scripts 7
With start session scripts, you can congure specic View desktop seings before a desktop session starts based on information received from Horizon Client and View Connection Server.
For example, you can use a start session script to congure desktop policies based on client device and user location instead of seing up multiple desktop pools that have dierent desktop policies. A start session script can enable mapped drives, clipboard redirection, and other desktop features for a user who has an IP address in your organization’s internal domain, but disallow these features for a user who has an IP address in an external domain.
This chapter includes the following topics:
“Obtaining Input Data for a Start Session Script,” on page 83
n
“Best Practices for Using Start Session Scripts,” on page 83
n
“Preparing a View Desktop to Use a Start Session Script,” on page 84
n
“Sample Start Session Scripts,” on page 86
n

Obtaining Input Data for a Start Session Script

Start session scripts cannot run interactively. A start session script runs in an environment created by View and must obtain its input data from that environment.
Start session scripts gather input data from environment variables on the client computer. Start session environment variables have the prex VDM_StartSession_. For example, the start session environment variable that contains the client system’s IP address is VDM_StartSession_IP_Address. You must ensure that a start session script validates the existence of any environment variable that it uses.
For a list of variables similar to start session environment variables, see “Client System Information Sent to View Desktops” in the Conguring Remote Desktop Features in Horizon 7 document.

Best Practices for Using Start Session Scripts

Follow these best practices when using start session scripts.
When to Use Start Session Scripts
Use start session scripts only if you need to congure desktop policies before a session starts.
As a best practice, use the Horizon Agent CommandsToRunOnConnect and CommandsToRunOnReconnect group policy seings to run command scripts after a desktop session is connected or reconnected. Running scripts within a desktop session, rather than using start session scripts, satises most use cases.
For more information, see “Running Commands on View Desktops” in the Conguring Remote Desktop Features in Horizon 7 document.
VMware, Inc.
83
Managing Start Session Timeouts
Make sure your start session scripts run quickly.
If you set the WaitScriptsOnStartSession value in the Windows registry, your start session script must nish running before Horizon Agent can respond to the StartSession message that View Connection Server sends. A long-running script is likely to cause the StartSession request to time out.
If a timeout occurs and the pool uses oating assignments, View Connection Server tries to connect the user to another virtual machine. If a timeout occurs and no virtual machine is available, View Connection Server rejects the user's connection request.
As a best practice, set a hard timeout for the script host operation so that a specic error can be returned if a script runs too long.
Making Start Session Scripts Accessible
The path where you congure your start session scripts must be accessible only to the SYSTEM account and to local administrators. Set the ACL for the base key to be accessible to these accounts only.
As a best practice, place start session scripts in the View_Agent_install_path\scripts directory, for example:
%ProgramFiles%\VMware\VMware View\Agent\scripts\sample.vbs
By default, this directory is accessible only by the SYSTEM and administrator accounts.

Preparing a View Desktop to Use a Start Session Script

To prepare a View desktop to use a start session script, you must enable the VMware View Script Host service and add entries in the Windows registry.
You must congure all View desktops that need to run start session scripts. View does not provide a mechanism to propagate registry changes, VMware View Script Host service conguration changes, and start session scripts to multiple View desktop virtual machines.

Enable the VMware View Script Host Service

You must enable the VMware View Script Host service on each View desktop virtual machine where you want View to run a start session script. The VMware View Script Host service is disabled by default.
When you congure the VMware View Script Host service, you can optionally specify the user account under which the start session script runs. Start session scripts run in the context of the VMware View Script Host service. By default, the VMware View Host Script service is congured to run as the SYSTEM user.
I Start session scripts are run outside a desktop user session and not by the desktop user account. Information is sent directly from the client computer within a script running as the SYSTEM user.
Procedure
1 Log in to the View desktop virtual machine.
2 At the command prompt, type services.msc to start the Windows Services tool.
3 In the details pane, right-click the VMware View Script Host service entry and select Properties.
4 On the General tab, select Automatic from the Startup type drop-down menu.
5 (Optional) If you do not want the local System account to run the start session script, select the Log On
tab, select This account, and type the user name and password of the account to run the start session script.
6 Click OK and exit the Windows Services tool.
84 VMware, Inc.
Chapter 7 Setting Desktop Policies with Start Session Scripts

Add Windows Registry Entries for a Start Session Script

You must add Windows registry entries on each View desktop virtual machine where you want View to run a start session script.
Prerequisites
Verify that the path where you congured your start session scripts is accessible only to the SYSTEM
n
account and local administrators. For more information, see “Making Start Session Scripts Accessible,” on page 84.
Make sure your start session scripts run quickly. If you set the WaitScriptsOnStartSession value in the
n
Windows registry, your start session script must nish running before Horizon Agent can respond to the StartSession message that View Connection Server sends. For more information, see “Managing
Start Session Timeouts,” on page 84.
Procedure
1 Log in to the View desktop virtual machine.
2 At the command prompt, type regedit to start the Windows Registry Editor.
3 In the registry, navigate to HKLM\SOFTWARE\VMware, Inc.\VMware VDM\ScriptEvents.
4 Add the path to the start session script to the registry.
a In the navigation area, right-click ScriptEvents, select New > Key, and create a key named
StartSession.
b In the navigation area, right-click StartSession, select New > String Value, and create a string
value that identies the start session script to run, for example, SampleScript.
To run more than one start session script, create a string value entry for each script under the
StartSession key. You cannot specify the order in which these scripts run. If the scripts must run in
a particular order, invoke them from a single control script.
c In the topic area, right-click the entry for the new string value and select Modify.
d In the Value data text box, type the command line that invokes the start session script and click
OK.
Type the full path of the start session script and any les that it requires.
5 Add and enable a start session value in the registry.
a Navigate to HKLM\SOFTWARE\VMware, Inc.\VMware VDM\Agent\Configuration.
b (Optional) If the Configuration key does not exist, right-click Agent, select New > Key, and create
the key.
c In the navigation area, right-click Configuration, select New > DWORD (32 bit) Value, and type
RunScriptsOnStartSession.
d In the topic area, right-click the entry for the new DWORD value and select Modify.
VMware, Inc. 85
6 Set a registry value to specify timeout values in seconds rather than minutes to prevent scripts from
e In the Value data text box, type 1 to enable start session scripting and click OK.
You can type 0 to disable this feature. The default value is 0.
f (Optional) To delay the StartSession response by Horizon Agent, add a second DWORD value to
the Configuration key called WaitScriptsOnStartSession.
A WaitScriptsOnStartSession data value of 1 causes Horizon Agent to delay sending a StartSession response and fail if the scripts do not complete. A value of 0 means that Horizon Agent does not wait for the scripts to complete or check script exit codes before sending the StartSession response. The default value is 0.
timing out.
Seing this timeout value in seconds enables you to congure the VMware View Script Host service timeout value in seconds. For example, if you set the VMware View Script Host service timeout to 30 seconds, you can ensure that a start session script either nishes running or times out before a View Connection Server timeout occurs.
a Navigate to HKLM\SOFTWARE\VMware, Inc.\VMware VDM\ScriptEvents.
b Add a DWORD value called TimeoutsInMinutes.
c Set a data value of 0.
7 (Optional) To enable the VMware View Script Host service to time out the start session script, set a
timeout value.
a Navigate to HKLM\SOFTWARE\VMware, Inc.\VMware VDM\ScriptEvents\StartSession.
b In the topic area, right-click the Default (@) key and select Modify.
c In the Value data text box, type the timeout value and click OK.
A value of 0 means that no timeout is set.
8 Exit the Registry Editor and restart the system.

Sample Start Session Scripts

These sample start session scripts illustrate how to write environment variables to a le, test the timeout functionality, and test a non-zero exit code.
The following sample Visual Basic script writes all the environment variables provided to the script into a le. You can use this sample script to see example data in your own environment. You might save this script as C:\sample.vbs.
Option Explicit
Dim WshShell, FSO, outFile, strOutputFile, objUserEnv, strEnv
strOutputFile = "c:\setvars.txt"
Set FSO = CreateObject("Scripting.fileSystemObject")
Set outFile = FSO.CreateTextFile(strOutputFile, TRUE)
outFile.WriteLine("Script was called at (" & Now & ")")
Set WshShell = CreateObject( "WScript.Shell" )
Set objUserEnv = WshShell.Environment("PROCESS")
For Each strEnv In objUserEnv
86 VMware, Inc.
outFile.WriteLine(strEnv)
Next
outFile.Close
The following sample script tests the timeout functionality.
Option Explicit
WScript.Sleep 60000
The following sample script tests a non-zero exit code.
Option Explicit
WScript.Quit 2
Chapter 7 Setting Desktop Policies with Start Session Scripts
VMware, Inc. 87
88 VMware, Inc.

Index

A
Active Directory users and groups 43 advanced PowerShell commands 46 alerts 75 assigning a name 67 automatically provisioned desktop pools 41
C
components 7 connection broker events 11 connectivity monitoring 75
D
database queries and views 25 database tables and schemas 9 datastore management 50 desktop entitlements 44 desktop policies 83 desktop pool management tasks 41 disabling network label assignments 60 discovery script 69 displaying discovered objects 74
E
error handling 29 escaping characters 29 event database 9 event message attributes 24 event reports 45 examining PCoIP statistics 82 exporting LDAP data 62
G
general PCoIP session statistics 78 global settings 46 glossary 5
H
Horizon Agent events 16
I
importing LDAP configuration data 65 importing management packs 68 integration interfaces 8 intended audience 5
introduction 7
L
LDAP configuration data 61 LDAP data customization 61 LDIF configuration file entries 63 LDIF configuration file format 62 LDIFDE command 66 licenses 46 linked-clone desktop pool management 42
M
managed objects 70 management packs 68 manual unmanaged desktop pools 43 manually provisioned desktop pools 43 modifying LDAP configuration data 62 monitoring View 72 multiple network labels 56
N
network label assignments 58 network label information 58 network label configuration file 52, 53, 55 network labels 52, 57 NIC and network label information 54
O
object classes and relationships 70
P
PCoIP audio statistics 78 PCoIP imaging statistics 79 PCoIP network statistics 80 PCoIP session statistics 77 PCoIP USB statistics 81 performance information 74 physical machines 45 piping objects 29 proxy server 69
R
rebalance operation 57 recompose operation 57 remote session management 44
VMware, Inc.
89
remote systems 28 resizing pools 47
S
SCOM integration 67 start session scripts 83, 84, 86 starting PowerShell 28
V
vCenter Server management tasks 40 vCenter Server network label assignments 59 View Administrator events 17 View component services 75 View Connection Server management 40 View Connection Server service 46 View PowerCLI cmdlets 27, 34, 36 View PowerCLI comparison 30 View PowerCLI cmdlet examples 40 View PowerCLI help 29 views and monitors for View 72 virtual machine management 44 virtual machine ownership 45 VMware View Script Host service 84 vSphere datastore objects 50 vSphere inventory objects 49
W
Windows registry entries 85
90 VMware, Inc.
Loading...