我可以用PowerShell v2修改JSON请求吗?

我可以用PowerShell v2修改JSON请求吗?,json,powershell-2.0,Json,Powershell 2.0,我正在尝试使用PowerShell v2(我的版本没有JSON或Invoke-RestMethod cmdlet的有用转换)修饰一些JSON响应,以便至少可以将响应输出到一个CSV文件。我可以使用它来搜索数据,但我很难使用Export-CSV cmdlet获得正确的格式 这可能吗 我的基本代码是: [string]$url = "http://saucelabs.com/rest/v1/info/browsers/webdriver" enter code here`$temp = "Sauce

我正在尝试使用PowerShell v2(我的版本没有JSON或Invoke-RestMethod cmdlet的有用转换)修饰一些JSON响应,以便至少可以将响应输出到一个CSV文件。我可以使用它来搜索数据,但我很难使用Export-CSV cmdlet获得正确的格式

这可能吗

我的基本代码是:

[string]$url = "http://saucelabs.com/rest/v1/info/browsers/webdriver"
enter code here`$temp = "SauceLabsSupportedEnvs.csv"
# Accessing the REST API at Sauce Labs and downloading to a file
$json = (New-Object Net.Webclient).DownloadString($url)
我想做的是将$json响应转换成可用的内容。我尝试过但未能投入工作的是以下两个方面:

尝试在分隔符上转换 $json |转换为Csv-分隔符“{”-NoTypeInformation |输出文件$temp

或者只是将数据导出为默认值 $json |导出Csv-路径$temp


两者都只需在CSV文件中提供类型信息。

在PowerShell V1.0或PowerShell V2.0中,我自己将JSON响应转换为XML,然后利用它。当JSON太大时,这在PowerShell 3.0中也很有趣

Add-Type -AssemblyName System.ServiceModel.Web, System.Runtime.Serialization

$utf8 = [System.Text.Encoding]::UTF8    
function Write-String
{
  PARAM([Parameter()]$stream,
        [Parameter(ValueFromPipeline=$true)]$string)

  PROCESS
  {
    $bytes = $utf8.GetBytes($string)
    $stream.Write( $bytes, 0, $bytes.Length )
  }  
}

function Convert-JsonToXml
{
  PARAM([Parameter(ValueFromPipeline=$true)][string[]]$json)

  BEGIN
  { 
    $mStream = New-Object System.IO.MemoryStream 
  }

  PROCESS
  {
    $json | Write-String -stream $mStream
  }

  END
  {
    $mStream.Position = 0
    try
    {
       $jsonReader = [System.Runtime.Serialization.Json.JsonReaderWriterFactory]::CreateJsonReader($mStream,[System.Xml.XmlDictionaryReaderQuotas]::Max)
       $xml = New-Object Xml.XmlDocument
       $xml.Load($jsonReader)
       $xml
    }
    finally
    {
       $jsonReader.Close()
       $mStream.Dispose()
    }
  }
}

function Convert-XmlToJson
{
  PARAM([Parameter(ValueFromPipeline=$true)][Xml]$xml)

  PROCESS
  {
    $mStream = New-Object System.IO.MemoryStream
    $jsonWriter = [System.Runtime.Serialization.Json.JsonReaderWriterFactory]::CreateJsonWriter($mStream)
    try
    {
      $xml.Save($jsonWriter)
      $bytes = $mStream.ToArray()
      [System.Text.Encoding]::UTF8.GetString($bytes,0,$bytes.Length)
    }
    finally
    {
      $jsonWriter.Close()
      $mStream.Dispose()
    }
  }
}

在这种情况下,什么是写入字符串?我已经尝试过了,但是我得到了一个错误,它不是一个可识别的cmdlet。对该术语的Google搜索没有显示任何内容。很抱歉,我错过了一部分或代码,让我们看一下编辑。现在可以理解了。谢谢!