Powershell Like运算符调用REST错误

时间:2018-10-18 14:21:28

标签: powershell

我正在研究从Internet上为我们的BI应用程序获取的自定义PoweShell模块。

我的问题很简单,下面的代码不起作用:

Get-QlikDataConnection -filter "name -like 'Data*'"

并引发如下错误:

Invoke-RestMethod : The remote server returned an error: (400) Bad Request.
At C:\Program Files\WindowsPowerShell\Modules\Qlik-Cli\1.13\functions\core.ps1:32 char:15
+ ...   $result = Invoke-RestMethod -Method $method -Uri $path @params -Web ...
+                 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
    + CategoryInfo          : InvalidOperation: (System.Net.HttpWebRequest:HttpWebRequest) [Invoke-RestMethod], WebExc
   eption
    + FullyQualifiedErrorId : WebCmdletWebResponseException,Microsoft.PowerShell.Commands.InvokeRestMethodCommand

但是下面的代码可以正常工作,并向我显示正确的输出:

Get-QlikDataConnection -filter "name eq 'DataPrepAppCache'"

我是在做错什么还是某些模块不了解一些操作员?

1 个答案:

答案 0 :(得分:0)

在查看the source of the module you're using, Qlik-Admin-Utils之后,我不会使用-filter参数,因为您指定的输入在Invoke-QlikGet cmdlet中由该块处理:

  If( $filter ) {
      If( $path.contains("?") ) {
        $path += "&filter=$filter"
      } else {
        $path += "?filter=$filter"
      }
    }

此脚本将您的过滤器作为查询参数附加到URL中,它不支持常规的PowerShell格式,但会将过滤器发送到qLik的REST API。

如果我正在写这篇文章,我将忽略它们的过滤并执行以下操作:

$Connections = Get-QlikDataConnection 
$DataConnection = $Connections | Where name -like "Data*"

这更有可能以较少的麻烦工作。

但是,如果要使用Qlik的过滤器支持,I found this so you can read up on the syntax of it here

似乎他们提供了自己的过滤器可能会有所帮助,它是Starts With过滤器,定义为SW,语法为{{1} }。您可以尝试一下,看看它是否有效。

Name sw 'Data'