Я хочу использовать 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: Точка входа в систему:*