【问题标题】:powershell download file from Get-PnPListItem来自 Get-PnPListItem 的 powershell 下载文件
【发布时间】:2020-11-11 09:38:39
【问题描述】:

我对脚本和 powershell 很陌生,对我来说太简单了。 我的目标是在线连接到 Sharepoint,并下载上传到特定站点的最新文件。

目前我可以使用 Connect-PnPonline 连接到 Sharepoint,然后我使用 PnPListItem 来查询我需要的文件,但我被困在下载文件的最后一步。

这是我的代码:

cls
$SPOsite="https://example.sharepoint.com/sites/example"
$TargetFile="C:\example"
Connect-PnPOnline -Url $SPOsite -ClientId xxxxx-xxxxx-xxxxx-xxxx -ClientSecret secretsecret112233
$ListItems = Get-PnPListItem -List Documents | select -last 1 
$ctx= Get-PnPContext
foreach ($item in $ListItems)
{
        $file = $item.file
        $fileversions = $file.Versions
        $ctx.load($file)
        $ctx.load($fileversions)
        $ctx.ExecuteQuery()
        Write-Host $file.Name,$fileversions.VersionLabel
}
Get-PnPFile -Url "https://example.sharepoint.com/sites/example" -Filename $ListItems -Path $TargetFile -AsFile

我得到的错误信息是

Get-PnPFile : File Not Found.
At \\cifs-share.example.org\Usershome\user\Desktop\PowerShell\dwnldSPfiles.ps1:20 char:1
+ Get-PnPFile -Url "https://example.sharepoint.com/sites/example" -Fi ...
+ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
    + CategoryInfo          : WriteError: (:) [Get-PnPFile], ServerException
    + FullyQualifiedErrorId : EXCEPTION,PnP.PowerShell.Commands.Files.GetFile

【问题讨论】:

  • I tried using Get-PnPfile but it failed. 是怎么失败的?您收到错误消息了吗?
  • 我尝试使用这一行 Get-PnPFile -Url "example.sharepoint.com/sites/example" -Filename $ListItems -Path $TargetFile -AsFile 但我得到 File Not Found,如何将 $ListItems 返回结果传递给获取 PnP 文件?
  • 请更新您的原始帖子以包含错误消息。
  • 用错误信息更新了原帖,谢谢!

标签: powershell sharepoint-online


【解决方案1】:

试试这个:

$SharePointFolderPath = "Shared Documents"  
    $Files = Get-PnPFolderItem -FolderSiteRelativeUrl $SharePointFolderPath -ItemType File  
    foreach($File in $Files) {  
        if($File.Name -eq "file name"){
    Get-PnPFile -Url $File.ServerRelativeUrl -Path c:\Temp -FileName $File.Name -AsFile  
    }
        
    } 

Url 应该是您要下载的文件的 ServerRelativeUrl。

【讨论】:

  • 可以,但是必须在代码中指定要下载的文件,我的想法是下载从“Write-Host $file.名称,$fileversions.VersionLabel"
  • 我将您的行“Get-PnPFile -Url $File.ServerRelativeUrl -Path c:\Temp -FileName $File.Name -AsFile”添加到我拥有的第一个循环中,效果很好!谢谢
  • 不客气。如果我的回复对您有帮助,您可以将其标记为答案。谢谢。
猜你喜欢
  • 2017-05-01
  • 1970-01-01
  • 2014-05-17
  • 2013-06-06
  • 2019-08-03
  • 1970-01-01
  • 1970-01-01
  • 2022-11-10
  • 1970-01-01
相关资源
最近更新 更多