UiPath Documentation
activities
latest
false
Importante :
Este contenido se ha localizado parcialmente a partir de un sistema de traducción automática. La localización de contenidos recién publicados puede tardar entre una y dos semanas en estar disponible.
UiPath logo, featuring letters U and I in white

Actividades UIAutomation

Última actualización 7 de abr. de 2026

API de automatización codificadas de terminal

UiPath.Terminal.Activities

API de flujo de trabajo codificado para automatizar sesiones de emulación de terminal. Proporciona métodos para establecer conexiones a IBM 3270/5250, VT, HP, ANSI, Wyse y otros sistemas de terminal heredados a través de BlueZone, IBM PCOMM, Attachmate o conexiones directas TCP/SSH, y luego interactuar con la pantalla del terminal mediante programación.

Accesorio de servicio: terminal (tipo ITerminalService) Paquete requerido: "UiPath.Terminal.Activities": "*" en las dependencias de project.json

Espacios de nombres importados automáticamente

Estos espacios de nombres están disponibles automáticamente en los flujos de trabajo codificados cuando se instala este paquete:

UiPath.Terminal
UiPath.Terminal.Data
UiPath.Terminal.Activities.API
UiPath.Terminal.Enums
UiPath.Terminal
UiPath.Terminal.Data
UiPath.Terminal.Activities.API
UiPath.Terminal.Enums

Descripción general del servicio

El servicio terminal proporciona métodos de fábrica que abren una conexión de terminal y devuelven un objeto TerminalConnection . El objeto de conexión es la superficie API para todas las operaciones del terminal: lecturas de pantalla, acceso a campos, envío de claves y espera.

Esta es una API basada en conexión:

  1. Llame a un método de servicio (GetConnection / GetSshConnection) para abrir y conectarse.
  2. Utiliza el TerminalConnection devuelto para realizar operaciones de terminal.
  3. Deshazte de la conexión cuando hayas terminado (o utiliza una instrucción using ).

En el modo de flujo de trabajo codificado, todos los métodos TerminalConnection arrojan TerminalConnectionException en caso de fallo en lugar de devolver códigos de error. Esto significa que no es necesario comprobar los valores devueltos, solo gestionar las excepciones.

Métodos de conexión

TerminalConnection GetConnection(string connectionString)

Abre una conexión de terminal utilizando una cadena de conexión serializada. La cadena de conexión codifica el tipo de proveedor, host, puerto, protocolo y otras configuraciones. Utiliza el cuadro de diálogo Configuración de conexión de la actividad XAML de sesión de terminal para generar una cadena válida.

Parámetros:

  • connectionString (string) — Cadena de conexión serializada. Ejemplo: obtenido configurando una actividad de sesión de terminal y copiando el valor de propiedad ConnectionString .

Devuelve: TerminalConnection : una sesión de terminal abierta y conectada. Implementa IDisposable; utilizar dentro de una instrucción using .

Lanza: TerminalConnectionException si la conexión no se puede establecer dentro del tiempo de espera.

TerminalConnection GetConnection(ConnectionData connectionData)

Abre una conexión de terminal utilizando un objeto ConnectionData , lo que permite la configuración programática sin una cadena de conexión serializada.

Parámetros:

  • connectionData (ConnectionData): objeto de configuración que especifica la configuración del proveedor, host, puerto, protocolo y emulación.

Devuelve: TerminalConnection : una sesión de terminal abierta y conectada.

Lanza: TerminalConnectionException si no se puede establecer la conexión.

TerminalConnection GetSshConnection(ConnectionData connectionData, string sshUser, SecureString sshPassword)

Abre una conexión de terminal SSH con credenciales explícitas. El connectionData debe especificar ProviderType = UiPathNew y ConnectionProtocol = SSH.

Parámetros:

  • connectionData (ConnectionData) — Configuración de la conexión. Debe tener ProviderType = TerminalProviderType.UiPathNew y ConnectionProtocol = CommunicationType.SSH.
  • sshUser (string): nombre de usuario SSH.
  • sshPassword (SecureString) — Contraseña SSH. Utiliza una variable SecureString (por ejemplo, de Obtener credencial) para evitar la exposición de texto sin formato.

Devuelve: TerminalConnection : una sesión de terminal SSH abierta y conectada.

Lanza: TerminalConnectionException si la conexión falla, o ArgumentException si ProviderType o ConnectionProtocol no son válidos.

ConexiónDeTerminal

TerminalConnection es el identificador devuelto por todos los métodos de servicio. Proporciona todas las operaciones de interacción del terminal e implementa IDisposable.

