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