UiPath Documentation
uipath-cli
latest
false
Importante :
Este contenido se ha traducido mediante traducción automática. La localización de contenidos recién publicados puede tardar entre una y dos semanas en estar disponible.

Guía del usuario de UiPath CLI

Tutorial: gestionar los recursos de Orchestrator

La herramienta uip resource es la superficie CRUD de propósito general sobre los recursos de runtime de Orchestrator: activos, depósitos (y archivos dentro de ellos), bibliotecas, colas (y elementos), desencadenadores y webhooks. Esta página recopila las tareas que surgen a diario (crear activos en masa, mover archivos dentro y fuera de los depósitos, enviar trabajo en cola, inspeccionar desencadenadores) como fragmentos que se pueden copiar y pegar.

La lista completa de marcadores para cada subcomando está en la página de referencia uip resource . Esta página cubre los patrones de uso comunes.

Nota:

uip resource es diferente de uip solution resource. La primera es la superficie CRUD en Orchestrator (esta página). Este último inspecciona las declaraciones de recursos locales dentro de una solución .uipx . En caso de duda, consulta el prefijo: uip solution resource … solo lee tu disco; uip resource … siempre llama a Orchestrator.

Convenciones que debe conocer primero

Antes de que funcione cualquier fragmento:

  • Autenticación. Cada verbo uip resource llama a Orchestrator. Ejecuta uip login primero. Transmite --tenant <name> ( -t abreviado) en cualquier verbo para anular el tenant de sesión para una sola llamada.
  • Ámbito de carpeta. Los activos, depósitos, colas, artículos en cola y desencadenadores de tiempo/cola tienen ámbito de carpeta : pase --folder-path (por ejemplo Shared) o --folder-key (GUID). Las bibliotecas, los desencadenadores de API y los webhooks tienen ámbito de tenant y rechazan los marcadores de carpeta.
  • Claves. Enumerar verbos devuelve GUID (key, identifier, uniqueKey). Pásalas a get, update y delete. Los campos numéricos id son internos; no los pases a los comandos.
  • JSON es la salida predeterminada. Cada fragmento a continuación se basa en esto; consulta Formatos de salida.

Activos

Implementación masiva de activos desde un CSV

Esta es la tarea más común de "gestionar mis secretos y configuración". Dado un CSV como:

name,value,type,folderPath
ApiEndpoint,https://api.example.com,Text,Shared
MaxRetries,3,Integer,Shared
Debug,false,Bool,Shared
name,value,type,folderPath
ApiEndpoint,https://api.example.com,Text,Shared
MaxRetries,3,Integer,Shared
Debug,false,Bool,Shared

Repite con bash simple + uip resource assets create:

#!/usr/bin/env bash
set -euo pipefail

# Skip the header row
tail -n +2 ./assets.csv | while IFS=, read -r name value type folder; do
  uip resource assets create "$name" "$value" \
    --folder-path "$folder" \
    --type "$type"
done
#!/usr/bin/env bash
set -euo pipefail

# Skip the header row
tail -n +2 ./assets.csv | while IFS=, read -r name value type folder; do
  uip resource assets create "$name" "$value" \
    --folder-path "$folder" \
    --type "$type"
done

Volver a ejecutar esto en la misma carpeta fallará en los duplicados. Dos formas de manejar eso:

  • Patrón de upsert. Enumerar primero, luego create o update por fila:

    tail -n +2 ./assets.csv | while IFS=, read -r name value type folder; do
      existing=$(uip resource assets list --folder-path "$folder" --name "$name" \
        --output-filter "Data[?name=='$name'] | [0].key" --output plain)
    
      if [ -n "$existing" ] && [ "$existing" != "null" ]; then
        uip resource assets update "$existing" "$value"
      else
        uip resource assets create "$name" "$value" --folder-path "$folder" --type "$type"
      fi
    done
    tail -n +2 ./assets.csv | while IFS=, read -r name value type folder; do
      existing=$(uip resource assets list --folder-path "$folder" --name "$name" \
        --output-filter "Data[?name=='$name'] | [0].key" --output plain)
    
      if [ -n "$existing" ] && [ "$existing" != "null" ]; then
        uip resource assets update "$existing" "$value"
      else
        uip resource assets create "$name" "$value" --folder-path "$folder" --type "$type"
      fi
    done
    
  • Patrón de implementación de la solución. Para los conjuntos de activos que se envían junto con un paquete, decláralos en el manifiesto de la solución y utiliza uip solution deploy run --config-file : esa ruta es idempotente por diseño. Consulta Tutorial: empaquetar y publicar una solución.