Nota:

Este tipo implementa IDisposable. Utilizar siempre dentro de una instrucción using o llamar Dispose() / Shutdown() explícitamente. La eliminación desconecta la sesión y finaliza cualquier proceso del host.

Propiedades

PropiedadTipoDescripción
Connectedbooltrue si la sesión está actualmente conectada al host.
ConnectionStringstringLa cadena de conexión serializada utilizada para establecer esta conexión.
DefaultCmdOptionsCommandOptionsLas opciones predeterminadas de tiempo de espera y modo de espera se aplican a todas las operaciones cuando no se anulan explícitamente.

Events

EventoDescripción
TerminalScreenChangedSe genera cuando cambia el contenido de la pantalla del terminal.
TerminalFieldChangedSe genera cuando cambia un valor de campo.
TerminalCursorChangedSe eleva cuando cambia la posición del cursor.
TerminalConnectionChangedSe genera cuando cambia el estado de la conexión (por ejemplo, conectar/desconectar).
TerminalErrorRaisedSe genera cuando se produce un error de terminal de forma asíncrona.

Métodos de lectura de pantalla

TerminalResultCode GetText(out string text, CommandOptions options = null)

Lee todo el contenido de texto visible de la pantalla del terminal.

Parámetros:

  • text (out string): recibe el texto de pantalla completa.
  • options (CommandOptions, opcional): tiempo de espera y modo de espera. El valor predeterminado es DefaultCmdOptions.

Devuelve: TerminalResultCode.Success (o lanza TerminalConnectionException en caso de fallo en el modo de flujo de trabajo codificado).

TerminalResultCode GetTextAtPosition(TerminalField criteria, int? length, out string text, CommandOptions options = null)

Lee el texto de la pantalla a partir de la posición definida por criteria. Limita de forma opcional el número de caracteres leídos.

Parámetros:

  • criteria (TerminalField) — Define la posición de inicio a través de RowStart / ColStart.
  • length (int?, opcional): número de caracteres a leer. null lee hasta el final de la línea.
  • text (out string): recibe el texto leído desde la posición.
  • options (CommandOptions, opcional): tiempo de espera y modo de espera.
TerminalResultCode GetScreenArea(TerminalField criteria, out string text, CommandOptions options = null)

Lee texto de una región rectangular de la pantalla definida por criteria.

Parámetros:

  • criteria (TerminalField): define la región utilizando RowStart, ColStart, RowEnd, ColEnd.
  • text (out string): recibe el texto de la región.
  • options (CommandOptions, opcional): tiempo de espera y modo de espera.
TerminalResultCode GetColorAtPosition(int row, int column, out Color color, CommandOptions options = null)

Obtiene el color de primer plano del carácter en la posición especificada.

Parámetros:

  • row (int) — Fila (basada en 1).
  • column (int) — Columna (basada en 1).
  • color (out Color) — Recibe el valor System.Drawing.Color .
  • options (CommandOptions, opcional): tiempo de espera y modo de espera.
ScreenData GetScreen(CommandOptions options = null)

Devuelve el objeto de datos de pantalla sin procesar, incluidos todos los atributos de campo y los datos de caracteres.

Parámetros:

  • options (CommandOptions, opcional): tiempo de espera y modo de espera.

Devuelve: ScreenData con contenido de pantalla y metadatos de campo, o null si no está conectado.

Métodos de campo

TerminalResultCode GetField(TerminalField field, out string text, CommandOptions options = null)

Lee el contenido de texto de un campo identificado por sus criterios (etiqueta, índice o coordenadas).

Parámetros:

  • field (TerminalField) — Identificación de campo. Establece las propiedades LabeledBy, FollowedBy, Index o coordenadas.
  • text (out string) — Recibe el texto del campo.
  • options (CommandOptions, opcional): tiempo de espera y modo de espera.
TerminalResultCode SetField(TerminalField criteria, string text, CommandOptions options = null)

Escribe texto en el campo que coincide con los criterios.

Parámetros:

  • criteria (TerminalField) — Identificación de campo. Establece las propiedades LabeledBy, FollowedBy, Index o coordenadas.
  • text (string) — Texto a escribir.
  • options (CommandOptions, opcional): tiempo de espera y modo de espera.

Métodos de cursor

TerminalResultCode GetCursorPosition(out CursorPosition cursorPosition, CommandOptions options = null)

Obtiene la fila y la columna actuales del cursor del terminal.

Parámetros:

  • cursorPosition (out CursorPosition) — Recibe la posición del cursor (Row, Column).
  • options (CommandOptions, opcional): tiempo de espera y modo de espera.
