Использование Power Shell для правильного метода put для развертывания SSRS API для настройки набора общих данных - PullRequest
0 голосов
/ 09 октября 2019

Я хочу использовать PowerShell для установки набора общих данных для отчета с использованием SSRS API.

Я уже пытался использовать PowerShell для успешного получения набора общих данных с использованием API-интерфейса SSRS. Но не удалось использовать метод пут.

Успешно с использованием метода get:

$Cred = Get-Credential

$Url = "http://localhost/Reports/api/v2.0/DataSets"
`
`$Body = @{
Path ="/Shared_data_sets/P_Calculate_date_Default_key";
output_mode = "csv";
earliest_time = "-2d@d";
latest_time = "-1d@d";
}

Invoke-RestMethod -Method 'GET' -Uri $url -Credential $Cred -Body $body -OutFile output.csv

не удалось с помощью метода put:

$Cred = Get-Credential

$Url = "http://localhost/Reports/api/v2.0/Reports(23a6af79-9de3-49cb-b66b-625d3ff3909b)/SharedDataSets"

$Body = @{
Id = "935be257-5a65-4c0d-b372-d5a6a188daf6";
Name = "P_Calculate_Date_Default_Key";
Path = "/Shared_data_sets/P_Calculate_date_Default_key";
Type = "DataSet" ;
}

Invoke-RestMethod -Uri $Url -Credential $Cred -Body $body -Method 'PUT'

Ошибка возвращается

Удаленный сервер возвратил ошибку: (400) Неверный запрос

подробная ошибка:

Invoke-RestMethod: Remoteсервер вернул ошибку: (400) неверный запрос. В строке: 12 символов: 1 + Invoke-RestMethod -Uri $ Url -Credential $ Cred -Body $ body -Method 'PU ... + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~+ CategoryInfo: InvalidOperation: (System.Net.HttpWebRequest: HttpWebRequest) [Invoke-RestMethod], WebException + FullyQualifiedErrorId: WebCmdletWebResponseException, Microsoft.PowerShell.Commands.Commands * InvokeRest 26Я думал, что я использовал тот же способ, что и метод get, но он все равно не удался.

Я попробовал другой способ, но все равно не получилось:

$Cred = Get-Credential
$Url = "http://localhost/Reports/api/v2.0/Reports(23a6af79-9de3-49cb-b66b-625d3ff3909b)/SharedDataSets"
$Body = @{

   Id = "935be257-5a65-4c0d-b372-d5a6a188daf6"
  Name = "P_Calculate_Date_Default_Key"
  Path = "/Shared_data_sets/P_Calculate_date_Default_key"
  Type = "DataSet"

}| ConvertTo-Json

Invoke-RestMethod -Uri $Url -Credential $Cred -Body $body -Method PUT -ContentType "application/json" | Out-Null

Просто чтобы вы знали, что для метода putЯ уже проверил на почтальоне, и это работает. Так что я думаю, что в настоящее время это только из-за непоследовательной логики в PowerShell.

в почтальоне я поставил ссылку как: http://localhost/Reports/api/v2.0/Reports(23a6af79-9de3-49cb-b66b-625d3ff3909b)/SharedDataSets

Тело как:

[
  {
      "Id": "935be257-5a65-4c0d-b372-d5a6a188daf6",
      "Name": "P_Calculate_Date_Default_Key",
      "Path": "/Shared_data_sets/P_Calculate_date_Default_key",
      "Type": "DataSet"
  }
]

Я попробовал вашу рекомендацию, и она показывает ниже, я добавил ее ниже всех: PS C: \ Users \ dkx42a8adm> $ Cred = Get-Credential $ Url = "http://localhost/Reports/api/v2.0/Reports(23a6af79-9de3-49cb-b66b-625d3ff3909b)/SharedDataSets" $ Body = @ {

   Id = "935be257-5a65-4c0d-b372-d5a6a188daf6"
  Name = "P_Calculate_Date_Default_Key"
  Path = "/Shared_data_sets/P_Calculate_date_Default_key"
  Type = "DataSet"

}| ConvertTo-Json

Write-Output $Body

Invoke-RestMethod -Uri $Url -Credential $Cred -Body $body -Method PUT -ContentType "application/json" 

$error[0]|format-list -force
cmdlet Get-Credential at command pipeline position 1
Supply values for the following parameters:
{
"Path":  "/Shared_data_sets/P_Calculate_date_Default_key",
"Name":  "P_Calculate_Date_Default_Key",
"Id":  "935be257-5a65-4c0d-b372-d5a6a188daf6",
"Type":  "DataSet"
}
Invoke-RestMethod : The remote server returned an error: (400) Bad Request.
At line:14 char:1
+ Invoke-RestMethod -Uri $Url -Credential $Cred -Body $body -Method PUT     ...
+ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+ CategoryInfo          : InvalidOperation:     (System.Net.HttpWebRequest:HttpWebRequest) [Invoke-RestMethod], WebException
+ FullyQualifiedErrorId : WebCmdletWebResponseException,Microsoft.PowerShell.Commands.InvokeRestMethodCommand

Исключение: System.Net.WebException: Удаленный сервервозвратил ошибку: (400) Неверный запрос. в Microsoft.PowerShell.Commands.WebRequestPSCmdlet.GetResponse (запрос веб-запроса) в Microsoft.PowerShell.Commands.WebRequestPSCmdlet.ProcessRecord () TargetObject: System.Net.HttpWebRequidInperationONet.HttpWebRequest: HttpWebRequest) [Invoke-RestMethod], WebException FullyQualifiedErrorId: WebCmdletWebResponseException, Microsoft.PowerShell.Commands.InvokeRestMethodCommand ErrorDetails: Точка входа в систему:*

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...