PowerShell에서 JSON 객체를 파일에 쓰는 방법
- PowerShell 사용자 정의 객체
- PowerShell JSON 객체를 JSON 문자열로 변환
-
ConvertTo-Json
및Out-File
을 사용하여 JSON 문자열을 파일에 저장 -
ConvertTo-Json
및Set-Content
를 사용하여 JSON 문자열을 파일에 저장 -
ConvertTo-Json
및Add-Content
를 사용하여 JSON 문자열을 파일에 저장 - 결론

PowerShell은 강력하고 다재다능한 스크립팅 언어로, 데이터 관리 및 조작을 위한 강력한 도구를 제공합니다. JSON(자바스크립트 객체 표기법) 데이터를 처리하는 데 있어서 PowerShell은 사용자 정의 객체를 JSON 문자열로 변환하고 이를 파일에 저장하는 효율적인 방법을 제공합니다.
이 글에서는 PowerShell 객체를 JSON 문자열로 변환하고 ConvertTo-Json
, Out-File
, Set-Content
, Add-Content
와 같은 다양한 cmdlet을 사용하여 이를 파일에 저장하는 과정을 살펴보겠습니다.
PowerShell 사용자 정의 객체
PSCustomObject
는 PowerShell에서 사용자 정의 객체를 정의하는 데 사용되는 기본 요소입니다. 사용자 정의 객체는 일반적으로 속성과 관련된 값을 포함하여 데이터를 구조화된 방식으로 구성할 수 있습니다.
PowerShell은 사용자 정의 객체를 처음부터 만드는 것 외에도 JSON 객체를 효율적으로 처리하고 처리하는 데 능숙합니다.
JSON 사용자 정의 객체 만들기
예제 JSON 구조를 사용하여 JSON 사용자 정의 객체를 만드는 방법을 살펴보겠습니다. 이 JSON 구조를 $MyJsonVar
변수에 저장하겠습니다.
$MyJsonVar = @"
{
"ExampleJson":{
"Fruit1":{
"Name":"Apple",
"Price":"`$10.00"
}
}
}
"@
출력:
이 예제에서는 과일 정보를 나타내는 JSON 구조를 정의했습니다.
JSON을 PowerShell 사용자 정의 객체로 변환
JSON 표현을 PowerShell 사용자 정의 객체로 변환하기 위해 ConvertFrom-JSON
cmdlet을 사용합니다. 새로 생성된 JSON 객체를 $MyJsonObject
변수에 할당하겠습니다.
$MyJsonObject = $MyJsonVar | ConvertFrom-Json
ConvertFrom-JSON
cmdlet은 JSON 구조를 적절한 PSCustomObject
로 변환합니다.
생성된 PowerShell 사용자 정의 객체 표시
이제 원래 JSON 구조에 해당하는 새로 생성된 PSCustomObject
를 표시하겠습니다.
$MyJsonObject
출력:
이 명령은 사용자 정의 객체에 정의된 과일의 가격과 이름 속성을 접근하고 표시합니다. 따라서 우리는 $MyJsonObject
라는 적절한 PowerShell 사용자 정의 객체를 얻었음을 확인했습니다.
PowerShell JSON 객체를 JSON 문자열로 변환
PowerShell은 기존 사용자 정의 객체를 JSON 문자열로 변환하는 데 유용한 도구인 ConvertTo-Json
cmdlet을 제공합니다. 이 과정은 객체를 JSON 형식의 일반 텍스트 표현으로 효과적으로 변환하여 필요에 따라 추가로 활용하거나 저장할 수 있게 합니다.
ConvertTo-Json
cmdlet의 구문:
ConvertTo-Json
[-InputObject] <Object>
[-Depth <Int32>]
[-Compress]
[-EnumsAsStrings]
[-AsArray]
[-EscapeHandling <StringEscapeHandling>]
[<CommonParameters>]
ConvertTo-Json
cmdlet은 JSON 변환 과정을 사용자 정의할 수 있는 여러 선택적 매개변수를 제공합니다. 다음은 이러한 매개변수의 설명입니다:
-
-InputObject
: 이 매개변수는 기본으로, JSON 문자열로 변환이 필요한 사용자 정의 객체를 지정합니다. 객체를 이 매개변수에 직접 전달할 수 있습니다. -
-Depth
: 이 중요한 매개변수는 결과 JSON 문자열에 포함될 계층의 수를 지정할 수 있게 해줍니다. 깊이는 JSON 문자열에 포함될 중첩 객체나 배열의 수준 수를 나타냅니다.그러나 부적절한 사용은 데이터 손실을 초래할 수 있으므로 신중하게 사용해야 합니다. 기본값은 2로 설정되어 있습니다.
-
-Compress
: 이 매개변수는 불필요한 공백과 들여쓰기를 제거하여 출력 JSON을 압축하여 더 간결한 JSON 문자열을 만듭니다. -
-EnumsAsStrings
: 이 매개변수를 사용할 경우, JSON 출력에서 열거형 값을 문자열로 표현하여 숫자 열거형을 제대로 처리하지 못할 수 있는 시스템과의 호환성을 보장합니다.
-
-AsArray
: 지정할 경우, 이 매개변수는 입력 객체가 배열이 아니더라도 출력을 JSON 배열 형식으로 포맷합니다. -
-EscapeHandling
: 이 매개변수는 JSON 문자열에서 특수 문자가 어떻게 이스케이프되는지 사용자 정의할 수 있게 해준며,Default
,EscapeNonAscii
,EscapeHtml
,DoNotEscape
와 같은 옵션을 제공합니다.
ConvertTo-Json
cmdlet의 사용을 설명하기 위해 이전 섹션의 사용자 정의 객체($MyJsonObject
)를 고려해 보겠습니다:
사용자 정의 객체를 ConvertTo-Json
cmdlet에 쉽게 파이프할 수 있습니다. $MyJsonObject
를 파이프(|
)로 보내 사용자 정의 객체를 JSON 문자열로 변환할 수 있습니다.
$MyJsonObject | ConvertTo-Json
출력:
ConvertTo-Json
cmdlet의 사용을 더 설명해 보도록 하겠습니다. $AnotherJsonObject
라는 사용자 정의 객체를 생각해 보겠습니다:
$AnotherJsonObject = @{
Name = "John Doe"
Age = 30
IsActive = $true
Hobbies = @("Reading", "Gardening")
Address = @{
Street = "1234 Elm St"
City = "Anytown"
Country = "USA"
}
}
이 객체를 JSON 문자열로 변환하고 출력을 표시하려면 다음 명령을 사용하십시오:
$AnotherJsonObject | ConvertTo-Json
이 변환의 출력은 원래 사용자 정의 객체를 나타내는 설명적인 JSON 문자열입니다.
{
"Name": "John Doe",
"Age": 30,
"IsActive": true,
"Hobbies": [
"Reading",
"Gardening"
],
"Address": {
"Street": "1234 Elm St",
"City": "Anytown",
"Country": "USA"
}
}
출력은 개인의 이름, 나이, 활동 상태, 취미 및 주소 상세 정보를 나타내는 구조화된 객체($AnotherJsonObject
)를 보여줍니다.
ConvertTo-Json
및 Out-File
을 사용하여 JSON 문자열을 파일에 저장
PowerShell에서 ConvertTo-Json
cmdlet을 사용하여 JSON 문자열을 얻은 후, 다음 단계는 나중에 사용하거나 공유하기 위해 파일에 저장하는 것입니다. 다행히 PowerShell은 이를 수행하는 여러 가지 방법을 제공하며, 그 중 가장 간단한 방법 중 하나는 Out-File
을 사용하는 것입니다.
Out-File
cmdlet은 JSON 문자열을 파일에 저장하는 신뢰할 수 있는 도구입니다. 아래는 이를 달성하는 방법을 설명하는 예제입니다:
$MyJsonObject | ConvertTo-Json | Out-File -FilePath "D:\path\to\example.json"
출력:
이 예제에서 $MyJsonObject
는 ConvertTo-Json
을 사용하여 생성된 JSON 문자열을 포함하는 변수를 나타냅니다. 그런 다음 파이프라인(|
)이 이 JSON 문자열을 파일에 쓰기 위해 Out-File
로 전달합니다.
-FilePath
매개변수는 JSON 문자열의 목적지 경로를 지정합니다. "D:\path\to\example.json"
을 원하는 파일 경로로 바꾸어 JSON 내용을 저장할 위치를 지정하십시오.
이렇게 Out-File
을 사용함으로써 JSON 데이터를 효율적으로 파일에 지속시켜 향후 사용이나 공유를 할 수 있습니다. 이 간단하면서도 강력한 기술은 PowerShell 환경 내에서 JSON 데이터를 효과적으로 관리하는 데 기여합니다.
ConvertTo-Json
및 Set-Content
를 사용하여 JSON 문자열을 파일에 저장
JSON 문자열을 파일에 저장하는 또 다른 방법은 Set-Content
cmdlet을 사용하는 것입니다. Set-Content
cmdlet은 데이터를 파일에 쓰는 간단한 방법을 제공하므로 JSON 문자열을 디스크에 저장하는 데 적합한 선택입니다.
다음 예제가 이 과정을 보여줍니다:
$MyJsonObject | ConvertTo-Json | Set-Content -Path "D:\path\to\example.json"
이 예제에서 $MyJsonObject
는 ConvertTo-Json
을 사용하여 생성된 JSON 문자열을 포함하는 변수를 나타냅니다. 파이프라인(|
)은 이 JSON 문자열을 파일에 쓰기 위해 Set-Content
로 전달합니다.
-Path
매개변수는 JSON 문자열의 목적지 경로를 지정합니다. "D:\path\to\example.json"
을 원하는 파일 경로로 바꾸어 JSON 내용을 저장할 위치를 지정하십시오.
ConvertTo-Json
및 Add-Content
를 사용하여 JSON 문자열을 파일에 저장
PowerShell에서 JSON 문자열을 파일에 저장하는 또 다른 방법은 Add-Content
cmdlet을 사용하는 것입니다. 이 방법은 JSON 문자열을 기존 파일에 추가할 수 있습니다. 다음 예제가 이를 달성하는 방법을 보여줍니다:
$MyJsonObject | ConvertTo-Json | Add-Content -Path "D:\path\to\example.json"
이 예제에서 $MyJsonObject
는 ConvertTo-Json
을 사용하여 생성된 JSON 문자열을 포함하는 변수를 나타냅니다. 파이프라인(|
)은 이 JSON 문자열을 -Path
매개변수로 지정된 파일에 추가하기 위해 Add-Content
로 전달합니다.
-Path
매개변수는 JSON 문자열이 추가될 파일을 의미합니다. "D:\path\to\example.json"
을 원하는 파일 경로로 바꾸어 JSON 내용을 추가할 위치를 지정하십시오.
Add-Content
cmdlet은 기존 데이터를 덮어쓰지 않고 파일에 내용을 추가하거나 추가할 수 있는 편리한 방법을 제공합니다. 이는 시간이 지남에 따라 업데이트하거나 확장해야 하는 JSON 문자열을 처리할 때 특히 유용합니다.
결론
이 기사에서는 PowerShell 객체를 JSON 문자열로 변환하고 ConvertTo-Json
cmdlet을 비롯한 Out-File
, Set-Content
, Add-Content
와 같은 기타 파일 처리 cmdlet을 사용하여 파일에 저장하는 과정을 시연하였습니다.
이 도구들을 활용하면 사용자는 JSON 데이터를 효율적으로 처리할 수 있으며, 데이터 관리, 공유 및 다양한 애플리케이션 및 시스템과의 통합을 간소화할 수 있습니다.
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.