TerminalResultCode MoveCursor(int row, int column, CommandOptions options = null)

Mueve el cursor del terminal a la fila y columna especificadas.

Parámetros:

  • row (int) — Fila de destino (basada en 1).
  • column (int) — Columna de destino (basada en 1).
  • options (CommandOptions, opcional): tiempo de espera y modo de espera.
TerminalResultCode MoveCursor(CursorPosition cursor, CommandOptions options = null)

Mueve el cursor utilizando un objeto CursorPosition .

Parámetros:

  • cursor (CursorPosition) — Posición de destino.
  • options (CommandOptions, opcional): tiempo de espera y modo de espera.

Métodos de envío clave

TerminalResultCode SendKeys(string keys, CommandOptions options = null)

Envía una cadena de texto al terminal en la posición actual del cursor.

Parámetros:

  • keys (string) — Texto a enviar.
  • options (CommandOptions, opcional): tiempo de espera y modo de espera.
TerminalResultCode SendKeysSecure(SecureString keys, CommandOptions options = null)

Envía un SecureString al terminal. La cadena se descifra en la memoria, se envía y luego el búfer no administrado se pone a cero. Utilízalo para contraseñas.

Parámetros:

  • keys (SecureString) — Texto seguro para enviar.
  • options (CommandOptions, opcional): tiempo de espera y modo de espera.
TerminalResultCode SendControlKey(ControlKey key, CommandOptions options = null)

Envía una tecla de control (Tab, F1–F24, Transmitir/Intro, teclas de flecha, etc.) al terminal.

Parámetros:

  • key (ControlKey) — La clave de control a enviar. Consulta ControlKey enum.
  • options (CommandOptions, opcional): tiempo de espera y modo de espera.
TerminalResultCode SendControlKey(ControlKey key, int delayMS, CommandOptions options = null)

Envía una clave de control y luego espera un número especificado de milisegundos antes de regresar. Útil cuando el host necesita tiempo de procesamiento después de una clave.

Parámetros:

  • key (ControlKey) — La clave de control a enviar.
  • delayMS (int) — Milisegundos para suspender después de enviar la clave.
  • options (CommandOptions, opcional): tiempo de espera y modo de espera.

Métodos de espera

TerminalResultCode WaitScreenReady(CommandOptions options = null)

Espera hasta que el teclado del terminal esté desbloqueado y la pantalla esté lista para la entrada.

Parámetros:

  • options (CommandOptions, opcional): tiempo de espera y modo de espera. Establece Timeout para controlar cuánto tiempo esperar.
TerminalResultCode WaitText(string text, TerminalField criteria = null, bool matchCase = true, CommandOptions options = null)

Espera hasta que el texto especificado aparezca en la pantalla del terminal (o en un campo específico si se proporciona criteria ).

Parámetros:

  • text (string) — Texto a esperar.
  • criteria (TerminalField, opcional): cuando se establece, espera el texto en el campo específico. Cuando null, espera el texto en cualquier parte de la pantalla.
  • matchCase (bool, opcional): comparación que distingue entre mayúsculas y minúsculas. Predeterminado: true.
  • options (CommandOptions, opcional): tiempo de espera y modo de espera.
TerminalResultCode FindTextInScreen(string text, CursorPosition startPosition, bool ignoreCase, out CursorPosition position, CommandOptions options = null)

Busca en la pantalla una cadena de texto a partir de startPosition.

Parámetros:

  • text (string) — Texto a buscar.
  • startPosition (CursorPosition) — Posición inicial de búsqueda.
  • ignoreCase (bool) — Búsqueda que no distingue entre mayúsculas y minúsculas.
  • position (out CursorPosition): recibe las coordenadas donde se encontró el texto.
  • options (CommandOptions, opcional): tiempo de espera y modo de espera.

Devuelve: TerminalResultCode.Success si se encuentra; lanza (o devuelve InvalidCoordinates) si no se encuentra.

Ciclo de vida de la conexión

TerminalResultCode Disconnect(CommandOptions options = null)

Se desconecta del host mientras mantiene vivo el objeto de conexión (no se elimina). Rara vez necesario: Dispose() se encarga de la limpieza.

void Shutdown()

Alias para Dispose(). Desconecta, cierra los procesos del host y libera recursos.

void Dispose()

Desconecta la sesión, finaliza cualquier proceso de intermediario de host (x86/x64) y libera todos los recursos administrados y no administrados.

Avanzado

