PowerShell'de Dosyaya JSON Nasıl Yazılır?
Bu PowerShell eğitiminde PowerShell'de bir dosyaya JSON nasıl yazılacağını anlatacağım.
PowerShell'de bir dosyaya JSON yazmak için, ConvertTo-Json cmdlet'ini kullanarak bir PowerShell nesnesini JSON dizesine dönüştürebilir ve ardından bu dizeyi Out kullanarak bir dosyaya gönderebilirsiniz. -Dosya veya İçerik Ayarla. Örneğin:
$object | ConvertTo-Json | Set-Content -Path 'file.json'Bu yaklaşım, JSON verilerini PowerShell'den bir dosyaya kaydetmeniz gereken çoğu senaryo için basit ve etkilidir.
Yöntem 1: ConvertTo-Json ve Out-File
JSON'u PowerShell'deki bir dosyaya yazmak için PowerShell nesnesini JSON biçimli bir dizeye dönüştüren ConvertTo-Json cmdlet'ini kullanabilirsiniz. Dönüştürüldükten sonra Out-File cmdlet'ini kullanarak dizenin çıktısını bir dosyaya alabilirsiniz.
İşte basit bir örnek:
# Create a PowerShell object
$person = @{
FirstName = 'James'
LastName = 'Karley'
Age = 30
}
# Convert the object to a JSON string
$json = $person | ConvertTo-Json
# Write the JSON string to a file
$json | Out-File -FilePath 'C:\MyFolder\person.json'
Bu komut dosyası, bir kişiyi temsil eden bir hash tablosu oluşturur, onu JSON'a dönüştürür ve bunu person.json adlı bir dosyaya yazar.
Betiği VS kodunu kullanarak çalıştırdıktan sonra çıktıyı aşağıdaki ekran görüntüsünde görebilirsiniz.
PowerShell'de JSON'u CSV'ye Nasıl Dönüştürebilirim? konusuna bakın.
Yöntem 2: ConvertTo-Json ve Set-Content
Out-File'a alternatif, PowerShell'deki Set-Content cmdlet'idir. JSON verileri için genellikle gerekli olan UTF-8 gibi dosya kodlamasının doğru ayarlandığından emin olmanız gerektiğinde özellikle kullanışlıdır.
# Convert the object to a JSON string
$json = $person | ConvertTo-Json
# Write the JSON string to a file with UTF8 encoding
$json | Set-Content -Path 'person.json' -Encoding UTF8Bu yaklaşım öncekine benzer ancak JSON dosyasındaki karakter temsiliyle ilgili sorunları önlemek için kodlamayı belirtir.
Yöntem 3: Veri Eklemek için İçerik Eklemeyi Kullanma
JSON verilerini PowerShell'de mevcut bir dosyaya eklemeniz gerekiyorsa İçerik Ekle cmdlet'ini kullanabilirsiniz. Bu, özellikle bir dosyadaki JSON dizisine oturum açarken veya ekleme yaparken kullanışlıdır.
# Additional person object
$additionalPerson = @{
FirstName = 'Jane'
LastName = 'Smith'
Age = 25
}
# Convert the additional person to JSON
$additionalJson = $additionalPerson | ConvertTo-Json
# Append the JSON string to the existing file
$additionalJson | Add-Content -Path 'C:\MyFolder\person.json'Bu komut dosyası, additionalJson içeriğini, mevcut verilerin üzerine yazmadan people.json dosyasına ekleyecektir.
PowerShell betiğini VS kodunu kullanarak çalıştırdıktan sonra çıktıyı aşağıdaki ekran görüntüsünde görebilirsiniz.
Yöntem 4: Karmaşık Nesneler için Dışa Aktarma-Clixml
ConvertTo-Json'un işleyemeyeceği özellikler içerebilecek daha karmaşık nesneler için Export-Clixml'i kullanabilirsiniz. Bu cmdlet, PowerShell nesnelerini Import-Clixml ile okunabilecek bir XML dosyasına aktarır.
# Export the object to an XML file
$person | Export-Clixml -Path 'person.clixml'Tam olarak JSON olmasa da bu yöntem, JSON'un yapamayacağı karmaşık serileştirilmiş verileri işleyebildiği için tamlık amacıyla dahil edilmiştir.
Yöntem 5: JSON.net Kitaplığını Kullanma
JSON serileştirme süreci üzerinde tam kontrol için Newtonsoft JSON.net kütüphanesini kullanabilirsiniz. Bu kitaplık, yerleşik PowerShell cmdlet'lerinden daha fazla özellik sunar.
Öncelikle kütüphaneyi kurmanız gerekiyor:
# Install the Newtonsoft.Json library
Install-Package -Name Newtonsoft.JsonDaha sonra JSON verilerini serileştirmek ve yazmak için kullanabilirsiniz:
# Load the Newtonsoft.Json assembly
Add-Type -Path 'C:\path\to\Newtonsoft.Json.dll'
# Serialize the object to JSON using JsonConvert
$json = [Newtonsoft.Json.JsonConvert]::SerializeObject($person)
# Write the JSON string to a file
Set-Content -Path 'person.json' -Value $json -Encoding UTF8Bu yöntem özellikle karmaşık JSON yapılarıyla uğraşırken veya serileştirme sürecini ConvertTo-Json cmdlet'inin sunduklarının ötesinde özelleştirmeniz gerektiğinde kullanışlıdır.
Çözüm
PowerShell, JSON verilerini bir dosyaya yazmanın çeşitli yollarını sunar. Out-File veya Set-Content ile ConvertTo-Json cmdlet'ini kullanarak, JSON verilerini kolayca serileştirebilir ve kaydedebilirsiniz. Veri eklemek için İçerik Ekle, başvuracağınız cmdlet'tir. En karmaşık senaryolar için JSON.net kitaplığından yararlanmak size PowerShell'de JSON serileştirmesini hassas bir şekilde yönetme esnekliği ve gücü sağlar.
Bu PowerShell eğitiminde farklı yöntemler kullanarak JSON'un PowerShell'deki bir dosyaya nasıl yazılacağını anlattım.

