У меня есть фрагмент кода, подобный следующему:
$url = 'https://foo/accounts/thing%5CBSTNTZ-MTRFKR'
$request_content_type = 'application/xml'
$response_checkout = Invoke-RestMethod `
-Credential $credential `
-Method Get `
-Uri $url `
-ContentType $request_content_type
Invoke-RestMethod
создает следующее исключение:
PSMessageDetails :
Exception : System.Net.WebException: The remote server returned an error: (404) Not Found.
at Microsoft.PowerShell.Commands.WebRequestPSCmdlet.GetResponse(WebRequest request)
at Microsoft.PowerShell.Commands.WebRequestPSCmdlet.ProcessRecord()
TargetObject : System.Net.HttpWebRequest
CategoryInfo : InvalidOperation: (System.Net.HttpWebRequest:HttpWebRequest) [Invoke-RestMethod], WebException
FullyQualifiedErrorId : WebCmdletWebResponseException,Microsoft.PowerShell.Commands.InvokeRestMethodCommand
ErrorDetails : Account not found: ?\thing
InvocationInfo : System.Management.Automation.InvocationInfo
ScriptStackTrace : at <ScriptBlock>, <No file>: line 1
PipelineIterationInfo : {}
Кажется, виновником является обратная косая черта в имени учетной записи (вещь \ BSTNTZ-MTRFKR). Я кодирую обратную косую черту с% 5c, используя [System.Uri]::EscapeUriString()
. Есть ли какой-то другой способ добавить черный слеш в URI?
Следующая ссылка приведет вас к ссылке на API для API, который я вызываю.
https://docops.ca.com/ca-privileged-identity-management/12-8/en/integrating/rest-based-api/checkout-an-account