TerminalResultCode OverrideScreenResolution(ScreenSize screenSize, CommandOptions options = null)

Anula las dimensiones de la pantalla del terminal. Se utiliza cuando el host requiere un tamaño de pantalla no estándar.

Parámetros:

  • screenSize (ScreenSize) — Dimensiones de la pantalla de destino.
  • options (CommandOptions, opcional): tiempo de espera y modo de espera.

Opciones y clases de configuración

CommandOptions

Controla el tiempo de espera y el comportamiento de espera de pantalla para operaciones de terminal individuales.

PropiedadTipoPredeterminadoDescripción
Timeoutint30000Milisegundos de espera antes de lanzar un error de tiempo de espera. Cuando 0 o negativo, vuelve al valor predeterminado del servicio de 30 000 ms.
WaitTypeWaitModeREADYCómo esperar a la pantalla antes de ejecutar la operación.
// Example: 10-second timeout, wait for screen ready
var opts = new CommandOptions(WaitMode.READY, 10000);
// Example: 10-second timeout, wait for screen ready
var opts = new CommandOptions(WaitMode.READY, 10000);

ConnectionData

Objeto de configuración programática para conexiones de terminal. Se utiliza con GetConnection(ConnectionData) y GetSshConnection().

PropiedadTipoPredeterminadoDescripción
ProviderTypeTerminalProviderTypeUiPathNewProveedor de emulador de terminal. Utiliza UiPathNew para las conexiones TCP/SSH directas.
ConnectionTypeConnectionTypeProfileCómo se establece la conexión: Address (host/puerto: necesario para UiPathNew), Profile (archivo de perfil del proveedor), LowLevel (EHLLAPI).
ConnectionProtocolCommunicationTypeTELNETProtocolo: TELNET, SSH o HPVT.
TerminalTypeTerminalTypeTerminal3270Tipo de emulación de terminal.
HoststringNombre de host o dirección IP del host de destino.
Portint23Puerto TCP. El valor predeterminado es 23 (Telnet); SSH suele utilizar 22.
ShowTerminalbooltrueSi mostrar la ventana del terminal (si el proveedor lo admite).
EnableSSLboolfalseHabilita SSL/TLS para la conexión.
ProfilestringRuta al archivo de perfil del proveedor (para proveedores basados en perfiles: Attachmate, IBM, BlueZone, etc.).
InProcessModeboolfalseEjecuta el proveedor de terminal en proceso (solo Genérico/EHLLAPI).
AttachExistingboolfalseAdjuntar a una sesión de terminal ya en ejecución. El valor true solo está disponible para el proveedor Attachmate
ProxyTypeProxyTypeNoneTipo de proxy (Ninguno, HTTP, SOCKS4, SOCKS5).
ProxyHoststringNombre de host del servidor proxy.
ProxyPortintPuerto del servidor proxy.
ProxyUserstringNombre de usuario de autenticación de proxy.
ProxyPasswordstringContraseña de autenticación de proxy.
InternalEncodingstringAnulación de la codificación de caracteres (por ejemplo, "IBM037" para EBCDIC).
EhllDllstringRuta a la DLL de EHLLAPI (proveedor genérico).
EhllFunctionstring"hllapi"Nombre de la función de punto de entrada EHLLAPI.
EhllSessionstring"A"Identificador de sesión EHLLAPI.
EhllEnhancedbooltrueUtiliza el modo EHLLAPI mejorado.
EhllEncodingstringCodificación de caracteres utilizada para la comunicación de texto EHLLAPI (proveedor genérico). El valor predeterminado es la codificación configurada del proveedor si no está establecida o no se reconoce.
EhllBasicModeboolfalseCuando true, deshabilita el análisis de campos en la recuperación de pantalla. Los datos de pantalla se devuelven solo como texto sin formato, sin metadatos de campo. Úselo para el rendimiento cuando no se necesita acceso a nivel de campo (proveedor genérico).
LuNamestringPara 3270/5250: el nombre de la unidad lógica (LU) de SNA que se solicitará al host. Para VT/Wyse/Linux: la cadena de respuesta del terminal (usa ^M para el retorno de carro). No tiene efecto en las conexiones que no son SNA o VT.
TerminalModelint0Identificador del modelo de terminal. Utiliza el valor de enumeración para el TerminalType activo: TerminalModes3270 (3270), TerminalModes5250 (5250, el valor predeterminado es IBM_5250_3477_FC cuando 0), TTVtTermId (VT), TerminalModesHP (HP), TerminalModesWyse (Wyse), TerminalModesLinux (Linux).

TerminalField

