0

在下面的脚本中寻找一些输入。本质上,我正在检索一些 json 数据Invoke-WebRequest。我需要将许多属性导出到 CSV。从返回的数据Invoke-WebRequest包含在一个数组中:$devicedetails。此脚本适用于输出到 CSV。

& {
    Foreach ($PC in $DeviceDetails)
    {     
        Foreach ($AppName in $PC.categories)
        {
            ForEach ($App in $AppName.apps)
            {
                   ForEach($Status in $App.health_status)
                   {
                        [pscustomobject] @{
                        "Device ID" = $PC.device_id
                        "Device Type" = $PC.device_type
                        "Device Name" = $PC.device_name
                        Nickname = $PC.nick_name
                        Last_Seen = $PC.last_seen
                        Compliance_Category_Status = $Appname.issue
                        Compliance_Category = $Appname.category_id 
                        Product_Name = $App.name
                        Product_Vendor = $App.vendor
                        Product_Version = $App.version
                        Product_Health_Item = $Status.status 
                        Product_Health_Status = $Status.issue 
                        }
                    }
            }
        }

    }
} | Export-CSV -PAth $Outfile -NoTypeInformation 

好奇这是否是将属性输出到 CSV 的最佳方式。此外,我现在需要对正在创建的自定义对象执行一些额外的处理,但是如果我如下所示为该自定义对象分配一个变量,则需要几分钟才能完成,而仅导出到 CSV 则需要 12-13 秒. 为什么性能这么差?

$DeviceOutput= @()
    Foreach ($PC in $DeviceDetails)
    {     
        Foreach ($AppName in $PC.categories)
        {
            ForEach ($App in $AppName.apps)
            {
                   ForEach($Status in $App.health_status)
                   {
                        $DeviceOutput += [pscustomobject] @{
                        "Device ID" = $PC.device_id
                        "Device Type" = $PC.device_type
                        "Device Name" = $PC.device_name
                        "Nickname" = $PC.nick_name
                        Compliance_Category_Status = $Appname.issue
                        Compliance_Category = $Appname.category_id 
                        Product_Name = $App.name
                        Product_Vendor = $App.vendor
                        Product_Version = $App.version
                        Product_Health_Item = $Status.status 
                        Product_Health_Status = $Status.issue 
                        }
                    }
            }
        }

    }
4

0 回答 0