Board logo

标题: [问题求助] PowerShell如何获取onedrive网盘上的文件列表? [打印本页]

作者: 小白龙    时间: 2024-9-1 20:21     标题: PowerShell如何获取onedrive网盘上的文件列表?

有人知道如何获取自己在onedrive网盘上的文件列表吗? 感觉是可以实现的, 因为Alist就可以列出网盘里的文件, 问了gpt回复如下, 貌似有点复杂, 有大神给提点一下吗? 感谢
  1. # 安装 MSAL.PS 模块
  2. Install-Module -Name MSAL.PS -Force
  3. # Azure AD 应用的设置
  4. $clientId = "<你的应用程序ID>"
  5. $tenantId = "<你的租户ID>"
  6. $scope = "https://graph.microsoft.com/.default"
  7. $authority = "https://login.microsoftonline.com/$tenantId"
  8. # 获取访问令牌
  9. $tokenResponse = Get-MsalToken -ClientId $clientId -TenantId $tenantId -Scopes $scope -Authority $authority -Interactive
  10. # 访问令牌
  11. $accessToken = $tokenResponse.AccessToken
  12. # 调用 Microsoft Graph API 获取 OneDrive 根目录的文件列表
  13. $uri = "https://graph.microsoft.com/v1.0/me/drive/root/children"
  14. # 使用访问令牌请求 OneDrive 文件列表
  15. $response = Invoke-RestMethod -Uri $uri -Headers @{Authorization = "Bearer $accessToken"} -Method Get
  16. # 输出文件信息
  17. $response.value | ForEach-Object {
  18.     Write-Host "文件名: $($_.name)"
  19.     Write-Host "类型: $($_.file.mimeType)"
  20.     Write-Host "大小: $($_.size) bytes"
  21.     Write-Host "---------------------------------"
  22. }
复制代码

作者: went    时间: 2024-9-2 10:51

以前写过,整理了下
https://went-cloud.oss-cn-beijin ... 1/onedrive_list.ps1
首次使用需要登录
作者: 小白龙    时间: 2024-9-3 10:54

本帖最后由 小白龙 于 2024-9-3 10:55 编辑

回复 2# went


    多谢大佬分享, 刚试了一下, 我已经将下面两个变量的值设为了我的az应用的值, 但执行后会报下面的错误, 而且代码在ISE中执行后, 就停止不了了, 只能重启ISE
$clientID = 'xxx'
$clientSecret = 'xxx'
--------------------------------------------------------------
我们无法完成你的请求
unauthorized_client: The client does not exist or is not enabled for consumers. If you are the application developer, configure a new application through the App Registrations in the Azure Portal at https://go.microsoft.com/fwlink/?linkid=2083908.

作者: 小白龙    时间: 2024-9-3 10:57

本帖最后由 小白龙 于 2024-9-3 11:00 编辑

回复 2# went


    另外有个模块, 是专门处理认证的, 估计应该会简单一些, 但怎么改呢
Import-Module MSAL.PS

-------------------------------------------------------------------------------------------
另外, 我估计有可能我的az应用设置可能有问题, 能指导一下要设哪几个项吗?
我是按下面的链接的教程设置的
https://cknotes.com/oauth2-clien ... e-app-registration/
作者: 小白龙    时间: 2024-9-3 11:02

回复 2# went


    用下面链接的组件, 几行代码就能列表, 上传,下载 onedrive的文件, 但是我搞了快一个月了也没成功, 估计是哪个设置没搞对, 期待大佬能帮一把, 多谢
https://www.example-code.com/powershell/onedrive_list_drives.asp
作者: went    时间: 2024-9-3 14:16

回复 3# 小白龙


    你登录成功没有,用2楼的app秘钥能访问吗
作者: 小白龙    时间: 2024-9-3 16:14

回复 6# went


    是的, 用outlook邮箱登陆后才报告下面的错误, 我感觉我的问题可能是哪个地方不对, 我登陆onedrive的时候用的相同的outlook邮箱, 创建az应用时也是用的相同的邮箱登陆的, onedrive有独立的帐号吗?
--------------------------------------------------------------
我们无法完成你的请求
unauthorized_client: The client does not exist or is not enabled for consumers. If you are the application developer, configure a new application through the App Registrations in the Azure Portal at

作者: went    时间: 2024-9-3 18:18

本帖最后由 went 于 2024-9-3 18:19 编辑

有两个解决方法尝试下:
1.使用新邮箱注册Onedrive,例如qq邮箱
2.若使用自己的app,添加如下设置

设置授权回调地址,其中的重定向uri和ps1文件中第6行对应



设置访问权限




欢迎光临 批处理之家 (http://www.bathome.net/) Powered by Discuz! 7.2