Cómo usar Start-Transcript en PowerShell

Cuando ejecute scripts de PowerShell automáticamente, necesitará una forma de registrar cualquier error o advertencia que ocurra.

Una opción es crear su propia función de registro, pero hay una manera más fácil, el cmdlet Start-Transcript.

El cmdlet Start-Transcript escribe todo lo que sucede durante una sesión en un archivo de registro.

Estos son los comandos que ingresa en una sesión de PowerShell y todos los resultados que normalmente aparecen en la consola.

Puede usar esto durante su sesión normal de PowerShell, pero es más útil para crear archivos de registro.

En este artículo, veremos cómo usar el cmdlet Start-Transcript.

Usando Start-Transcript en PowerShell

El cmdlet Start-Transcript en PowerShell es bastante sencillo de usar. Solo viene con un par de parámetros y, de forma predeterminada, ni siquiera tiene que especificar una ruta de archivo.

Parámetro Descripción
-Sendero Ubicación del archivo de transcripción (registro)
-Adjuntar Agregar contenido a un archivo existente
-Fuerza Sobrescribir archivos con indicador de solo lectura
-NoClobber Evitar la sobrescritura de archivos existentes
-Incluir encabezado de invocación Agregar la marca de tiempo a un comando en el archivo de registro
-Usar encabezado mínimo Anteponga un encabezado corto en lugar del encabezado completo (PS6+)
-Directorio de salida Especifique el directorio de salida (el nombre del archivo se creará automáticamente)
Parámetros de Transcripción de inicio

Hay dos formas de usar el cmdlet Start-Transcript en PowerShell. Puede iniciar la transcripción en su sesión de PowerShell o incluirla en su secuencia de comandos.

Sin ningún parámetro, la transcripción se guardará en la carpeta de documentos del usuario. El nombre del archivo se generará automáticamente y consta del nombre del dispositivo, caracteres aleatorios seguidos de una marca de tiempo.

c:\users\name\documents\PowerShell_transcript.DEVICENAME.qp9EOTN2.20220301132612.txt

Los caracteres aleatorios aseguran que el nombre del archivo sea único cuando se inician dos sesiones de PowerShell simultáneamente.

Para iniciar la transcripción simplemente podemos usar el cmdlet Start-Transcript. Luego, después de haber ejecutado los scripts que queremos ejecutar, podemos detener la transcripción con Stop-Transcript.

transcripción de inicio en PowerShell
Transcripción de inicio en PowerShell

La transcripción también contendrá toda la información que ve en la consola, incluido un encabezado muy detallado con información del host que ha utilizado:

Transcripción de Powershell
Resultado de la transcripción de PowerShell

Ruta y directorio de salida

La ruta predeterminada es excelente cuando solo usa PowerShell en su propia máquina.

Pero la mayoría de las veces desea centralizar los archivos de registro. Hay dos opciones para esto, podemos usar el -Path parámetro o el -OutputDirectory parámetro para esto.

Con ruta, necesitaremos especificar la ruta completa, incluido el nombre del archivo.

Esto es útil cuando desea tener un solo archivo de registro para un script y agregar todas las transcripciones en un solo archivo.

# Append the transcript to a mfastatus-result.log file.
Start-Transcript -Path c:\logfiles\mfastatus-result.log -Append

# Or use -NoClobber to prevent overwriting of existing files
Start-Transcript -Path c:\logfiles\mfastatus-result.log -NoClobber

También puede usar el parámetro -path sin agregar, pero tenga en cuenta que el parámetro Start-Transcript sobrescribirá de manera predeterminada cualquier contenido existente en el archivo.

Otra opción es utilizar el -OutputDirectory parámetro. De esta manera, podemos especificar el directorio donde queremos almacenar el archivo de registro y permitir que el cmdlet cree el nombre de archivo único.

Start-Transcript -OutputDirectory c:\temp\logfiles

# Result:
Transcript started, output file is c:\temp\logfiles\PowerShell_transcript.WIN11-LAB02.uftVAXsv.20220301045218.txt