Activos de tipo credencial

Los activos de credenciales y secretos necesitan una clave de almacén de credenciales:

# Find the credential store
STORE_KEY=$(uip or credential-stores list \
  --output-filter "Data[?name=='MyStore'] | [0].key" --output plain)

# Create the credential asset (value format: username:password)
uip resource assets create ApiLogin "alice:s3cr3t" \
  --folder-path Shared \
  --type Credential \
  --credential-store-key "$STORE_KEY"
# Find the credential store
STORE_KEY=$(uip or credential-stores list \
  --output-filter "Data[?name=='MyStore'] | [0].key" --output plain)

# Create the credential asset (value format: username:password)
uip resource assets create ApiLogin "alice:s3cr3t" \
  --folder-path Shared \
  --type Credential \
  --credential-store-key "$STORE_KEY"

Los valores de credencial y secreto nunca son devueltos por list o get; utiliza assets get-asset-value (que aún necesita un ámbito de carpeta) para leer el valor activo o llamar a través del robot.

Compartir activos entre carpetas

Crear una vez en Shared luego compartir con cada carpeta que lo necesite:

ASSET_KEY=$(uip resource assets list --folder-path Shared --name ApiEndpoint \
  --output-filter "Data[0].key" --output plain)

for folder in Production Staging Development; do
  uip resource assets share "$ASSET_KEY" --folder-path "$folder"
done
ASSET_KEY=$(uip resource assets list --folder-path Shared --name ApiEndpoint \
  --output-filter "Data[0].key" --output plain)

for folder in Production Staging Development; do
  uip resource assets share "$ASSET_KEY" --folder-path "$folder"
done

Revocar con unshare. Consulta Activos para ver la lista completa de verbos.

Depósitos y archivos de depósito

Cargar un archivo local

BUCKET_KEY=$(uip resource buckets list --folder-path Shared \
  --output-filter "Data[?name=='invoices'] | [0].key" --output plain)

uip resource bucket-files write "$BUCKET_KEY" "inbox/invoice-001.pdf" \
  --folder-path Shared \
  --file ./invoice-001.pdf
BUCKET_KEY=$(uip resource buckets list --folder-path Shared \
  --output-filter "Data[?name=='invoices'] | [0].key" --output plain)

uip resource bucket-files write "$BUCKET_KEY" "inbox/invoice-001.pdf" \
  --folder-path Shared \
  --file ./invoice-001.pdf

La ruta dentro del depósito (inbox/invoice-001.pdf) es el segundo argumento de write; --file es la ruta local para cargar. El tipo de contenido se detecta automáticamente; pasa --content-type para anular.

Descargar un archivo

uip resource bucket-files read "$BUCKET_KEY" "reports/summary.csv" \
  --folder-path Shared \
  --destination ./summary.csv
uip resource bucket-files read "$BUCKET_KEY" "reports/summary.csv" \
  --folder-path Shared \
  --destination ./summary.csv

Sin --destination, el contenido se transmite a stdout, útil para canalizar a un procesador.

Enumerar y paginar

# First page
uip resource bucket-files list "$BUCKET_KEY" --folder-path Shared

# The response carries a continuationToken — pass it back to fetch the next page
uip resource bucket-files list "$BUCKET_KEY" --folder-path Shared \
  --continuation-token "<token-from-previous-response>"
# First page
uip resource bucket-files list "$BUCKET_KEY" --folder-path Shared

# The response carries a continuationToken — pass it back to fetch the next page
uip resource bucket-files list "$BUCKET_KEY" --folder-path Shared \
  --continuation-token "<token-from-previous-response>"

Los listados de archivos de depósito son el único recurso en la CLI que utiliza un token de continuación en lugar de paginación de desplazamiento: los otros verbos de lista toman --limit / --offset.

URL prefirmadas

Si un robot o servicio externo necesita acceso directo a blob sin pasar por la CLI:

