In my last blog I have started with the Introduction of PowerShell and MFCom. Today we’ll provide you more information’s about MFCom Objects and how to use them with PowerShell.

Check Session State


To retrieve the session state for each session within the Citrix farm you have to query IMetaFrameSession.SessionState. If the returned state of the session is MFSessionStateStale, no further attempt to read other session properties should be made. This state indicates that the session may no longer exist.
The following PowerShell script displays all active sessions within the farm and adds additional session information to the output. To check other session’s states you only have to replace the session state type in the last line of the code.

#Type Definitions
$MetaFrameWinFarmObject =
 

$MFSessionStateUnknown = 0         #Unknown state
$MFSessionStateActive = 1          #User logged on
$MFSessionStateConnected = 2       #Connected to client
$MFSessionStateConnecting = 3      #Connecting to client
$MFSessionStateShadowing = 4       #Shadowing another session
$MFSessionStateDisconnected = 5    #Logged on but no client
$MFSessionStateIdle = 6           #Waiting for connection
$MFSessionStateListening = 7       #Listening for connection
$MFSessionStateResetting = 8      #Reset in progress
$MFSessionStateDown = 9           #Down due to error
$MFSessionStateInit = 10           #Initializing
$MFSessionStateStale = 11         #Stale session object

#Main
$farm = new-Object -com “MetaframeCOM.MetaframeFarm”
$farm.Initialize($MetaFrameWinFarmObject)
$farm.FarmName

$farm.Sessions | Where-Object { $_.SessionState -eq $MFSessionStateActive {color:black}}| Format-table Username,SessionName,AppName,ServerName,SessionState

Find disabled Application      

Finding disabled applications is mostly useful in your production or test environment where you have to handle with many published applications. This property IMetaFrameApplication.EnableApp enables or disables the application.

  • When you publish an application, it is enabled by default. Enabled applications are available to the users specified when the application was published. Disabled applications are not available to users.
  • The application can become disabled internally if its server list becomes empty, or if its user list becomes empty and the application is not configured to accept anonymous connections.
  • A disabled application is not available to clients.

#Type Definitions
$MetaFrameWinFarmObject = 1

#Main
$farm = new-Object -com “MetaFrameCOM.MetaframeFarm”
$farm.Initialize($MetaFrameWinFarmObject)
$farm.FarmName
$app = $farm.Applications
$app | foreach { $_ | ? { $_.EnableApp -eq 0 }}|Format-Table DistinguishedName