Como Escrever um Objeto JSON em um Arquivo no PowerShell
- Objetos Personalizados do PowerShell
- Objeto JSON do PowerShell para String JSON
-
Salvar String JSON em um Arquivo Usando
ConvertTo-Json
eOut-File
-
Salvar String JSON em um Arquivo Usando
ConvertTo-Json
eSet-Content
-
Salvar String JSON em um Arquivo Usando
ConvertTo-Json
eAdd-Content
- Conclusão

PowerShell, uma linguagem de script robusta e versátil, fornece ferramentas poderosas para gerenciar e manipular dados. Quando se trata de lidar com dados JSON (Notação de Objetos JavaScript), o PowerShell oferece maneiras eficientes de converter objetos personalizados em strings JSON e, subsequentemente, escrevê-los em arquivos.
Neste artigo, vamos nos aprofundar no processo de conversão de objetos do PowerShell em strings JSON e salvá-los em arquivos usando vários cmdlets como ConvertTo-Json
, Out-File
, Set-Content
e Add-Content
.
Objetos Personalizados do PowerShell
O PSCustomObject
é um elemento fundamental no PowerShell usado para definir objetos personalizados. Um objeto personalizado geralmente contém propriedades e seus valores associados, fornecendo uma maneira estruturada de organizar dados.
Além de criar objetos personalizados do zero, o PowerShell também é proficiente em lidar e processar objetos JSON de forma eficiente.
Criando um Objeto Personalizado JSON
Vamos começar examinando como criar um objeto personalizado JSON usando uma estrutura JSON de exemplo. Armazenaremos essa estrutura JSON na variável $MyJsonVar
.
$MyJsonVar = @"
{
"ExampleJson":{
"Fruit1":{
"Name":"Apple",
"Price":"`$10.00"
}
}
}
"@
Saída:
Neste exemplo, definimos uma estrutura JSON representando informações sobre frutas.
Convertendo JSON em Objeto Personalizado do PowerShell
Para converter a representação JSON em um Objeto Personalizado do PowerShell, utilizamos o cmdlet ConvertFrom-JSON
. Vamos atribuir o novo objeto JSON criado à variável $MyJsonObject
.
$MyJsonObject = $MyJsonVar | ConvertFrom-Json
O cmdlet ConvertFrom-JSON
transforma a estrutura JSON em um PSCustomObject
apropriado.
Exibindo o Objeto Personalizado do PowerShell Criado
Agora, vamos exibir o recém-criado PSCustomObject
, que corresponde à estrutura JSON original.
$MyJsonObject
Saída:
Esses comandos acessam e exibem as propriedades de preço e nome da fruta definida no objeto personalizado. Portanto, foi confirmado que temos um objeto personalizado adequado do PowerShell chamado $MyJsonObject
.
Objeto JSON do PowerShell para String JSON
O PowerShell oferece o cmdlet ConvertTo-Json
, uma ferramenta valiosa para converter um objeto personalizado existente em uma string JSON. Este processo transforma efetivamente o objeto em uma representação de texto simples no formato JSON, que pode ser utilizada ou armazenada conforme necessário.
Sintaxe do cmdlet ConvertTo-Json
:
ConvertTo-Json
[-InputObject] <Object>
[-Depth <Int32>]
[-Compress]
[-EnumsAsStrings]
[-AsArray]
[-EscapeHandling <StringEscapeHandling>]
[<CommonParameters>]
O cmdlet ConvertTo-Json
fornece vários parâmetros opcionais para personalizar o processo de conversão JSON. Aqui está uma descrição desses parâmetros:
-
-InputObject
: Este parâmetro é fundamental, pois designa o objeto personalizado que precisa ser convertido em uma string JSON. Você pode passar o objeto diretamente para este parâmetro. -
-Depth
: Este parâmetro crucial permite especificar o número de níveis na string JSON resultante. A profundidade indica quantos níveis de objetos ou arrays aninhados serão incluídos na string JSON.No entanto, deve ser usado judiciosamente, pois o uso inadequado pode levar à perda de dados. O valor padrão é definido como 2.
-
-Compress
: Este parâmetro comprime a saída JSON removendo espaços em branco e indentação desnecessários, resultando em uma string JSON mais compacta. -
-EnumsAsStrings
: Quando usado, este parâmetro representa valores de enumeração como strings na saída JSON, garantindo compatibilidade com sistemas que podem não lidar bem com enumerações numéricas.
-
-AsArray
: Quando especificado, este parâmetro formata a saída como um array JSON, mesmo que o objeto de entrada não seja um array. -
-EscapeHandling
: Este parâmetro permite personalizar como caracteres especiais são escapados na string JSON, fornecendo opções comoDefault
,EscapeNonAscii
,EscapeHtml
eDoNotEscape
.
Para demonstrar o uso do cmdlet ConvertTo-Json
, vamos considerar o objeto personalizado na seção anterior ($MyJsonObject
):
Podemos passar um objeto personalizado para o cmdlet ConvertTo-Json
facilmente. Podemos enviar o $MyJsonObject
através do pipe (|
) para transformar o objeto personalizado em uma string JSON.
$MyJsonObject | ConvertTo-Json
Saída:
Vamos demonstrar ainda mais o uso do cmdlet ConvertTo-Json
. Vamos considerar um objeto personalizado chamado $AnotherJsonObject
:
$AnotherJsonObject = @{
Name = "John Doe"
Age = 30
IsActive = $true
Hobbies = @("Reading", "Gardening")
Address = @{
Street = "1234 Elm St"
City = "Anytown"
Country = "USA"
}
}
Para converter este objeto em uma string JSON e exibir a saída, use o seguinte comando:
$AnotherJsonObject | ConvertTo-Json
A saída dessa transformação é uma string JSON ilustrativa representando o 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, a saída mostra um objeto estruturado ($AnotherJsonObject
) representando informações pessoais, como nome, idade, status de atividade, hobbies e detalhes de endereço de uma pessoa.
Salvar String JSON em um Arquivo Usando ConvertTo-Json
e Out-File
Uma vez que você obteve uma string JSON usando o cmdlet ConvertTo-Json
no PowerShell, o próximo passo lógico é salvá-la em um arquivo para uso posterior ou compartilhamento. Felizmente, o PowerShell fornece vários métodos para fazer isso, sendo um dos mais simples o uso de Out-File
.
O cmdlet Out-File
é uma ferramenta confiável para salvar a string JSON em um arquivo. Abaixo está um exemplo ilustrando como alcançar isso:
$MyJsonObject | ConvertTo-Json | Out-File -FilePath "D:\path\to\example.json"
Saída:
Neste exemplo, $MyJsonObject
representa a variável contendo a string JSON gerada usando ConvertTo-Json
. O pipeline (|
) então passa essa string JSON para Out-File
para escrita em um arquivo.
O parâmetro -FilePath
especifica o caminho de destino para a string JSON. Basta substituir "D:\path\to\example.json"
pelo caminho de arquivo desejado onde você pretende salvar o conteúdo JSON.
Ao usar Out-File
dessa maneira, você persiste de forma eficiente seus dados JSON em um arquivo, tornando-o acessível para uso futuro ou compartilhamento. Essa técnica simples, mas poderosa, é instrumental na gestão efetiva de dados JSON dentro de um ambiente PowerShell.
Salvar String JSON em um Arquivo Usando ConvertTo-Json
e Set-Content
Outra maneira de salvar a string JSON em um arquivo é usando o cmdlet Set-Content
. O cmdlet Set-Content
oferece uma maneira direta de escrever dados em um arquivo, tornando-o uma escolha adequada para salvar uma string JSON em disco.
O seguinte exemplo demonstra esse processo:
$MyJsonObject | ConvertTo-Json | Set-Content -Path "D:\path\to\example.json"
Neste exemplo, $MyJsonObject
é a variável contendo a string JSON gerada usando ConvertTo-Json
. O pipeline (|
) passa essa string JSON para Set-Content
para escrita em um arquivo.
O parâmetro -Path
especifica o caminho de destino para a string JSON. Basta substituir "D:\path\to\example.json"
pelo caminho de arquivo desejado onde você pretende salvar o conteúdo JSON.
Salvar String JSON em um Arquivo Usando ConvertTo-Json
e Add-Content
Outro método que podemos usar para salvar uma string JSON em um arquivo no PowerShell é o cmdlet Add-Content
, que permite anexar a string JSON a um arquivo existente. O seguinte exemplo demonstra como alcançar isso:
$MyJsonObject | ConvertTo-Json | Add-Content -Path "D:\path\to\example.json"
Neste exemplo, $MyJsonObject
representa a variável contendo a string JSON gerada usando ConvertTo-Json
. O pipeline (|
) passa essa string JSON para Add-Content
para anexar a um arquivo especificado pelo parâmetro -Path
.
O parâmetro -Path
indica o arquivo ao qual a string JSON será anexada. Basta substituir "D:\path\to\example.json"
pelo caminho de arquivo desejado onde você pretende anexar o conteúdo JSON.
O cmdlet Add-Content
oferece uma maneira conveniente de adicionar ou anexar conteúdo a um arquivo sem sobrescrever os dados existentes. Isso é especialmente útil ao lidar com strings JSON que precisam ser atualizadas ou estendidas ao longo do tempo.
Conclusão
Este artigo demonstrou o processo de conversão de objetos do PowerShell em strings JSON e salvá-los em arquivos usando o cmdlet ConvertTo-Json
, juntamente com outros cmdlets de manipulação de arquivos, como Out-File
, Set-Content
e Add-Content
.
Ao aproveitar essas ferramentas, os usuários podem gerenciar eficazmente dados JSON, permitindo uma gestão de dados, compartilhamento e integração simplificados com diversas aplicações e 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.