gpt4 book ai didi

powershell - PowerShell System.Object []数组Export-CSV

转载 作者:行者123 更新时间:2023-12-02 23:41:42 25 4
gpt4 key购买 nike

$path = "\\path\to\folder"
$ts = (Get-Date -format yyyyMMdd_HHmmss)
Invoke-WebRequest -Uri "https://fsrm.experiant.ca/api/v1/combined" -UseBasicParsing -OutFile ($path + $ts + ".json")
$json = Get-Content -Raw ($path + $ts + ".json")
$x = $json | ConvertFrom-Json
$x | Select filters | Export-Csv -NoTypeInformation -Path ($path + $ts + ".csv")

上面给了我一个输出:
filters
System.Object[]

将脚本的最后一行更改为:
$x | Select-Object -ExpandProperty filters | Export-Csv -NoTypeInformation -Path ($path + $ts + ".csv")

根据以下内容给我一些东西,这是每个项目的长度计数:
Length
6
6
6
6
7
...

我不需要长度,我想要的是实际值,正如您从.json链接所看到的那样,从中调用Web请求应该是文件类型列表;导入FSRM中以对抗勒索软件。

我在“选择对象”页面上看不到有关选择可以返回的内容的任何信息,那么我还缺少什么?

https://technet.microsoft.com/en-us/library/hh849895.aspx

最佳答案

Invoke-RestMethod包括转换来自JSON的响应,而Invoke-WebRequest没有,因此在这里使用它是一个有用的cmdlet。

该网站的JSON输出中的.filters是字符串列表。您可以将它们放在文件中,每行一个,使用:

$filters = (Invoke-RestMethod -Uri https://fsrm.experiant.ca/api/v1/combined).filters
$filters | Set-Content "d:\path\$(get-date -Format u).csv"

如果确实需要列标题行:
$Path = "d:\path\$(get-date -Format u).csv"

$filters = (Invoke-RestMethod -Uri https://fsrm.experiant.ca/api/v1/combined).filters
'Filter' | Set-Content $Path
$filters | Add-Content $Path

并且,如果确实需要通过CSV(将在每一行中加引号并有标题行),则:
$path = "d:\temp"
$ts = (Get-Date -format yyyyMMdd_HHmmss)

$json = Invoke-RestMethod -Uri "https://fsrm.experiant.ca/api/v1/combined"
$json.filters | select @{N="Value";E={$_}} | Export-Csv -NoTypeInformation -Path "$path\$ts.csv"

不需要 |%{$_.Filters},因为只有一个对象是从JSON转换的,而过滤器是它的属性,因此只需访问一次即可:
{
filters: [
]
}

并且不需要 E={$_.ToString()},因为过滤器值已经是字符串。

Import-CSV和Export-CSV的工作方式是:
  • 行是对象
  • 列映射到对象
  • 的属性
  • CSV映射到对象数组
  • Select允许您从通过管道进入的一些对象开始,然后仅使用您选择的某些属性将它们沿着管道发送。

    计算的属性使您可以动态添加新属性到通过管道到达的对象。

    在这种情况下:
    $json.filters | 

    通过的是字符串。
    $json.filters | select @{Name="Value";Expression={$_}}

    正在取一根弦
    "*.vbs"

    并将其转换为具有一个属性的PSCustomObject:
    @{Value="*.vbs"}

    现在,它映射到CSV行,其中包含一列(“值”)和列内容 *.vbs

    管道变成
    @{Value="*.vbs"}
    @{Value="*.exe"}
    @{Value="*.js"}

    Export-CSV将它们处理为CSV

    关于powershell - PowerShell System.Object []数组Export-CSV,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40364230/

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