我需要通过命令行上传一个文件到OneDrive。这将通过分发给最终用户的批处理文件来完成。
从Stack Overflow上搜索,我发现像这样的问题,说你需要注册一个应用程序并创建一个应用程序密码,使用Azure。在我工作的组织中,我没有必要的权限这样做,也不能做任何需要管理员帐户的事情。所以我不能安装任何软件——我必须使用Windows 10自带的软件。我也不能使用VBA,因为它被阻止了。
我已经设法从OneDrive下载文件没有任何类似的,使用这里描述的过程:
- 在任意一个浏览器中打开URL
- 使用Ctrl+Shift+ i打开开发人员选项
- 进入网络选项卡
现在点击下载。不需要保存文件。当浏览器从服务器请求文件时,我们只需要网络活动。- 将出现一个新的条目,看起来像"download.aspx?…"。
- 右键点击
Copy → Copy as cURL
.- 将复制的内容直接粘贴到终端,并附加"——output"文件。扩展名'将内容保存在文件中。扩展自终端不能显示二进制数据。
例子:
curl https://xyz.sharepoint.com/personal/someting/_layouts/15/download.aspx?UniqueId=cefb6082%2D696e%2D4f23%2D8c7a%2
…一些长文本....cCtHR3NuTy82bWFtN1JBRXNlV2ZmekZOdWp3cFRsNTdJdjE2c2syZmxQamhGWnMwdkFBeXZlNWx2UkxDTkJic2hycGNGazVSTnJGUnY1Y1d0WjF5SDJMWHBqTjRmcUNUUWJxVnZYb1JjRG1WbEtjK0VIVWx2clBDQWNyZldid1R3PT08L1NQPg = =;
我尝试在浏览器上点击"上传"后做类似的事情,但在尝试过滤请求时没有发现任何有用的东西。
我发现这两个问题,但没有键盘快捷键上传,AFAICT。此外,终端用户将上传文件到我从OneDrive上与他们共享的文件夹中。打开Chrome或Edge作为一个最小化的窗口是可以的,但我不能把一个自动点击东西的窗口塞到他们的脸上——他们不会喜欢的。
我刚刚想到,我可能可以使用办公应用程序将文件另存为必要的onedrive文件夹,那里的键盘快捷键非常稳定,但不知道如何通过命令行实现。
我认为实现这一目标的最好和更安全的方法是使用OneDrive的Rest API。
(小文件<4MB)https://learn.microsoft.com/en-us/onedrive/developer/rest-api/api/driveitem_put_content?view=odsp-graph-online
(大文件)https://learn.microsoft.com/en-us/onedrive/developer/rest-api/api/driveitem_createuploadsession?view=odsp-graph-online
您仍然需要Azure AD应用程序注册(您的管理员应该能够为您配置),以提供API访问Azure中的服务。使用API编写代码将更容易,更不复杂,更不用说更通用了。
这是一张旧票,但如果有人仍然对这个主题感兴趣,您可以使用以下命令行项目在OneDrive中上传或大或小的文件(至少与个人报价测试)。https://github.com/incognito1234/onedrive-client
请注意,在Azure中注册应用程序仍然是必要的。