gpt4 book ai didi

powershell - 将包含 PowerShell 对象表示法的文本文件转换为 CSV

转载 作者:行者123 更新时间:2023-12-05 01:23:03 26 4
gpt4 key购买 nike

我有一个包含 PowerShell 对象表示法的文本文件 (PsonObjects.txt),如下所示:

@{Computer=Dektop123; ServiceA=Running; ServiceB=Running; RunspaceId=1a-1b}
@{Computer=Dektop456; ServiceA=Stopped; ServiceB=Stopped; RunspaceId=2b-2c}
@{Computer=Laptop123; ServiceA=NotFound; ServiceB=Running; RunspaceId=3c-4c}
@{ServiceA=NotFound; Computer=Laptop456; ServiceB=Running; RunspaceId=4d-5d}

我想将此 Pson 文件转换为 Csv 文件,但一直无法成功。

问题是有时一个对象的属性顺序与前一个对象的顺序不同。就像上面例子中的最后一行。因此,简单地将分号 (';') 转换为逗号 (',') 并删除 '@{}' 字符不会生成正确排序的 Csv 文件。

有没有一种简单的方法可以将此 Pson(Powershell 对象表示法)文件转换为 CSV 文件?

我尝试了几种不同的方法,但我一直在我的 CSV 输出文件中获取字符串的长度或哈希表输出(IsReadOnly、IsFixedSize、IsSychronized、keys、Values、SyncRoot、Count)。

非工作代码:

$inputFile = PsonObjects.txt
$CsvFileName = CsvOutput.csv
foreach($line in (Get-Contnet $inputfile)){
$newline = $line | convertFrom-StringData
$newline | Export-CSV $CsvFileName -Append
}

感谢任何有关此问题的帮助或建议。

最佳答案

ConvertFrom-StringData 输出一个未排序的Hashtable,其中元素可以是任意顺序,所以在这里没有用。

这是一个可能的解决方案,使用 -split 运算符和排序步骤,使用 ordered Hashtable:

$inputFile = 'PsonObjects.txt'
$csvFileName = 'CsvOutput.csv'

# The order of columns in the output CSV
$keyOrder = 'Computer','ServiceA','ServiceB','RunspaceId'

Get-Content $inputfile | ForEach-Object {
$line = $_.Trim('@{}') # Remove unwanted characters from current line

# First parse the current line into an unordered hashtable
$ht = @{}
foreach( $field in $line -split '; ' ) {
$key, $value = $field -split '='
$ht[ $key ] = $value
}

# Using the order specified by $keyOrder, create an ordered hashtable
$orderedHt = [ordered] @{}
foreach( $key in $keyOrder ) {
$orderedHt[ $key ] = $ht[ $key ]
}

[PSCustomObject] $orderedHt # Convert hashtable to custom object

} | Export-Csv $csvFileName

输出:

"Computer","ServiceA","ServiceB","RunspaceId"
"Dektop123","Running","Running","1a-1b"
"Dektop456","Stopped","Stopped","2b-2c"
"Laptop123","NotFound","Running","3c-4c"
"Laptop456","NotFound","Running","4d-5d"

关于powershell - 将包含 PowerShell 对象表示法的文本文件转换为 CSV,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/72883926/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com