I am trying to make a request to an SSRS Web API using powershell but I always get a 401 error when I try running to script to make the rest request from a powershell 7 container.
The code is as seen below:
$REPORT_SERVER_API_URL = $Env:REPORT_SERVER_API_URL
$username = "$Env:REPORT_SERVER_DOMAIN\$Env:REPORT_SERVER_USERNAME"
$password = $Env:REPORT_SERVER_PASSWORD | ConvertTo-SecureString -asPlainText -Force
$cred = New-Object System.Management.Automation.PSCredential($username,$password)
echo "Cred $Cred"
Write-Output "Create Datasource"
$DatasourceName = "DataSourceName"
$checkDatasourceAlreadyExistsUrl = $REPORT_SERVER_API_URL + '/Datasources/?$filter=contains(Name, ''{0}'')&$select=Id, Name' -f $DatasourceName
#Make Request to check if datasource already exists
Write-Output "Checking if Datasource $DatasourceName already exists...."
$Params = @{
Uri = $checkDatasourceAlreadyExistsUrl
Credential = $cred
#PreserveAuthorizationOnRedirect = $true
}
try
{
$UriLower = $checkDatasourceAlreadyExistsUrl.ToLower()
echo "UriLower - $UriLower"
#$checkDataSourceAlreadyExistsResponse = Invoke-WebRequest -uri $checkDatasourceAlreadyExistsUrl -Credential $cred -SessionVariable s
$checkDataSourceAlreadyExistsResponse = Invoke-RestMethod -Uri $UriLower @Params -UseBasicParsing -SkipCertificateCheck
}
catch {
$Wrong = $_.Exception.Response
echo "Wrong - $Wrong"
throw $_.Exception.Response
}
The implementation of the Dockerfile is as seen below:
FROM mcr.microsoft.com/powershell:lts-7.2-debian-10
RUN apt-get update && apt-get install -y --no-install-recommends gss-ntlmssp
ENV DATASOURCE_CONNECTION_STRING XXX
ENV DATASOURCE_DATABASE_PASSWORD XXX
ENV DATASOURCE_DATABASE_USERNAME XXX
ENV REPORT_SERVER_URI XXX
ENV REPORT_SERVER_USERNAME XXX
ENV REPORT_SERVER_PASSWORD XXX
ENV REPORT_SERVER_API_URL XXX
COPY ./SSRSProject ./SSRSProject
#COPY ./ssrs_deploy_script.ps1 .