Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/powershell/11.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何解析嵌入在中的javascript变量数组http://up-for-grabs.net/#/?_Javascript_Powershell_Dynamic Arrays - Fatal编程技术网

如何解析嵌入在中的javascript变量数组http://up-for-grabs.net/#/?

如何解析嵌入在中的javascript变量数组http://up-for-grabs.net/#/?,javascript,powershell,dynamic-arrays,Javascript,Powershell,Dynamic Arrays,我正在尝试使用powershell解析CSV文件中的内容。到目前为止,我已经编写了以下代码 $URL = "http://up-for-grabs.net/#/" $HTML = Invoke-WebRequest -Uri $URL $script_blocks = $HTML.ParsedHtml.getElementsByTagName("script") | Where{ $_.type -eq ‘text/javascript’ } $content = "" foreach ($s

我正在尝试使用powershell解析CSV文件中的内容。到目前为止,我已经编写了以下代码

$URL = "http://up-for-grabs.net/#/"
$HTML = Invoke-WebRequest -Uri $URL
$script_blocks = $HTML.ParsedHtml.getElementsByTagName("script") | Where{ $_.type -eq ‘text/javascript’ }

$content = ""
foreach ($script_block in $script_blocks)
{
    if($script_block.innerHTML -ne $null -and `
       $script_block.innerHTML.trim().StartsWith("var files"))
    {
       $content = $script_block.innerHTML.trim()
    }
 }
进一步查看内容,它似乎是一个嵌入JavaScript的变量数组,其初始行的格式如下所示。它的数组没有空格或新行,这是我为提高可读性而创建的

<script type="text/javascript">
  var files = {

  "aspnet-razor-4":{"name":"ASP.NET Razor 4","desc":"Parser and code generator for CSHTML files used in view pages for MVC web apps.","site":"https://github.com/aspnet/Razor","tags":["Microsoft","ASP.NET","Razor","MVC"], "upforgrabs":{"name":"up-for-grabs","link":"https://github.com/aspnet/Razor/labels/up-for-grabs"}},

  "fsharpdatadbpedia":{"name":"FSharp.Data.DbPedia","desc":"FSharp.Data.DbPedia - An F# type provider for DBpedia","site":"https://github.com/fsprojects/FSharp.Data.DbPedia","tags":[".NET","DbPedia","F#"],"upforgrabs":{"name":"up-for-grabs","link":"https://github.com/fsprojects/FSharp.Data.DbPedia/labels/up-for-grabs"}},

  "makesharp":{"name":"Make#","desc":"Use C# scripts to automate the building process","site":"https://github.com/sapiens/MakeSharp","tags":[".Net","C#","make","build","automation","tools"],"upforgrabs":{"name":"up-for-grabs","link":"https://github.com/sapiens/MakeSharp/labels/up-for-grabs"}},

  "stateprinter":{"name":"StatePrinter","desc":"Automating unittest asserts and ToString() coding.","site":"https://github.com/kbilsted/StatePrinter","tags":["TDD","Unit Testing","TDD",".NET","C#","ToString","Debugging"],"upforgrabs":{"name":"Help wanted","link":"https://github.com/kbilsted/StatePrinter/labels/Help%20wanted"}}

</script>

如何在powershell中实现类似的快速解析,而不必编写带有字符串标记的大代码。

经过一些研究,我发现这是一个JSON内容,powershell cmdlet需要用于此内容。我不想在这里复制整个脚本。请查看以了解如何有效使用此cmdlet。基本上,您需要记住此cmdlet返回的对象是一个自定义对象,需要对其进行枚举以获取各种属性。它不是一个数组,因此只有foreach才能揭示内容。下面是一个小代码示例

$file_json = $file_string | ConvertFrom-Json
$delim = " ; "

foreach ($item in $file_json | gm)
{
    $props = $file_json.$($item.Name)
    if($props.MemberType) {continue}

    $row = $props.name.ToString()
    $row += $delim + $props.desc.ToString()
    $row += $delim + $props.site.ToString()
}
在web上搜索此cmdlet将为您提供有关如何处理此转换的更多详细信息

$file_json = $file_string | ConvertFrom-Json
$delim = " ; "

foreach ($item in $file_json | gm)
{
    $props = $file_json.$($item.Name)
    if($props.MemberType) {continue}

    $row = $props.name.ToString()
    $row += $delim + $props.desc.ToString()
    $row += $delim + $props.site.ToString()
}