启用MFA的账号如何通过传统登录页用PowerShell获取SharePoint文档清单
方法1:使用PnP PowerShell的交互式登录
这是处理SharePoint文档库条目最便捷的方式,原生支持MFA的传统登录页验证:
- 安装PnP PowerShell模块(未安装时执行):
Install-Module -Name PnP.PowerShell -Force -AllowClobber - 启动交互式登录,会弹出标准登录页让你输入凭证并完成MFA验证:
Connect-PnPOnline -Url "https://你的租户域名.sharepoint.com/sites/目标站点" -Interactive - 登录成功后,即可遍历文档库提取条目信息,示例脚本:
# 获取当前站点下所有非隐藏的文档库 $documentLibraries = Get-PnPList | Where-Object { $_.BaseType -eq "DocumentLibrary" -and $_.Hidden -eq $false } # 遍历每个文档库,提取文件信息 foreach ($lib in $documentLibraries) { Write-Host "正在处理文档库: $($lib.Title)" $items = Get-PnPListItem -List $lib -Fields "FileLeafRef", "FileRef", "FileSizeDisplay" foreach ($item in $items) { # 仅处理文件(排除文件夹) if ($item.FileSystemObjectType -eq "File") { [PSCustomObject]@{ 名称 = $item["FileLeafRef"] 位置 = $item["FileRef"] 大小 = $item["FileSizeDisplay"] } } } }
方法2:使用SharePoint Online Management Shell结合交互式登录
如果需要批量处理租户下所有站点,可先通过SPO管理Shell获取站点列表,再逐个站点进行交互式登录:
- 安装SharePoint Online Management Shell后打开该工具,执行连接命令:
Connect-SPOService -Url "https://你的租户域名-admin.sharepoint.com" -Interactive - 获取所有站点后,逐个站点使用PnP PowerShell进行文档库处理(需结合站点级的交互式登录):
$allSites = Get-SPOSite foreach ($site in $allSites) { Write-Host "正在处理站点: $($site.Url)" # 针对单个站点启动交互式登录 Connect-PnPOnline -Url $site.Url -Interactive # 后续文档库遍历逻辑同方法1 $documentLibraries = Get-PnPList | Where-Object { $_.BaseType -eq "DocumentLibrary" -and $_.Hidden -eq $false } foreach ($lib in $documentLibraries) { # ... 提取文件信息的代码 ... } }
注意事项
- 确保执行脚本的账号拥有目标站点及文档库的读取权限
- 首次运行PowerShell脚本可能需要调整执行策略:
按提示输入Set-ExecutionPolicy RemoteSignedY确认即可。
内容的提问来源于stack exchange,提问作者adc
相关产品推荐
相关产品推荐

