powershell - 使用设备门户 API 将应用程序安装到 Hololens 的 PS 脚本出错
问题描述
我正在尝试开发一个 PS 脚本,通过设备门户 API 将应用程序包安装到 Hololens。寻找有关 400 BAD REQUEST 响应的一些故障排除提示。
以下是我使用的参考资料: https ://docs.microsoft.com/en-us/windows/mixed-reality/device-portal-api-reference
终点/api/app/packagemanager/package (POST)
$user = 'snarain'
$pass = 'snarain'
$pair = "$($user):$($pass)"
$encodedCreds = [System.Convert]::ToBase64String([System.Text.Encoding]::ASCII.GetBytes($pair))
$basicAuthValue = "Basic $encodedCreds"
$Headers = @{
Authorization = $basicAuthValue
}
$FilePath = 'C:\Users\snarain\Downloads\My HololensApp.appxbundle'
Invoke-RestMethod -Uri 'http://127.0.0.1:10080/api/app/packagemanager/package?package=My%20HololensApp.appxbundle' -Headers $Headers -Method Post -InFile $FilePath -ContentType 'multipart/form-data'
输出是Invoke-RestMethod : The remote server returned an error: (400) Bad Request
。但是,我可以使用 Postman 到达终点并成功上传应用程序。我将来自 POSTMAN 的请求保存到它的 curl 等效项中,以便专家快速调试它。
--url 'http://127.0.0.1:10080/api/app/packagemanager/package?package=My%20HololensApp.appxbundle' \
--header 'Authorization: Basic c25hcmFpbjpzbmFyYWlu' \
--header 'Postman-Token: c6613653-3ff0-43c1-896c-63d62b125277' \
--header 'cache-control: no-cache' \
--header 'content-type: multipart/form-data; boundary=----WebKitFormBoundary7MA4YWxkTrZu0gW' \
--form '=@C:\Users\snarain\Downloads\My HololensApp.appxbundle'```
解决方案
jklemmack 在这篇文章中的回答帮助解决了这个问题。此外,我应该使用 ISO-8859-1 编码而不是 UTF-8 来使 appxbundle 读取成功。
powershell invoke-restmethod 多部分/表单数据
解决了 !
推荐阅读
- selenium - 如何使用 Selenium 下载此类文件
- ruby - 在非 Rails Ruby 中接受服务器端任意大小的上传?
- c# - 如何获取列表中具有相同前缀的所有单词?C#
- javascript - 在 React 中使用枚举进行条件渲染的好例子?
- excel - 尝试从下拉列表中打开另一个工作表
- javascript - Javascript:将具有打开时间的对象数组转换为单个字符串
- c++ - 覆盖抽象类的虚方法
- r - 绑定多个文件的多个excel表中的指定数据
- node.js - 为什么我不能在 macOS Catalina 中开始使用最近安装的带有 Hombrew 的软件包?
- reactjs - 为什么这个 JSX 会导致“堆栈深度过大”错误?