Identifica un campo o región de la pantalla para operaciones de lectura/escritura.

PropiedadTipoDescripción
RowStartintFila de inicio (basado en 1 o -1 para no establecer).
ColStartintColumna de inicio (basada en 1 o -1 para no establecer).
RowEndintFila final para operaciones de área (-1 para desarmar).
ColEndintColumna final para operaciones de área (-1 para desarmar).
LabeledBystringTexto de la etiqueta que precede al campo.
FollowedBystringTexto de la etiqueta que sigue al campo.
IndexintÍndice de campo basado en cero (-1 para no establecer).

CursorPosition

Representa una ubicación de fila/columna en la pantalla del terminal.

PropiedadTipoDescripción
RowintFila (basada en 1). Predeterminado: 1.
ColumnintColumna (basada en 1). Predeterminado: 1.

Referencia de enumeración

WaitMode: NONE, READY, COMPLETE

  • NONE : no esperar; ejecutar inmediatamente.
  • READY : espera a que se desbloquee el teclado antes de ejecutar.
  • COMPLETE : espera a que lleguen todos los datos de la pantalla antes de ejecutar.

TerminalProviderType: UiPathNew, Attachmate, IBM, BlueZone, Generic, AttachmateExtra, ReflectionUnix, ReflectionIBM, Rumba, TandemHLL

  • UiPathNew : conexión TCP/SSH directa sin un emulador de terceros. Admite Telnet, SSH y HPVT.
  • TandemHLL : sesiones de host tándem/NonStop a través de THLLAPI (THLLW3.DLL / THLLW6.DLL, Attachmate Reflection 6530). Utiliza ConnectionType.LowLevel y los mismos campos Ehll* que Generic. Los datos de atributos de color no son compatibles; GetColorAtPosition siempre devuelve Color.LightGreen.

CommunicationType: TELNET, SSH, HPVT

ConnectionType: Address, Profile, LowLevel

  • Address : conexión por host/puerto. Obligatorio al utilizar ProviderType.UiPathNew.
  • Profile : conectarse utilizando un archivo de perfil específico del proveedor (ruta establecida a través de Profile).
  • LowLevel : conexión a través de EHLLAPI (proveedor genérico) o THLLAPI (proveedor TandemHLL).

TerminalType: Terminal3270, Terminal5250, TerminalVT, TerminalHP, TerminalANSI, TerminalT653X, TerminalSCOANSI, TerminalWYSE, TerminalLinux

ControlKey (valores seleccionados): Transmit, Tab, BackTab, Return, Escape, BackSpace, Home, End, Insert, Delete, PageUp, PageDown, Up, Down, Left, Right, F1F24, Shift_F1Shift_F12, Ctrl_F1Ctrl_F12, Alt_F1Alt_F12, PA1PA3, Clear, Reset, Attention, EraseEOF, EraseInput, CursorSelect, FieldPlus, FieldMinus, FieldExit, Ctrl_ACtrl_Z, Tandem_Horizontal_Tab, Tandem_Vertical_Tab

TerminalModes3270 (usar con TerminalType.Terminal3270): IBM_3270_3278_2 (0), IBM_3270_3278_3 (1), IBM_3270_3278_4 (2), IBM_3270_3278_5 (3), IBM_3270_3279_2 (4), IBM_3270_3279_3 ( 5), IBM_3270_3279_4 (6), IBM_3270_3279_5 (7)

TerminalModes5250 (usar con TerminalType.Terminal5250): IBM_5250_3179_2 (54), IBM_5250_3179_220 (60), IBM_5250_3180_2 (52), IBM_5250_3196_A1 (53), IBM_5250_3477_FG (61), IBM_5250_3477_FC ( 62), IBM_5250_5251_1 (55), IBM_5250_5251_11 (56), IBM_5250_5252 (57), IBM_5250_5291_1 (58), IBM_5250_5292_2 (59), IBM_5250_5555_C01 (64), IBM_5250_5555_B01 (65 ), IBM_5250_Printer (63)

TTVtTermId (utilizar con TerminalType.TerminalVT): VT100 (0), VT101 (1), VT102 (2), VT220 (3), VT240 (4), VT320 ( 5), VT340 (6), VT420 (7), VT100W (10), VT101W (11), VT102W (12), VT220w (13), VT240W (14 ), VT320W (15), VT340W (16), VT420W (17), VT100M (20), VT101M (21), VT102M (22), VT220M (23) , VT240M (24), VT320M (25), VT340M (26), VT420M (27)

