Friday, December 2, 2016

Delete all files & folders from SharePoint library

Add-PSSnapin Microsoft.SharePoint.PowerShell

# Replace siteurl with actual web url
$web = Get-SPWeb -Identity "siteurl"
# Replace docurl with document library url
$list = $web.GetList("docurl")

function DeleteFiles {
    param($folderUrl)
    $folder = $web.GetFolder($folderUrl)
    foreach ($file in $folder.Files) {
        # Delete file by deleting parent SPListItem
        Write-Host("DELETED FILE: " + $file.name)
        $list.Items.DeleteItemById($file.Item.Id)
    }
}

# Delete root files
DeleteFiles($list.RootFolder.Url)

# Delete files in folders
foreach ($folder in $list.Folders) {
    DeleteFiles($folder.Url)
}

# Delete folders
foreach ($folder in $list.Folders) {
    try {
        Write-Host("DELETED FOLDER: " + $folder.name)
        $list.Folders.DeleteItemById($folder.ID)
    }
    catch {
        # Deletion of parent folder already deleted this folder
    }
}

Tuesday, November 29, 2016

CAML, get all list items where text field contains a value?

Server Object Model:


query.Query = "<Where><Contains><FieldRef Name="Name"/><Value Type="Text">" + "YourValue" + "/Value></Contains></Where>";




Client Object Model:

"<Query><Where><Contains><FieldRef Name="Name"/><Value Type="Text">" + "YourValue" + "/Value></Contains></Where></Query>";

CAML query filter for HTML BR tag

<Value Type="Note"><!CDATA[<BR>]]></Value>

<Query>
   <Where>
      <Contains>
         <FieldRef Name='title_id ' />
         <Value Type='Computed'>o</Value>
      </Contains>
   </Where>
</Query>

CAML: Filter URL field on description

In CAML query, 'complex' fields which store multiple values, only the 'default' value is available to query - by this I mean what would be available when SPField.GetFieldValueAsText() 

How to build a CAML query with where clause?

We can SPUserField as SPLookupField

<Query> 
     <Where> 
         <And> 
              <Eq> 
                  <FieldRef Name='UserField'/> 
                  <Value Type='Lookup'>" + username + "</Value> 
              </Eq> 
              <Eq> 
                   <FieldRef Name='UserField' LookupId='True' /> 
                   <Value Type='Lookup'>" + ID + "</Value> 
              </Eq>
         </And> 
     </Where> 
 </Query>