Encabezado mínimo

Cada transcripción comienza con un encabezado completamente detallado con información sobre el anfitrión.

Cuando se usa esto para el registro de scripts que se ejecutan automáticamente, esta información es demasiado. En PowerShell 6 y superior, podemos usar el parámetro -UseMinimalHeader para esto.

Esto limitará la información del encabezado a solo una marca de tiempo de cuando se inició la transcripción:

Start-Transcript -OutputDirectory c:\temp\logfiles -UseMinimalDeader

# Start of transcript with minimalheader
**********************
PowerShell transcript start
Start time: 20220301135543
**********************

Incluir encabezado de invocación

El encabezado de invocación incluye una marca de tiempo antes de cada paso o comando en la transcripción.

Esto es especialmente útil cuando tiene un script grande que tarda algún tiempo en ejecutarse.

Start-Transcript -OutputDirectory c:\temp\logfiles -IncludeInvocationHeader

**********************
Transcript started, output file is c:\temp\logfiles\PowerShell_transcript.WIN11-LAB02.VKwZ2RF5.20220301050111.txt
**********************
Command start time: 20220301050122 
**********************
PS C:\> .\Temp\Test-SMTP.ps1

Use Start-Transcript dentro de un script de PowerShell

Además de iniciar la transcripción manualmente desde la terminal en PowerShell, por supuesto, también puede incluir el cmdlet dentro de su secuencia de comandos. Simplemente inicie su secuencia de comandos de PowerShell con Start-Transcript y finalice su secuencia de comandos con Stop-Transcript:

Start-Transcript -OutputDirectory c:\temp\Logfiles -UseMinimalHeader

# Your script here

Stop-Transcript

Terminando

El cmdlet Start-Transcript es una gran herramienta cuando está depurando nuevos scripts que se ejecutan automáticamente.

Personalmente, no lo uso mucho, prefiero una función de registro combinada con bloques Try-Catch, por ejemplo, dentro del script para un mejor manejo de errores.

Cuando desee usar la transcripción para ver su historial de comandos, tenga en cuenta que también puede usar el cmdlet Get-History en PowerShell.

Esto mostrará todos los comandos que ingresó durante su sesión de PowerShell.

Si tiene alguna pregunta, simplemente deje un comentario a continuación.

Otros artículos relacionados

PSDrive - Cómo usar la alternativa PowerShell Net Use

PSDrive – Cómo usar la alternativa PowerShell Net Use

Todos conocemos el comando Net Use que podemos usar para mapear unidades de red desde la línea de comandos. Aunque ...
Leer Más
Cómo ejecutar un script de PowerShell

Cómo ejecutar un script de PowerShell

Los scripts de PowerShell son una excelente manera de automatizar tareas, recopilar información o modificar propiedades de forma masiva. La ...
Leer Más
Uso de PowerShell para actualizar un usuario de AD desde un archivo CSV

Uso de PowerShell para actualizar un usuario de AD desde un archivo CSV

Necesitaba actualizar un grupo de usuarios de AD con sus nuevos títulos de trabajo. Ha comenzado un nuevo año y ...
Leer Más
PowerShell For Loop, ForEach y Do While/Hasta que se explique

PowerShell For Loop, ForEach y Do While/Hasta que se explique

Una de las funciones más fundamentales en la programación además de "If, Else" son los bucles. Le permiten procesar datos ...
Leer Más
Cómo instalar el módulo Microsoft Graph en PowerShell

Cómo instalar el módulo Microsoft Graph en PowerShell

La API de Microsoft Graph nos permite interactuar con todos los servicios de Microsoft a través de una única fuente ...
Leer Más
Cómo usar Import-CSV en PowerShell

Cómo usar Import-CSV en PowerShell

Cuando trabajamos con PowerShell, podemos usar archivos CSV para importar datos a los sistemas o usarlos como una lista de ...
Leer Más

Deja un comentario