TerminalModesHP (usar con TerminalType.TerminalHP): HP_2372A (0), HP_70092 (1), HP_70094 (2)

TerminalModesWyse (usar con TerminalType.TerminalWYSE): WYSE_50_24_80 (0), WYSE_50_24_132 (10), WYSE_60_24_80 (1), WYSE_60_24_132 (11), WYSE_60_42_80 (41), WYSE_60_42_132 ( 51), WYSE_60_43_80 (61), WYSE_60_43_132 (71), WYSE_350_24_80 (2), WYSE_350_24_132 (12)

TerminalModesLinux (utilizar con TerminalType.TerminalLinux): Linux_24_80 (0), Linux_24_132 (1), Linux_36_80 (2), Linux_36_132 (3), Linux_48_80 (4), Linux_48_132 (5)

Patrones comunes

Inicie sesión en un host 3270 y lea un campo

[Workflow]
public void Execute()
{
    var connData = new ConnectionData
    {
        Host = "mainframe.corp.com",
        Port = 23,
        TerminalType = TerminalType.Terminal3270,
        ProviderType = TerminalProviderType.UiPathNew,
        ConnectionType = ConnectionType.Address,
        ConnectionProtocol = CommunicationType.TELNET
    };

    using var conn = terminal.GetConnection(connData);

    // Wait for login screen, then type credentials
    conn.WaitText("ENTER USERID", options: new CommandOptions(WaitMode.READY, 30000));
    conn.SetField(new TerminalField { LabeledBy = "USERID" }, "myuser");
    conn.SetField(new TerminalField { LabeledBy = "PASSWORD" }, "mypassword");
    conn.SendControlKey(ControlKey.Transmit);

    // Wait for main menu
    conn.WaitScreenReady(new CommandOptions(WaitMode.READY, 15000));

    // Read data
    conn.GetText(out string screen);
    Log(screen);
}
[Workflow]
public void Execute()
{
    var connData = new ConnectionData
    {
        Host = "mainframe.corp.com",
        Port = 23,
        TerminalType = TerminalType.Terminal3270,
        ProviderType = TerminalProviderType.UiPathNew,
        ConnectionType = ConnectionType.Address,
        ConnectionProtocol = CommunicationType.TELNET
    };

    using var conn = terminal.GetConnection(connData);

    // Wait for login screen, then type credentials
    conn.WaitText("ENTER USERID", options: new CommandOptions(WaitMode.READY, 30000));
    conn.SetField(new TerminalField { LabeledBy = "USERID" }, "myuser");
    conn.SetField(new TerminalField { LabeledBy = "PASSWORD" }, "mypassword");
    conn.SendControlKey(ControlKey.Transmit);

    // Wait for main menu
    conn.WaitScreenReady(new CommandOptions(WaitMode.READY, 15000));

    // Read data
    conn.GetText(out string screen);
    Log(screen);
}

Conexión SSH con credenciales seguras

[Workflow]
public void Execute()
{
    var controlKeyDelayMS = 1000;
    var connData = new ConnectionData
    {
        Host = "unix-server.corp.com",
        Port = 22,
        TerminalType = TerminalType.TerminalVT,
        ProviderType = TerminalProviderType.UiPathNew,
        ConnectionType = ConnectionType.Address,
        ConnectionProtocol = CommunicationType.SSH
    };

    // sshPwd is a SecureString variable, for example, from Get Credential activity
    using var conn = terminal.GetSshConnection(connData, sshUser: "deploy", sshPassword: sshPwd);

    conn.WaitText("$", options: new CommandOptions(WaitMode.NONE, 10000));
    conn.SendKeys("ls -la /var/log");
    conn.SendControlKey(ControlKey.Transmit, controlKeyDelayMS);

    conn.GetText(out string output);
    Log(output);
}
[Workflow]
public void Execute()
{
    var controlKeyDelayMS = 1000;
    var connData = new ConnectionData
    {
        Host = "unix-server.corp.com",
        Port = 22,
        TerminalType = TerminalType.TerminalVT,
        ProviderType = TerminalProviderType.UiPathNew,
        ConnectionType = ConnectionType.Address,
        ConnectionProtocol = CommunicationType.SSH
    };

    // sshPwd is a SecureString variable, for example, from Get Credential activity
    using var conn = terminal.GetSshConnection(connData, sshUser: "deploy", sshPassword: sshPwd);

    conn.WaitText("$", options: new CommandOptions(WaitMode.NONE, 10000));
    conn.SendKeys("ls -la /var/log");
    conn.SendControlKey(ControlKey.Transmit, controlKeyDelayMS);

    conn.GetText(out string output);
    Log(output);
}

