Пожалуйста, мне нужна помощь с Загрузка файлов Excel с помощью Powershell. Мне нужно написать скрипт, который соответствует стандарту POST (хорошо сформированному по правилам внешней системы) для URI этой системы. Сценарий должен быть аутентифицирован через NTLM (на Apache), а затем отправлять данные.Загрузить файл Powershell и аутентифицировать через NTLM
Я пытался что-то вроде этого:
Invoke-WebRequest -Uri $uri -Method Post -InFile $filePath -ContentType "multipart/form-data" -Headers @{"Authorization" = "Basic "+[System.Convert]::ToBase64String([System.Text.Encoding]::UTF8.GetBytes($username+":"+$password))}
где $ Ури что-то вроде http://[servername]/[applicationame]/apix/marketdata/upload
и $ Filepath является C: \ Users .. \ Documents \ Market_data.xlsx
Ошибка :
Invoke-WebRequest : {"status":"ERROR","message":"HTTP 400 Bad Request","additionalMessages":[]}
At C:\Users\..\script.ps1:48 char:1
+ Invoke-WebRequest -Uri $uri -Method Post -InFile $filePath -ContentTy ...
+ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+ CategoryInfo : InvalidOperation: (System.Net.HttpWebRequest:HttpWebRequest) [Invoke-WebRequest], WebException
+ FullyQualifiedErrorId : WebCmdletWebResponseException,Microsoft.PowerShell.Commands.InvokeWebRequestCommand
Эта команда Curl.exe работает, поэтому мне нужно повторно ре его PS свернуться
curl.exe -X POST -H "Pragma: no-cache" -H "Origin: http://[server]" -H "Content-Type: multipart/form-data; boundary=----WebKitFormBoundary7MA4YWxkTrZu0gW" -H "Accept: */*" -H "Cache-Control: no-cache" -H "X-Requested-With: XMLHttpRequest" -H "Connection: keep-alive" -H "Referer: http://[server]/" -F "Content-Type=application/vnd.ms-excel" -F "[email protected]$filePath" -F "filename=$filePath" "http://[servername]/[applicationname]/apix/marketdata/upload?User=[DOMAIN]%255C[USER]" --ntlm --negotiate -u 'DOMAIN\user:password'
Я пробовал этот способ: Invoke-WebRequest -Uri $ uri -Method Post -InFile $ file_to_upload -ContentType "application/vnd.ms-excel" -Headers @ {"Authorization" = "Basic" + [System.Convert ] :: ToBase64String ([System.Text.Encoding] :: UTF8.GetBytes ("[user]: [password]"))} но я получил «HTTP 415 Unsupported Media Type» –
ok, если только я не пропустил код вы только что поставили, не включили параметр -credential или объект учетных данных, что произойдет, если вы попытаетесь включить их? –