将特殊字符作为参数传递给Powershell脚本函数

时间:2015-10-15 06:52:50

标签: powershell azure

我刚刚在powershell脚本中创建了一个方法 -

function Add-Entity() {
    [CmdletBinding()]
    param(
       $TableName,
       $PartitionKey,
       $RowKey,
       [String]$JsonString
    )


  $entity = New-Object -TypeName Microsoft.WindowsAzure.Storage.Table.DynamicTableEntity -ArgumentList $PartitionKey, $RowKey
  $entity.Properties.Add("JsonStringProperty", $JsonString)
  $result = $table.CloudTable.Execute([Microsoft.WindowsAzure.Storage.Table.TableOperation]::Insert($entity))
}

我希望将这个完整的jSon字符串作为参数传递 -

Add-Entity -TableName $myTableName -PartitionKey "ABC" -RowKey "XYZ" -JsonString {"TO":["abc@xyz.com","def@xyz.com"],"CC":["pqr@xyz.com"],"BCC":[]}

每次我尝试编译时,它都会给我一个错误 -

  

意外的令牌':表达式或陈述中的[“abc @ xyz”.com“'

1 个答案:

答案 0 :(得分:1)

问题是JSON使用双引号来分隔键和值,Powershell也使用相同的字符(双引号)来表示字符串“wrap”。

您可以使用单引号来包装硬编码的输入json,如下所示:

'{"TO":["abc@xyz.com","def@xyz.com"],"CC":["pqr@xyz.com"],"BCC":[]}' 

所以声明如下:

Add-Entity -TableName $myTableName -PartitionKey "ABC" -RowKey "XYZ" -JsonString '{"TO":["abc@xyz.com","def@xyz.com"],"CC":["pqr@xyz.com"],"BCC":[]}'