Cómo escribir un objeto JSON en un archivo en PowerShell
- Objetos Personalizados de PowerShell
- Objeto JSON de PowerShell a Cadena JSON
-
Guardar Cadena JSON en un Archivo Usando
ConvertTo-Json
yOut-File
-
Guardar Cadena JSON en un Archivo Usando
ConvertTo-Json
ySet-Content
-
Guardar Cadena JSON en un Archivo Usando
ConvertTo-Json
yAdd-Content
- Conclusión

PowerShell, un lenguaje de scripting robusto y versátil, proporciona herramientas poderosas para gestionar y manipular datos. Cuando se trata de manejar datos JSON (Notación de Objetos de JavaScript), PowerShell ofrece formas eficientes de convertir objetos personalizados en cadenas JSON y, posteriormente, escribirlas en archivos.
En este artículo, profundizaremos en el proceso de conversión de objetos de PowerShell a cadenas JSON y guardarlas en archivos usando varios cmdlets como ConvertTo-Json
, Out-File
, Set-Content
y Add-Content
.
Objetos Personalizados de PowerShell
El PSCustomObject
es un elemento fundamental en PowerShell utilizado para definir objetos personalizados. Un objeto personalizado contiene típicamente propiedades y sus valores asociados, proporcionando una forma estructurada de organizar datos.
Además de crear objetos personalizados desde cero, PowerShell también es hábil en el manejo y procesamiento eficiente de objetos JSON.
Creando un Objeto JSON Personalizado
Comencemos examinando cómo crear un objeto JSON personalizado utilizando una estructura JSON de ejemplo. Almacenaremos esta estructura JSON en la variable $MyJsonVar
.
$MyJsonVar = @"
{
"ExampleJson":{
"Fruit1":{
"Name":"Apple",
"Price":"`$10.00"
}
}
}
"@
Salida:
En este ejemplo, hemos definido una estructura JSON que representa información sobre frutas.
Convirtiendo JSON a Objeto Personalizado de PowerShell
Para convertir la representación JSON en un Objeto Personalizado de PowerShell, utilizamos el cmdlet ConvertFrom-JSON
. Asignemos el nuevo objeto JSON creado a la variable $MyJsonObject
.
$MyJsonObject = $MyJsonVar | ConvertFrom-Json
El cmdlet ConvertFrom-JSON
transforma la estructura JSON en un PSCustomObject
adecuado.
Mostrando el Objeto Personalizado de PowerShell Creado
Ahora, mostremos el PSCustomObject
recién creado, que corresponde a la estructura JSON original.
$MyJsonObject
Salida:
Estos comandos acceden y muestran las propiedades de precio y nombre de la fruta definida en el objeto personalizado. Así, se ha confirmado que obtuvimos un objeto personalizado de PowerShell llamado $MyJsonObject
.
Objeto JSON de PowerShell a Cadena JSON
PowerShell ofrece el cmdlet ConvertTo-Json
, una herramienta valiosa para convertir un objeto personalizado existente en una cadena JSON. Este proceso transforma efectivamente el objeto en una representación de texto plano en formato JSON, que puede ser utilizada o almacenada según sea necesario.
Sintaxis del cmdlet ConvertTo-Json
:
ConvertTo-Json
[-InputObject] <Object>
[-Depth <Int32>]
[-Compress]
[-EnumsAsStrings]
[-AsArray]
[-EscapeHandling <StringEscapeHandling>]
[<CommonParameters>]
El cmdlet ConvertTo-Json
proporciona varios parámetros opcionales para personalizar el proceso de conversión a JSON. Aquí hay un desglose de estos parámetros:
-
-InputObject
: Este parámetro es fundamental, ya que designa el objeto personalizado que requiere conversión a una cadena JSON. Puedes pasar el objeto directamente a este parámetro. -
-Depth
: Este parámetro crucial te permite especificar el número de niveles en la cadena JSON resultante. La profundidad indica cuántos niveles de objetos o arreglos anidados se incluirán en la cadena JSON.Sin embargo, debe ser utilizado con juicio, ya que un uso inadecuado puede llevar a la pérdida de datos. El valor predeterminado está configurado en 2.
-
-Compress
: Este parámetro comprime la salida JSON al eliminar espacios en blanco innecesarios e identaciones, resultando en una cadena JSON más compacta. -
-EnumsAsStrings
: Cuando se usa, este parámetro representa los valores de enumeración como cadenas en la salida JSON, asegurando compatibilidad con sistemas que pueden no manejar adecuadamente enumeraciones numéricas.
-
-AsArray
: Cuando se especifica, este parámetro formatea la salida como un arreglo JSON, incluso si el objeto de entrada no es un arreglo. -
-EscapeHandling
: Este parámetro permite personalizar cómo se escapan los caracteres especiales en la cadena JSON, proporcionando opciones comoDefault
,EscapeNonAscii
,EscapeHtml
yDoNotEscape
.
Para demostrar el uso del cmdlet ConvertTo-Json
, consideremos el objeto personalizado en la sección anterior ($MyJsonObject
):
Podemos encadenar un objeto personalizado al cmdlet ConvertTo-Json
fácilmente. Podemos enviar el $MyJsonObject
a través del pipe (|
) para transformar el objeto personalizado en una cadena JSON.
$MyJsonObject | ConvertTo-Json
Salida:
Demostremos además el uso del cmdlet ConvertTo-Json
. Consideremos un objeto personalizado llamado $AnotherJsonObject
:
$AnotherJsonObject = @{
Name = "John Doe"
Age = 30
IsActive = $true
Hobbies = @("Reading", "Gardening")
Address = @{
Street = "1234 Elm St"
City = "Anytown"
Country = "USA"
}
}
Para convertir este objeto en una cadena JSON y mostrar la salida, usa el siguiente comando:
$AnotherJsonObject | ConvertTo-Json
La salida de esta transformación es una cadena JSON ilustrativa que representa el objeto personalizado original.
{
"Name": "John Doe",
"Age": 30,
"IsActive": true,
"Hobbies": [
"Reading",
"Gardening"
],
"Address": {
"Street": "1234 Elm St",
"City": "Anytown",
"Country": "USA"
}
}
Como podemos ver, la salida muestra un objeto estructurado ($AnotherJsonObject
) que representa información personal como nombre, edad, estado de actividad, pasatiempos y detalles de la dirección de una persona.
Guardar Cadena JSON en un Archivo Usando ConvertTo-Json
y Out-File
Una vez que has obtenido una cadena JSON usando el cmdlet ConvertTo-Json
en PowerShell, el siguiente paso lógico es guardarla en un archivo para su uso posterior o intercambio. Afortunadamente, PowerShell proporciona varios métodos para lograr esto, siendo uno de los más sencillos el uso de Out-File
.
El cmdlet Out-File
es una herramienta confiable para guardar la cadena JSON en un archivo. A continuación se muestra un ejemplo que ilustra cómo lograr esto:
$MyJsonObject | ConvertTo-Json | Out-File -FilePath "D:\path\to\example.json"
Salida:
En este ejemplo, $MyJsonObject
representa la variable que contiene la cadena JSON generada usando ConvertTo-Json
. El pipeline (|
) pasa esta cadena JSON a Out-File
para escribirla en un archivo.
El parámetro -FilePath
especifica la ruta de destino para la cadena JSON. Simplemente reemplaza "D:\path\to\example.json"
con la ruta de archivo deseada donde pretendes guardar el contenido JSON.
Al usar Out-File
de esta manera, persistes de manera eficiente tus datos JSON en un archivo, haciéndolos accesibles para uso futuro o intercambio. Esta técnica simple pero poderosa es instrumental en la gestión efectiva de datos JSON dentro de un entorno PowerShell.
Guardar Cadena JSON en un Archivo Usando ConvertTo-Json
y Set-Content
Otra forma de guardar la cadena JSON en un archivo es utilizando el cmdlet Set-Content
. El cmdlet Set-Content
proporciona una forma sencilla de escribir datos en un archivo, lo que lo convierte en una opción adecuada para guardar una cadena JSON en disco.
El siguiente ejemplo demuestra este proceso:
$MyJsonObject | ConvertTo-Json | Set-Content -Path "D:\path\to\example.json"
En este ejemplo, $MyJsonObject
es la variable que contiene la cadena JSON generada usando ConvertTo-Json
. El pipeline (|
) pasa esta cadena JSON a Set-Content
para escribirla en un archivo.
El parámetro -Path
especifica la ruta de destino para la cadena JSON. Simplemente reemplaza "D:\path\to\example.json"
con la ruta de archivo deseada donde pretendes guardar el contenido JSON.
Guardar Cadena JSON en un Archivo Usando ConvertTo-Json
y Add-Content
Otro método que podemos usar para guardar una cadena JSON en un archivo en PowerShell es el cmdlet Add-Content
, que permite agregar la cadena JSON a un archivo existente. El siguiente ejemplo demuestra cómo lograr esto:
$MyJsonObject | ConvertTo-Json | Add-Content -Path "D:\path\to\example.json"
En este ejemplo, $MyJsonObject
representa la variable que contiene la cadena JSON generada usando ConvertTo-Json
. El pipeline (|
) pasa esta cadena JSON a Add-Content
para agregarla a un archivo especificado por el parámetro -Path
.
El parámetro -Path
significa el archivo al que se añadirá la cadena JSON. Simplemente reemplaza "D:\path\to\example.json"
con la ruta de archivo deseada donde pretendes agregar el contenido JSON.
El cmdlet Add-Content
ofrece una forma conveniente de agregar o anexar contenido a un archivo sin sobrescribir los datos existentes. Esto es especialmente útil cuando se trabaja con cadenas JSON que necesitan ser actualizadas o ampliadas con el tiempo.
Conclusión
Este artículo ha demostrado el proceso de conversión de objetos de PowerShell a cadenas JSON y su almacenamiento en archivos utilizando el cmdlet ConvertTo-Json
, junto con otros cmdlets de manejo de archivos como Out-File
, Set-Content
y Add-Content
.
Al aprovechar estas herramientas, los usuarios pueden manejar datos JSON de manera eficiente, permitiendo una gestión de datos simplificada, intercambio e integración con diversas aplicaciones y sistemas.
Nimesha is a Full-stack Software Engineer for more than five years, he loves technology, as technology has the power to solve our many problems within just a minute. He have been contributing to various projects over the last 5+ years and working with almost all the so-called 03 tiers(DB, M-Tier, and Client). Recently, he has started working with DevOps technologies such as Azure administration, Kubernetes, Terraform automation, and Bash scripting as well.