我正在研究从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'"
我是在做错什么还是某些模块不了解一些操作员?
答案 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'