Citrix Virtual Apps and Desktops 2311 SDK


Disconnect a session.


          [-InputObject] <Session[]>
          [-LoggingId <Guid>]


Disconnects the specified session.

If the session is active, no warning is issued to the user before that session is disconnected.

After disconnection, sessions enter a Disconnected state. In a Disconnected state, a session still exists but there is no remote connection to that session.



Attempts to disconnect all of the sessions for the user MyDomain\MyAccount.

Get-BrokerSession -UserName MyDomain\MyAccount | Disconnect-BrokerSession


Disconnects the session on MyMachine.

$desktop = Get-BrokerDesktop -DNSName
Disconnect-BrokerSession $desktop.SessionUid


Attempts to disconnect sessions 10, 11 and 12. Traps and displays the error information.

trap  [Citrix.Broker.Admin.SDK.SdkOperationException]
  write $("Exception name = " + $_.Exception.GetType().FullName)
  write $("SdkOperationException.Status = " + $_.Exception.Status)
  write $("SdkOperationException.ErrorData=")

  write $("SdkOperationException.InnerException = " + $_.Exception.InnerException)

Disconnect-BrokerSession -InputObject 10,11,12



Identifies the session(s) to disconnect. This can be expressed as either a session Uid or a session object.

Type: Session[]
Position: 2
Default value: None
Required: True
Accept pipeline input: True (ByValue)
Accept wildcard characters: False


Specifies the identifier of the high level operation that this cmdlet call forms a part of. Desktop Studio and Desktop Director typically create High Level Operations. PowerShell scripts can also wrap a series of cmdlet calls in a High Level Operation by way of the Start-LogHighLevelOperation and Stop-LogHighLevelOperation cmdlets.

Type: Guid
Position: Named
Default value: None
Required: False
Accept pipeline input: False
Accept wildcard characters: False


This cmdlet supports the common Citrix parameters: -AdminAddress, -AdminClientIP, -BearerToken, -TraceParent, -TraceState and -VirtualSiteId. For more information, see about_CitrixCommonParameters.


This cmdlet supports the common parameters: -Debug, -ErrorAction, -ErrorVariable, -InformationAction, -InformationVariable, -OutVariable, -OutBuffer, -PipelineVariable, -Verbose, -WarningAction, and -WarningVariable. For more information, see about_CommonParameters.



The sessions to disconnect can be piped into this cmdlet.



By default, this cmdlet returns no output.


This operation is non-blocking and returns before it completes. The operation, however, is unlikely to fail unless there are communication problems between the controller and the machine, or if bad arguments are passed to the cmdlet itself or if the machine cannot successfully execute the operation.

The transient nature of sessions means that the list of session objects or UIDs supplied to Disconnect-BrokerSession could consist of valid and invalid sessions. Invalid sessions are detected and disregarded and the disconnect session operation is invoked on only the valid sessions.

The system can fail to disconnect the session if the machine is not in an appropriate state or if there are problems in communicating with the machine. When a disconnect is requested the system detects if the operation was initiated successfully or not by the machine. As this operation is non-blocking the system doesn’t detect or report whether the disconnect ultimately succeeded or failed after it was started.

Disconnect failures are reported through the broker SDK error handling mechanism (see about_Broker_ErrorHandling). In the event of errors the SdkErrorRecord error status is set to SessionOperationFailed and its error data dictionary is populated with the following entries:

  • OperationsAttemptedCount: The number of operations attempted.
  • OperationsFailedCount - The number of failed operations.
  • OperationsSucceededCount - The number of successfully executed operations.
  • UnresolvedSessionFailuresCount - The number of operations that failed due to invalid sessions being supplied.
  • OperationInvocationFailuresCount - The number of operations that failed because they could not be invoked on the machine.
  • DesktopExecutionFailuresCount - The number of operations that failed because they could not be successfully executed by the machine.

The SdkErrorRecord message will also display the number of attempted, failed and successful operations in the following format:

“Session operation error - attempted:<OperationsAttemptedCount>, failed:<OperationsFailedCount>, succeeded:<OperationsSucceededCount>”