uip resource bucket-files get-upload-url "$BUCKET_KEY" "inbox/incoming.pdf" \
  --folder-path Shared --expiry-in-minutes 30

uip resource bucket-files get-download-url "$BUCKET_KEY" "reports/summary.csv" \
  --folder-path Shared --expiry-in-minutes 30
uip resource bucket-files get-upload-url "$BUCKET_KEY" "inbox/incoming.pdf" \
  --folder-path Shared --expiry-in-minutes 30

uip resource bucket-files get-download-url "$BUCKET_KEY" "reports/summary.csv" \
  --folder-path Shared --expiry-in-minutes 30

Ambos devuelven una URL de tiempo limitado en el ámbito de la ruta de archivo única.

Colas y artículos en cola

Crear una cola

uip resource queues create InvoiceQueue \
  --folder-path Shared \
  --max-retries 3 \
  --retention-period 90
uip resource queues create InvoiceQueue \
  --folder-path Shared \
  --max-retries 3 \
  --retention-period 90

Lista completa de marcadores ( --auto-retry, --enforce-unique-reference, --encrypted, configuración de retención) en la referencia de colas.

Añadir un único elemento de trabajo

uip resource queue-items add InvoiceQueue \
  --folder-path Shared \
  --specific-content '{"InvoiceId":"INV-001","Amount":1500}' \
  --priority High
uip resource queue-items add InvoiceQueue \
  --folder-path Shared \
  --specific-content '{"InvoiceId":"INV-001","Amount":1500}' \
  --priority High

--specific-content es la carga útil JSON que leerá el robot.

Añadir en masa desde un archivo

cat > ./items.json <<'EOF'
[
  {"Name": "InvoiceQueue", "Priority": "Normal", "SpecificContent": {"InvoiceId":"INV-001"}},
  {"Name": "InvoiceQueue", "Priority": "Normal", "SpecificContent": {"InvoiceId":"INV-002"}}
]
EOF

ITEMS=$(jq -c . ./items.json)
uip resource queue-items bulk-add InvoiceQueue \
  --folder-path Shared \
  --queue-items "$ITEMS" \
  --commit-type StopOnFirstFailure
cat > ./items.json <<'EOF'
[
  {"Name": "InvoiceQueue", "Priority": "Normal", "SpecificContent": {"InvoiceId":"INV-001"}},
  {"Name": "InvoiceQueue", "Priority": "Normal", "SpecificContent": {"InvoiceId":"INV-002"}}
]
EOF

ITEMS=$(jq -c . ./items.json)
uip resource queue-items bulk-add InvoiceQueue \
  --folder-path Shared \
  --queue-items "$ITEMS" \
  --commit-type StopOnFirstFailure

--commit-type controla lo que sucede cuando una fila falla en la validación: ProcessAllIndependently (predeterminado), StopOnFirstFailure o AllOrNothing.

Inspeccionar elementos fallidos

uip resource queue-items list --folder-path Shared \
  --queue-name InvoiceQueue \
  --status Failed \
  --output-filter "Data[].{key:uniqueKey, ref:reference, reason:processingException}"
uip resource queue-items list --folder-path Shared \
  --queue-name InvoiceQueue \
  --status Failed \
  --output-filter "Data[].{key:uniqueKey, ref:reference, reason:processingException}"

Usa queue-items get-history en un solo uniqueKey para ver su historial completo de transición de estado, útil para diagnosticar bucles de reintento.

Marcar elementos fallidos para reintentar

uip resource queue-items set-review-status Retried \
  "<queue-item-key-1>" "<queue-item-key-2>"
uip resource queue-items set-review-status Retried \
  "<queue-item-key-1>" "<queue-item-key-2>"

set-review-status toma uno de Retried, Abandoned, Deleted.

Desencadenadores

Enumerar desencadenadores en una carpeta

uip resource triggers list --type time --folder-path Shared --enabled \
  --output-filter "Data[].{name:name, cron:startProcessCron, enabled:isEnabled}"
uip resource triggers list --type time --folder-path Shared --enabled \
  --output-filter "Data[].{name:name, cron:startProcessCron, enabled:isEnabled}"

