Оператор Powershell Like вызывает ошибку REST - PullRequest
0 голосов
/ 18 октября 2018

Я работаю над пользовательским модулем PoweShell, взятым из Интернета для нашего приложения BI.

Мой вопрос довольно прост, код ниже не работает:

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 голосов
/ 18 октября 2018

После просмотра источника используемого вами модуля, Qlik-Admin-Utils , я бы не стал использовать параметр -filter, так как указанный вами ввод обрабатывается этимblock в командлете Invoke-QlikGet:

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

Этот сценарий добавляет ваш фильтр в качестве параметра запроса в URL, и он не поддерживает обычное форматирование PowerShell, но отправляет фильтр в REST API qLik.

Если бы я писал это, я бы проигнорировал их фильтрацию и сделал бы следующее:

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

Скорее всего, это будет работать с меньшими затратами.

Однако, если вы хотите использовать поддержку фильтра Qlik, Я нашел это, чтобы вы могли прочитать его синтаксис здесь .

Похоже, они предлагают собственный фильтр, который может помочь, это фильтр Starts With, определенный как SW, для синтаксиса Name sw 'Data'.Вы можете попробовать это и посмотреть, работает ли он вместо этого.

Get-QlikDataConnection -filter "name sw 'Data'"
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...