PowerShell - 转置哈希表的结果

标签 powershell csv hashtable

我需要检查很多服务器的保修,但是我在https://www.powershellgallery.com/packages/HPWarranty/2.6.2中找到的模块返回的输出似乎是一个哈希表,第一列包含我想要的行。

下面的脚本将返回此字段,其中字段每 5 行重复一次 - output1.csv:

TYPE System.Management.Automation.PSCustomObject

"Component","Codecount"
"SerialNumber","CZ36092P5H"
"ProductNumber","727021-B21"
"OverallEntitlementStartDate","2016-03-04"
"OverallEntitlementEndDate","2019-04-02"
"ActiveEntitlement","true"
"SerialNumber","CZ36092P5K"
"ProductNumber","727021-B21"
"OverallEntitlementStartDate","2016-03-04"
"OverallEntitlementEndDate","2019-04-02"
"ActiveEntitlement","true"

如何转置输出以使 SerialNumber、ProductNumber、OverallEntitlementStartDate、OverallEntitlementEndDate 和 ActiveEntitlement 成为列?

# variables
$dest_path = "C:\Scripts\HPE\HPWarranty"
$export_date = Get-Date -Format o | ForEach-Object {$_ -replace ":", "-"}
$myScriptName = $MyInvocation.MyCommand.Name
$transcriptPath = $dest_path + "\" + $myScriptName + "_transcript_" + $export_date + ".txt"
$csvPath = $dest_path + "\" + "hpe_list1.csv"

#Start transcript of script activities and set transcript location
start-transcript -append -path $transcriptPath | Out-Null

# import serials & part numbers to be processed
$csv_info = Import-Csv $csvPath

foreach ($line in $csv_info) {
    $hash = (Get-HPEntWarrantyEntitlement -ProductNumber $line.ProductNumber -SerialNumber $line.SerialNumber)
    &{$hash.getenumerator() |
        ForEach-Object {new-object psobject -Property @{Component = $_.name;Codecount=$_.value}}
    } | Export-Csv "C:\Scripts\HPE\HPWarranty\output1.csv" -Append
}

# Stop Transcript
Stop-Transcript | Out-Null

脚本处理的 hpe_list1.csv 包含两个服务器的详细信息:

ProductNumber,SerialNumber
727021-B21,CZ36092P5H
727021-B21,CZ36092P5K

最佳答案

将输出哈希表转换为[pscustomobject]:

$WarrantyInfo = foreach ($line in $csv_info) {
    [pscustomobject](Get-HPEntWarrantyEntitlement -ProductNumber $line.ProductNumber -SerialNumber $line.SerialNumber)
}
$WarrantyInfo | Export-Csv "C:\Scripts\HPE\HPWarranty\output1.csv"

关于PowerShell - 转置哈希表的结果,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44499423/

相关文章:

powershell - 用 powershell 替换 icacls.exe

postgresql - 如何将大型 csv 文件(~4GB)导入 PostgreSQL 数据库?

visual-studio - 通过 VisualStudio 运行时,Powershell ExecutionPolicy 是错误的

powershell - 什么是DIR命令在PowerShell中的替代品

json - 如何将蓝图json文件转换为csv文件?

java - 在java中使用RegEx解析CSV - 在单元格内转义双引号

java - 使用链式对象实现 HashTable

java - 从两个哈希表中查找相交值的程序

algorithm - 有没有什么概率数据结构可以降低大量计数器的空间复杂度?

powershell - 如何使用 powershell 将 "\"替换为 "\\"?