Tres tipos de desencadenador: time, queue y api. Transfiera --type en cada verbo (el valor predeterminado es time). Los desencadenadores de API tienen ámbito de tenant: omite --folder-path.

Crear un desencadenador de tiempo

RELEASE_KEY=$(uip or processes list --folder-path Shared --name InvoiceProcessing \
  --output-filter "Data[0].Key" --output plain)

uip resource triggers create --type time \
  --name NightlyInvoices \
  --release-key "$RELEASE_KEY" \
  --runtime-type Unattended \
  --job-priority Normal \
  --folder-path Shared \
  --cron "0 0 2 * * ?" \
  --time-zone UTC
RELEASE_KEY=$(uip or processes list --folder-path Shared --name InvoiceProcessing \
  --output-filter "Data[0].Key" --output plain)

uip resource triggers create --type time \
  --name NightlyInvoices \
  --release-key "$RELEASE_KEY" \
  --runtime-type Unattended \
  --job-priority Normal \
  --folder-path Shared \
  --cron "0 0 2 * * ?" \
  --time-zone UTC

El valor --cron utiliza el formato de 6 campos de Quartz (sec min hour dayOfMonth month dayOfWeek), no el cron estándar. "0 0 2 * * ?" es "todos los días a las 02:00".

Habilitar o deshabilitar un desencadenador

uip resource triggers enable <trigger-key> --type time --folder-path Shared
uip resource triggers disable <trigger-key> --type time --folder-path Shared
uip resource triggers enable <trigger-key> --type time --folder-path Shared
uip resource triggers disable <trigger-key> --type time --folder-path Shared

Usa triggers history para diagnosticar un desencadenador que no se activa: el registro de activación muestra licencias faltantes, máquinas no disponibles y otros bloqueos ascendentes.

Webhooks

Los webhooks tienen ámbito de tenant. Crea una vez y el webhook se activa en cada evento coincidente en el tenant:

uip resource webhooks create --name JobAlerts \
  --url https://hooks.example.com/uipath \
  --events "job.completed,job.faulted" \
  --secret "$WEBHOOK_SECRET"
uip resource webhooks create --name JobAlerts \
  --url https://hooks.example.com/uipath \
  --events "job.completed,job.faulted" \
  --secret "$WEBHOOK_SECRET"

Enumera los tipos de eventos disponibles para un tenant:

uip resource webhooks event-types
uip resource webhooks event-types

Prueba la entrega sin esperar un evento real:

uip resource webhooks ping <webhook-key>
uip resource webhooks ping <webhook-key>

Librerías

Las bibliotecas tienen ámbito de tenant (no de carpeta): residen en la fuente del tenant y se referencian mediante ID de paquete como MyLib:1.0.0:

# Upload a new version
uip resource libraries upload --file ./MyLib.1.0.0.nupkg

# See all versions of a package
uip resource libraries versions MyLib

# Download a specific version
uip resource libraries download MyLib:1.0.0 --destination ./MyLib.1.0.0.nupkg
# Upload a new version
uip resource libraries upload --file ./MyLib.1.0.0.nupkg

# See all versions of a package
uip resource libraries versions MyLib

# Download a specific version
uip resource libraries download MyLib:1.0.0 --destination ./MyLib.1.0.0.nupkg

Las claves toman la forma PackageId:Version , no un GUID.

Consejos de scripting

  • Omita siempre --output-filter al introducir un único valor en una variable. Evita las invocaciones jq frágiles y se valida en tiempo de análisis de CLI: consulta Patrones de scripting.
  • Los verbos de lista devuelven resultados paginados : --limit / --offset en la mayoría, --continuation-token en los archivos de depósito. Los resultados vacíos (cero filas en Data) siguen saliendo 0 : la consulta de la lista se realizó correctamente; nada coincide.
  • La mayoría de los verbos de actualización/eliminación son multicarpeta : la tabla de marcas en la sección de cada verbo de uip resource lo dice explícitamente ("Carpeta cruzada"). Solo create y la lista necesitan el ámbito de la carpeta en esos recursos.

Ver también

¿Te ha resultado útil esta página?

Conectar

¿Necesita ayuda? Soporte

¿Quiere aprender? UiPath Academy

¿Tiene alguna pregunta? Foro de UiPath

Manténgase actualizado