TerminalSessions.Format.ps1xml

<?xml version="1.0" encoding="utf-16"?>
<Configuration>
  <ViewDefinitions>
    <View>
      <Name>TerminalSessions.SessionInfoExtra</Name>
      <ViewSelectedBy>
        <TypeName>TerminalSessions.SessionInfoExtra</TypeName>
      </ViewSelectedBy>
      <TableControl>
        <AutoSize />
        <TableHeaders>
          <TableColumnHeader>
            <Label>ComputerName</Label>
          </TableColumnHeader>
          <TableColumnHeader>
            <Label>SessionId</Label>
          </TableColumnHeader>
          <TableColumnHeader>
            <Label>SessionName</Label>
          </TableColumnHeader>
          <TableColumnHeader>
            <Label>State</Label>
          </TableColumnHeader>
          <!-- <TableColumnHeader>
            <Label>DomainName</Label>
          </TableColumnHeader>
          <TableColumnHeader>
            <Label>UserName</Label>
          </TableColumnHeader> -->
          <TableColumnHeader>
            <Label>User</Label>
          </TableColumnHeader>
          <TableColumnHeader>
            <Label>ClientName</Label>
          </TableColumnHeader>
          <TableColumnHeader>
            <Label>IdleTime</Label>
          </TableColumnHeader>
          <TableColumnHeader>
            <Label>LogonTime</Label>
          </TableColumnHeader>
        </TableHeaders>
        <TableRowEntries>
          <TableRowEntry>
            <TableColumnItems>
              <TableColumnItem>
                <PropertyName>ComputerName</PropertyName>
              </TableColumnItem>
              <TableColumnItem>
                <PropertyName>SessionId</PropertyName>
              </TableColumnItem>
              <TableColumnItem>
                <PropertyName>SessionName</PropertyName>
              </TableColumnItem>
              <TableColumnItem>
                <ScriptBlock>
                if ($PSStyle) {
                    $state = @{
                        Disconnected = $PSStyle.Foreground.BrightBlack
                        Connected = $PSStyle.Foreground.BrightGreen
                        Reset = $PSStyle.Reset
                    }
                }
                else {
                    $state = @{
                        Disconnected = "$([char]27)[90m"
                        Connected = "$([char]27)[92m"
                        Reset = "$([char]27)[0m"
                    }
                }
                if ($_.State -eq 'Disconnected') {
                    '{0}{1}{2}' -f $state.Disconnected, $_.State.ToString(), $state.Reset
                }
                elseif ($_.State -eq 'Connected' -or $_.State -eq 'Active') {
                    '{0}{1}{2}' -f $state.Connected, $_.State.ToString(), $state.Reset
                }
                else {
                    $_.State
                }
                </ScriptBlock>
              </TableColumnItem>
              <!-- <TableColumnItem>
                <PropertyName>DomainName</PropertyName>
              </TableColumnItem>
              <TableColumnItem>
                <PropertyName>UserName</PropertyName>
              </TableColumnItem> -->
              <TableColumnItem>
              <ScriptBlock>
                if ($_.DomainName) {
                  return ('{0}\{1}' -f $_.DomainName, $_.UserName)
                }
                $_.UserName
              </ScriptBlock>
              </TableColumnItem>
              <TableColumnItem>
                <PropertyName>ClientName</PropertyName>
              </TableColumnItem>
              <TableColumnItem>
                <ScriptBlock>
                  if ($_.IdleTime) {
                    $TimeSpan = $_.IdleTime
                      if ($PSStyle) {
                          $colorMap = @{
                            days = $PSStyle.Formatting.Error
                            hours = $PSStyle.Formatting.Warning
                            minutes = $PSStyle.Formatting.FeedbackText
                            active = $PSStyle.Foreground.Green
                            Reset = $PSStyle.Reset
                          }
                      }
                      else {
                          $colorMap = @{
                            days = "$([char]27)[31;1m"
                            hours = "$([char]27)[33;1m"
                            minutes = "$([char]27)[96m"
                            active = "$([char]27)[32m"
                            Reset = "$([char]27)[0m"
                          }
                      }
                      if ($TimeSpan.TotalDays -ge 1) {
                        '{0}{1:0}d{2:0}h{3}' -f $colorMap.days, $TimeSpan.TotalDays, $TimeSpan.Hours, $colorMap.Reset
                      }
                      elseif ($TimeSpan.TotalHours -ge 1) {
                        '{0}{1:0}h{2:0}m{3}' -f $colorMap.hours, $TimeSpan.TotalHours, $TimeSpan.Minutes, $colorMap.Reset
                      }
                      elseif ($TimeSpan.TotalMinutes -ge 1) {
                        '{0}{1:0}m{2:0}s{3}' -f $colorMap.minutes, $TimeSpan.TotalMinutes, $TimeSpan.Seconds, $colorMap.Reset
                      }
                      else {
                        '{0}{1:0}s{2}' -f $colorMap.active, $TimeSpan.TotalSeconds.ToString('0.0'), $colorMap.Reset
                      }
                  }
              </ScriptBlock>
              </TableColumnItem>
              <TableColumnItem>
                <ScriptBlock>
                  if ($_.LogonTime) {
                    $_.LogonTime.ToString()
                  }
                </ScriptBlock>
              </TableColumnItem>
            </TableColumnItems>
          </TableRowEntry>
        </TableRowEntries>
      </TableControl>
    </View>
    <View>
      <Name>TerminalSessions.SessionInfo</Name>
      <ViewSelectedBy>
        <TypeName>TerminalSessions.SessionInfo</TypeName>
      </ViewSelectedBy>
      <TableControl>
        <AutoSize />
        <TableHeaders>
          <TableColumnHeader>
            <Label>ComputerName</Label>
          </TableColumnHeader>
          <TableColumnHeader>
            <Label>SessionId</Label>
          </TableColumnHeader>
          <TableColumnHeader>
            <Label>SessionName</Label>
          </TableColumnHeader>
          <TableColumnHeader>
            <Label>State</Label>
          </TableColumnHeader>
          <!-- <TableColumnHeader>
            <Label>DomainName</Label>
          </TableColumnHeader>
          <TableColumnHeader>
            <Label>UserName</Label>
          </TableColumnHeader> -->
          <TableColumnHeader>
            <Label>User</Label>
          </TableColumnHeader>
          <TableColumnHeader>
            <Label>ClientName</Label>
          </TableColumnHeader>
        </TableHeaders>
        <TableRowEntries>
          <TableRowEntry>
            <TableColumnItems>
              <TableColumnItem>
                <PropertyName>ComputerName</PropertyName>
              </TableColumnItem>
              <TableColumnItem>
                <PropertyName>SessionId</PropertyName>
              </TableColumnItem>
              <TableColumnItem>
                <PropertyName>SessionName</PropertyName>
              </TableColumnItem>
              <TableColumnItem>
                <ScriptBlock>
                if ($PSStyle) {
                    $state = @{
                        Disconnected = $PSStyle.Foreground.BrightBlack
                        Connected = $PSStyle.Foreground.BrightGreen
                        Reset = $PSStyle.Reset
                    }
                }
                else {
                    $state = @{
                        Disconnected = "$([char]27)[90m"
                        Connected = "$([char]27)[92m"
                        Reset = "$([char]27)[0m"
                    }
                }
                if ($_.State -eq 'Disconnected') {
                    '{0}{1}{2}' -f $state.Disconnected, $_.State.ToString(), $state.Reset
                }
                elseif ($_.State -eq 'Connected' -or $_.State -eq 'Active') {
                    '{0}{1}{2}' -f $state.Connected, $_.State.ToString(), $state.Reset
                }
                else {
                    $_.State
                }
                </ScriptBlock>
              </TableColumnItem>
              <!-- <TableColumnItem>
                <PropertyName>DomainName</PropertyName>
              </TableColumnItem>
              <TableColumnItem>
                <PropertyName>UserName</PropertyName>
              </TableColumnItem> -->
              <TableColumnItem>
                <ScriptBlock>
                  if ($_.DomainName) {
                    return ('{0}\{1}' -f $_.DomainName, $_.UserName)
                  }
                  $_.UserName
              </ScriptBlock>
              </TableColumnItem>
              <TableColumnItem>
                <PropertyName>ClientName</PropertyName>
              </TableColumnItem>
            </TableColumnItems>
          </TableRowEntry>
        </TableRowEntries>
      </TableControl>
    </View>
    <View>
      <Name>TerminalSessions.WTSInfo</Name>
      <ViewSelectedBy>
        <TypeName>TerminalSessions.WTSInfo</TypeName>
      </ViewSelectedBy>
      <TableControl>
        <AutoSize />
        <TableHeaders>
          <TableColumnHeader>
            <Label>SessionId</Label>
          </TableColumnHeader>
          <TableColumnHeader>
            <Label>State</Label>
          </TableColumnHeader>
          <TableColumnHeader>
            <Label>WinStationName</Label>
          </TableColumnHeader>
          <!-- <TableColumnHeader>
            <Label>Domain</Label>
          </TableColumnHeader>
          <TableColumnHeader>
            <Label>UserName</Label>
          </TableColumnHeader> -->
          <TableColumnHeader>
            <Label>User</Label>
          </TableColumnHeader>
          <TableColumnHeader>
            <Label>ConnectTime</Label>
          </TableColumnHeader>
          <TableColumnHeader>
            <Label>DisconnectTime</Label>
          </TableColumnHeader>
          <TableColumnHeader>
            <Label>LastInputTime</Label>
          </TableColumnHeader>
          <TableColumnHeader>
            <Label>LogonTime</Label>
          </TableColumnHeader>
        </TableHeaders>
        <TableRowEntries>
          <TableRowEntry>
            <TableColumnItems>
              <TableColumnItem>
                <PropertyName>SessionId</PropertyName>
              </TableColumnItem>
              <TableColumnItem>
                <ScriptBlock>
                if ($PSStyle) {
                    $state = @{
                        Disconnected = $PSStyle.Foreground.BrightBlack
                        Connected = $PSStyle.Foreground.BrightGreen
                        Reset = $PSStyle.Reset
                    }
                }
                else {
                    $state = @{
                        Disconnected = "$([char]27)[90m"
                        Connected = "$([char]27)[92m"
                        Reset = "$([char]27)[0m"
                    }
                }
                if ($_.State -eq 'Disconnected') {
                    '{0}{1}{2}' -f $state.Disconnected, $_.State.ToString(), $state.Reset
                }
                elseif ($_.State -eq 'Connected' -or $_.State -eq 'Active') {
                    '{0}{1}{2}' -f $state.Connected, $_.State.ToString(), $state.Reset
                }
                else {
                    $_.State
                }
                </ScriptBlock>
              </TableColumnItem>
              <TableColumnItem>
                <PropertyName>WinStationName</PropertyName>
              </TableColumnItem>
              <!-- <TableColumnItem>
                <PropertyName>Domain</PropertyName>
              </TableColumnItem>
              <TableColumnItem>
                <PropertyName>UserName</PropertyName>
              </TableColumnItem> -->
              <TableColumnItem>
                <ScriptBlock>
                  if ($_.Domain) {
                    return ('{0}\{1}' -f $_.Domain, $_.UserName)
                  }
                  $_.UserName
              </ScriptBlock>
              </TableColumnItem>
              <TableColumnItem>
                <ScriptBlock>
                  if ($_.ConnectTime) {
                    $_.ConnectTime.ToString()
                  }
                </ScriptBlock>
              </TableColumnItem>
              <TableColumnItem>
                <ScriptBlock>
                  if ($_.DisconnectTime) {
                    $_.DisconnectTime.ToString()
                  }
                </ScriptBlock>
              </TableColumnItem>
              <TableColumnItem>
                <ScriptBlock>
                  if ($_.LastInputTime) {
                    $_.LastInputTime.ToString()
                  }
                </ScriptBlock>
              </TableColumnItem>
              <TableColumnItem>
                <ScriptBlock>
                  if ($_.LogonTime) {
                    $_.LogonTime.ToString()
                  }
                </ScriptBlock>
              </TableColumnItem>
            </TableColumnItems>
          </TableRowEntry>
        </TableRowEntries>
      </TableControl>
    </View>
    <View>
      <Name>TerminalSessions.ClientInfo</Name>
      <ViewSelectedBy>
        <TypeName>TerminalSessions.ClientInfo</TypeName>
      </ViewSelectedBy>
      <TableControl>
        <AutoSize />
        <TableHeaders>
          <TableColumnHeader>
            <Label>ClientName</Label>
          </TableColumnHeader>
          <!-- <TableColumnHeader>
            <Label>Domain</Label>
          </TableColumnHeader>
          <TableColumnHeader>
            <Label>UserName</Label>
          </TableColumnHeader> -->
          <TableColumnHeader>
            <Label>User</Label>
          </TableColumnHeader>
          <TableColumnHeader>
            <Label>EncryptionLevel</Label>
          </TableColumnHeader>
          <TableColumnHeader>
            <Label>ClientAddress</Label>
          </TableColumnHeader>
          <TableColumnHeader>
            <Label>HRes</Label>
          </TableColumnHeader>
          <TableColumnHeader>
            <Label>VRes</Label>
          </TableColumnHeader>
          <TableColumnHeader>
            <Label>ColorDepth</Label>
          </TableColumnHeader>
          <TableColumnHeader>
            <Label>InitialProgram</Label>
          </TableColumnHeader>
        </TableHeaders>
        <TableRowEntries>
          <TableRowEntry>
            <TableColumnItems>
              <TableColumnItem>
                <PropertyName>ClientName</PropertyName>
              </TableColumnItem>
              <!-- <TableColumnItem>
                <PropertyName>Domain</PropertyName>
              </TableColumnItem>
              <TableColumnItem>
                <PropertyName>UserName</PropertyName>
              </TableColumnItem> -->
              <TableColumnItem>
                <ScriptBlock>
                  if ($_.Domain) {
                    return ('{0}\{1}' -f $_.Domain, $_.UserName)
                  }
                  $_.UserName
              </ScriptBlock>
              </TableColumnItem>
              <TableColumnItem>
                <PropertyName>EncryptionLevel</PropertyName>
              </TableColumnItem>
              <TableColumnItem>
                <PropertyName>ClientAddress</PropertyName>
              </TableColumnItem>
              <TableColumnItem>
                <PropertyName>HRes</PropertyName>
              </TableColumnItem>
              <TableColumnItem>
                <PropertyName>VRes</PropertyName>
              </TableColumnItem>
              <TableColumnItem>
                <PropertyName>ColorDepth</PropertyName>
              </TableColumnItem>
              <TableColumnItem>
                <PropertyName>InitialProgram</PropertyName>
              </TableColumnItem>
            </TableColumnItems>
          </TableRowEntry>
        </TableRowEntries>
      </TableControl>
    </View>
  </ViewDefinitions>
</Configuration>