2017-03-08 65 views
1

私はSPOのサイトコレクションURLにファイルをアップロードできますが、サブフォルダはアップロードできないようです。たとえば、「https://xyz.sharepoint.com/sites/Reporting」にアップロードできますが、「https://xyz.sharepoint.com/sites/Reporting/Sales」にはアップロードできません。ここでは作業コードの該当ビットです:Powershellを使用してSharepointOnlineサブフォルダにアップロードする

$Username = "[email protected]" 
$Password = "Password" 
$SiteCollectionUrl = "https://xyz.sharepoint.com/sites/Reporting" 
$securePassword = ConvertTo-SecureString $password -AsPlainText -Force 
$DocLibName = "Sales" 

$Folder="C:\MySalesFolder" 

    Function Get-SPOCredentials([string]$UserName,[string]$Password) 
    { 
     $SecurePassword = $Password | ConvertTo-SecureString -AsPlainText -Force 
     return New-Object Microsoft.SharePoint.Client.SharePointOnlineCredentials($UserName, $SecurePassword) 
    } 
    $Context = New-Object Microsoft.SharePoint.Client.ClientContext($SiteCollectionUrl) 
    $Context.Credentials = Get-SPOCredentials -UserName $UserName -Password $Password 

    #Retrieve list 
    $List = $Context.Web.Lists.GetByTitle($DocLibName) 
    $Context.Load($List) 
    $Context.ExecuteQuery() 

    #Upload file 
    Foreach ($File in (dir $Folder -File)) 
    { 
    $FileStream = New-Object IO.FileStream($File.FullName,[System.IO.FileMode]::Open) 
    $FileCreationInfo = New-Object Microsoft.SharePoint.Client.FileCreationInformation 
    $FileCreationInfo.Overwrite = $true 
    $FileCreationInfo.ContentStream = $FileStream 
    $FileCreationInfo.URL = $File 
    $Upload = $List.RootFolder.Files.Add($FileCreationInfo) 
    $Context.Load($Upload) 
    $Context.ExecuteQuery() 

私は「/販売」のサブフォルダが、運をハードコーディングしてみました。誰でも私を正しい方向に向けることができますか?

答えて

1

Trying to upload files to subfolder in Sharepoint Online via Powershellによると、あなたはFileCreationURLを修正する必要があります。

$FileCreationInfo.URL = $List.RootFolder.ServerRelativeUrl + "/" + $FolderName + "/" + $File.Name 

私はあなたは自分のルートディレクトリにフォルダパスを$ File.Nameを付加する必要があると考えています。

Web.GetFolderByServerRelativeUrl方法:

また... List.RootFolder経由でアップロードしようとすると、あなたは

$List = $Context.Web.Lists.GetByTitle($DocLibName) 
$Context.Load($List.RootFolder) 
$Context.ExecuteQuery() 
$FolderName = "Sales" 

$TargetFolder = $Context.Web.GetFolderByServerRelativeUrl($List.RootFolder.ServerRelativeUrl + "/" + $FolderName); 

その後のためのあなたのターゲットフォルダを取得するには、 "GetFolderByServerRelativeUrl" メソッドを使用することができますあなたが使用するアップロード

$FileCreationInfo.URL = $File.Name 
$UploadFile = $TargetFolder.Files.Add($FileCreationInfo) 
$Context.Load($UploadFile) 
$Context.ExecuteQuery() 
+0

$ FolderName = "Sales"を設定しようとしましたが、エラーをスローしました例外 "Execu引数が "0"の "teQuery": "値が期待範囲内に収まらない" – rustynails

+0

$ FileCreationInfo.URLから上記のように設定した後、どの出力を得ますか? – dwarfsoft

+0

URL: "/Reporting/Sales/Foo.txt"私はsharepoint.com先行URLがないと思いますか? Foo.txtが私のテストファイル – rustynails

関連する問題