powershell - Powershell Like 运算符调用 REST 错误
问题描述
我正在为我们的 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'"
我做错了什么还是某些模块不理解一些运算符?
解决方案
在查看了您正在使用的模块的来源 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 的过滤器支持,我发现了这个,因此您可以在此处阅读它的语法。
看起来他们确实提供了自己的过滤器,这可能会有所帮助,它是Starts With
过滤器,定义为SW
,用于Name sw 'Data'
. 你可以试试这个,看看它是否有效。
Get-QlikDataConnection -filter "name sw 'Data'"
推荐阅读
- mysql - MySQL 用于在 uuid 上加入表并省略两个表中存在的 uuid
- python-3.x - 带有平方根条件检查的python中的for循环
- lightningchart - 折线图中的虚线图或虚线图
- arrays - 对长度为 1M 的数组进行排序的数组声明中的可能错误
- python-3.x - 我的代码在运行时重复,是有问题还是我可以让它运行一次?
- c# - 在 C# 中打开表单时获取文本框的宽度
- javascript - AWS.DynamoDB.DocumentClient.put() 和 promise() 如何在 Lambda 中工作?(Javascript)
- python - VS Code 在输出中显示输出,但我希望它在终端中
- nginx - Kubernetes 入口路径
- php - 使用 mongodb 的 php 变量未显示在网站服务器上