Se utiliza al automatizar una sesión de terminal gestionada por un emulador de terceros que expone una interfaz EHLLAPI (por ejemplo, una sesión de IBM PCOMM o BlueZone en ejecución a la que se accede a través de su DLL EHLLAPI).

[Workflow]
public void Execute()
{
    var connData = new ConnectionData
    {
        ProviderType = TerminalProviderType.Generic,
        ConnectionType = ConnectionType.LowLevel,
        EhllDll = @"C:\Program Files\IBM\Personal Communications\PCSHLL32.DLL",
        EhllFunction = "hllapi",
        EhllSession = "A",
        EhllEnhanced = true
    };

    using var conn = terminal.GetConnection(connData);

    // Move cursor to the Option field and type a menu choice
    conn.MoveCursor(row: 4, column: 14);
    conn.SendKeys("2");
    conn.SendControlKey(ControlKey.Transmit);
    conn.WaitScreenReady(new CommandOptions(WaitMode.READY, 20000));

    // Read a region of the response screen (rows 5-20, full width)
    var region = new TerminalField { RowStart = 5, ColStart = 1, RowEnd = 20, ColEnd = 80 };
    conn.GetScreenArea(region, out string result);
    Log(result);
}
[Workflow]
public void Execute()
{
    var connData = new ConnectionData
    {
        ProviderType = TerminalProviderType.Generic,
        ConnectionType = ConnectionType.LowLevel,
        EhllDll = @"C:\Program Files\IBM\Personal Communications\PCSHLL32.DLL",
        EhllFunction = "hllapi",
        EhllSession = "A",
        EhllEnhanced = true
    };

    using var conn = terminal.GetConnection(connData);

    // Move cursor to the Option field and type a menu choice
    conn.MoveCursor(row: 4, column: 14);
    conn.SendKeys("2");
    conn.SendControlKey(ControlKey.Transmit);
    conn.WaitScreenReady(new CommandOptions(WaitMode.READY, 20000));

    // Read a region of the response screen (rows 5-20, full width)
    var region = new TerminalField { RowStart = 5, ColStart = 1, RowEnd = 20, ColEnd = 80 };
    conn.GetScreenArea(region, out string result);
    Log(result);
}

Esperar a procesar y leer un campo de resultado (IBM Personal Communications/perfil guardado)

Se utiliza cuando la conexión está preconfigurada en un archivo de espacio de trabajo de IBM PCOMM (.ws). PCOMM debe estar instalado en la máquina del robot.

[Workflow]
public void Execute()
{
    var connData = new ConnectionData
    {
        ProviderType = TerminalProviderType.IBM,
        ConnectionType = ConnectionType.Profile,
        Mode = ConnectionMode.Play,
        ShowTerminal = true,
        Profile = @"C:\PComm\Profiles\MainframeSession.ws"
    };

    using var conn = terminal.GetConnection(connData);

    // Submit a transaction
    conn.SetField(new TerminalField { LabeledBy = "TRAN CODE" }, "INQ01");
    conn.SetField(new TerminalField { LabeledBy = "ACCOUNT  " }, accountNumber);
    conn.SendControlKey(ControlKey.Transmit);

    // Wait for either success or error indicator
    var opts = new CommandOptions(WaitMode.READY, 30000);
    conn.WaitScreenReady(opts);

    // Check status field
    conn.GetField(new TerminalField { LabeledBy = "STATUS   " }, out string status);
    if (status.Trim() == "00")
    {
        conn.GetField(new TerminalField { LabeledBy = "BALANCE  " }, out string balance);
        Log($"Balance: {balance}");
    }
    else
    {
        conn.GetText(out string screen);
        throw new Exception($"Transaction failed. Status: {status}. Screen: {screen}");
    }
}
[Workflow]
public void Execute()
{
    var connData = new ConnectionData
    {
        ProviderType = TerminalProviderType.IBM,
        ConnectionType = ConnectionType.Profile,
        Mode = ConnectionMode.Play,
        ShowTerminal = true,
        Profile = @"C:\PComm\Profiles\MainframeSession.ws"
    };

    using var conn = terminal.GetConnection(connData);

    // Submit a transaction
    conn.SetField(new TerminalField { LabeledBy = "TRAN CODE" }, "INQ01");
    conn.SetField(new TerminalField { LabeledBy = "ACCOUNT  " }, accountNumber);
    conn.SendControlKey(ControlKey.Transmit);

    // Wait for either success or error indicator
    var opts = new CommandOptions(WaitMode.READY, 30000);
    conn.WaitScreenReady(opts);

    // Check status field
    conn.GetField(new TerminalField { LabeledBy = "STATUS   " }, out string status);
    if (status.Trim() == "00")
    {
        conn.GetField(new TerminalField { LabeledBy = "BALANCE  " }, out string balance);
        Log($"Balance: {balance}");
    }
    else
    {
        conn.GetText(out string screen);
        throw new Exception($"Transaction failed. Status: {status}. Screen: {screen}");
    }
}

