0

I am pretty new to powershell and a complete novice with Sharepoint. My goal is to move all files in a Sharepoint documents subfolder called "Signed tickets". Right now, I have a script that is successfully copying ALL files in the document library. I also would like to do away with the creation of a new folder in the source destination which is currently being done in the script. I just need the files.

I tried changing the copyto part to moveto but that failed saying [System.Net.ConnectStream] does not contain a method named 'MoveTo'. I've copied the script below. Any help is greatly appreciated!!

Set parameter values

$SiteURL="https://advhomecare.sharepoint.com/teams/CPRPlusPST/"

$LibraryName="Documents"

$TargetFolder="\cpr-appsprod\cprsql\incoming"

Setup Credentials to connect

$Cred= Get-Credential

$Credentials = New-Object Microsoft.SharePoint.Client.SharePointOnlineCredentials($Cred.Username, $Cred.Password)

Setup the context

$Ctx = New-Object Microsoft.SharePoint.Client.ClientContext($SiteURL)

$Ctx.Credentials = $Credentials

Get the Library

$List = $Ctx.Web.Lists.GetByTitle($LibraryName)

$Ctx.Load($List)

$Ctx.Load($List.RootFolder)

$Ctx.ExecuteQuery()

Load SharePoint CSOM Assemblies

Add-Type -Path "C:\Program Files\Common Files\Microsoft Shared\Web Server Extensions\15\ISAPI\Microsoft.SharePoint.Client.dll"

Add-Type -Path "C:\Program Files\Common Files\Microsoft Shared\Web Server Extensions\15\ISAPI\Microsoft.SharePoint.Client.Runtime.dll"

Function Download-AllFilesFromLibrary()

{

param

(

    [Parameter(Mandatory=$true)] [string] $SiteURL,

    [Parameter(Mandatory=$true)] [Microsoft.SharePoint.Client.Folder] $SourceFolder,

    [Parameter(Mandatory=$true)] [string] $TargetFolder

)

Try {



    #Create Local Folder, if it doesn't exist

    $FolderName = ($SourceFolder.ServerRelativeURL) -replace "/","\"

    $LocalFolder = $TargetFolder + $FolderName

    If (!(Test-Path -Path $LocalFolder)) {

            New-Item -ItemType Directory -Path $LocalFolder | Out-Null

    }



    #Get all Files from the folder

    $FilesColl = $SourceFolder.Files

    $Ctx.Load($FilesColl)

    $Ctx.ExecuteQuery()

    #Iterate through each file and download

    Foreach($File in $FilesColl)

    {

        $TargetFile = $LocalFolder+"\"+$File.Name

        #Download the file

        $FileInfo = [Microsoft.SharePoint.Client.File]::OpenBinaryDirect($Ctx,$File.ServerRelativeURL)

        $WriteStream = [System.IO.File]::Open($TargetFile,[System.IO.FileMode]::Create)

        $FileInfo.Stream.CopyTo($WriteStream)

        $WriteStream.Close()

        write-host -f Green "Downloaded File:"$TargetFile

    }



    #Process Sub Folders

    $SubFolders = $SourceFolder.Folders

    $Ctx.Load($SubFolders)

    $Ctx.ExecuteQuery()

    Foreach($Folder in $SubFolders)

    {

        If($Folder.Name -ne "Forms")

        {

            #Call the function recursively

            Download-AllFilesFromLibrary -SiteURL $SiteURL -SourceFolder $Folder -TargetFolder $TargetFolder

        }

    }

}

Catch {

    write-host -f Red "Error Downloading Files from Library!" $_.Exception.Message

}

}

Call the function to download file

Download-AllFilesFromLibrary -SiteURL $SiteURL -SourceFolder $List.RootFolder -TargetFolder $TargetFolder

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Browse other questions tagged or ask your own question.