Detectar un color de campo para la lógica condicional

[Workflow]
public void Execute()
{
    var conn = terminal.GetConnection(connectionString);
    try
    {
        conn.WaitScreenReady(new CommandOptions(WaitMode.READY, 10000));

        // Check if the status indicator at row 24, col 1 is red (error)
        conn.GetColorAtPosition(24, 1, out Color statusColor);

        if (statusColor == Color.Red)
        {
            conn.GetText(out string errorScreen);
            Log($"Error screen detected: {errorScreen}");
        }
        else
        {
            conn.GetField(new TerminalField { Index = 0 }, out string firstField);
            Log($"First field: {firstField}");
        }
    }
    finally
    {
        conn.Dispose();
    }
}
[Workflow]
public void Execute()
{
    var conn = terminal.GetConnection(connectionString);
    try
    {
        conn.WaitScreenReady(new CommandOptions(WaitMode.READY, 10000));

        // Check if the status indicator at row 24, col 1 is red (error)
        conn.GetColorAtPosition(24, 1, out Color statusColor);

        if (statusColor == Color.Red)
        {
            conn.GetText(out string errorScreen);
            Log($"Error screen detected: {errorScreen}");
        }
        else
        {
            conn.GetField(new TerminalField { Index = 0 }, out string firstField);
            Log($"First field: {firstField}");
        }
    }
    finally
    {
        conn.Dispose();
    }
}

Conéctese a un host Tandem/NonStop a través de THLLAPI

Se utiliza al automatizar una sesión Tandem/NonStop que se ejecuta a través de Attachmate Reflection 6530. El punto de entrada EhllFunction para THLLAPI es "thllapi" (no "hllapi"). Los datos de atributos de color no están disponibles para este proveedor.

[Workflow]
public void Execute()
{
    var connData = new ConnectionData
    {
        ProviderType = TerminalProviderType.TandemHLL,
        ConnectionType = ConnectionType.LowLevel,
        EhllDll = @"C:\Program Files\Attachmate\Reflection\THLLW6.DLL",
        EhllFunction = "thllapi",
        EhllSession = "A"
    };

    using var conn = terminal.GetConnection(connData);

    conn.WaitScreenReady(new CommandOptions(WaitMode.READY, 15000));

    // Type a command and submit with Horizontal Tab to move between fields
    conn.SetField(new TerminalField { LabeledBy = "LOGON:" }, "myuser");
    conn.SendControlKey(ControlKey.Tandem_Horizontal_Tab);
    conn.SetField(new TerminalField { LabeledBy = "PASSWORD:" }, "mypassword");
    conn.SendControlKey(ControlKey.Return);

    conn.WaitScreenReady(new CommandOptions(WaitMode.READY, 15000));
    conn.GetText(out string screen);
    Log(screen);
}
[Workflow]
public void Execute()
{
    var connData = new ConnectionData
    {
        ProviderType = TerminalProviderType.TandemHLL,
        ConnectionType = ConnectionType.LowLevel,
        EhllDll = @"C:\Program Files\Attachmate\Reflection\THLLW6.DLL",
        EhllFunction = "thllapi",
        EhllSession = "A"
    };

    using var conn = terminal.GetConnection(connData);

    conn.WaitScreenReady(new CommandOptions(WaitMode.READY, 15000));

    // Type a command and submit with Horizontal Tab to move between fields
    conn.SetField(new TerminalField { LabeledBy = "LOGON:" }, "myuser");
    conn.SendControlKey(ControlKey.Tandem_Horizontal_Tab);
    conn.SetField(new TerminalField { LabeledBy = "PASSWORD:" }, "mypassword");
    conn.SendControlKey(ControlKey.Return);

    conn.WaitScreenReady(new CommandOptions(WaitMode.READY, 15000));
    conn.GetText(out string screen);
    Log(screen);
}

¿Te ha resultado útil esta página?

Conectar

¿Necesita ayuda? Soporte

¿Quiere aprender? UiPath Academy

¿Tiene alguna pregunta? Foro de UiPath

Manténgase actualizado