Monday 30 November 2015

Microsoft SharePoint is not supported in 32-bit process. Please verify that you are running in a 64-bit executable.






Solution :


In visual Studio Go to Project Properties ->Build  -> Platform target -Any CPU  and 

Click on Build which will fix the issue.












Copy files and Folders in SharePoint from One Site to anonther Site

Below PowerShell Script to copy files and folders from one Site to anonther through powershell

cls

asnp "*sh*"

write-Host "Please Provide the Source web site url and Desstination url"-foregroundcolor white -backgroundcolor blue
##
$SourceWebURL = read-host "Enter Source WebURL:"
$DestinationWebURL = read-host "Enter Destination WebURL:"
##
write-Host "Please Provide the Source library title and Destination library title"-foregroundcolor white -backgroundcolor blue
##
$SourceLibraryTitle = read-host "Enter Source LibraryTitle:"
$DestinationLibraryTitle = read-host "Enter Destination LibraryTitle:"
##
write-output "Started...";
##
$sWeb = Get-SPWeb $SourceWebURL
$sList = $sWeb.Lists | ? {$_.Title -eq $SourceLibraryTitle}
$dWeb = Get-SPWeb $DestinationWebURL
$dList = $dWeb.Lists | ? {$_.title -like $DestinationLibraryTitle}

$AllFolders = $sList.Folders
$RootFolder = $sList.RootFolder
$RootItems = $RootFolder.files

foreach($RootItem in $RootItems)
{
    $sBytes = $RootItem.OpenBinary()
    $dFile = $dList.RootFolder.Files.Add($RootItem.Name, $sBytes, $true)

    $AllFields = $RootItem.Item.Fields | ? {!($_.sealed)}

    foreach($Field in $AllFields)
    {
        if($RootItem.Properties[$Field.Title])
        {
            if(!($dFile.Properties[$Field.title]))
            {
                $dFile.AddProperty($Field.Title, $RootItem.Properties[$Field.Title])
            }
            else
            {
                $dFile.Properties[$Field.Title] = $RootItem.Properties[$Field.Title]
            }
        }
    }
    $dFile.Update()
}

foreach($Folder in $AllFolders)
{
    #Remove-Variable ParentFolderURL
        $varExists = Get-Variable ParentFolderURL -ErrorAction SilentlyContinue

    if($varExists -ne $null){

           Remove-Variable ParentFolderURL  }
    $i = 0
    
    $FolderURL = $Folder.url.Split("/")
        
    while($i -lt ($FolderURL.count-1))
    {
    $ParentFolderURL = "$ParentFolderURL/" + $FolderURL[$i]
    $i++
    }
    
    $CurrentFolder = $dList.Folders | ? {$_.url -eq $ParentFolderURL.substring(1)}
    if(!($CurrentFolder.Folders | ? {$_.name -eq $Folder.Name}))
    {
        $NewFolder = $dlist.Folders.Add(("$DestinationWebURL" + $ParentFolderURL), [Microsoft.SharePoint.SPFileSystemObjectType]::Folder, $Folder.name)
        $NewFolder.update()
    }
    else
    {
        $NewFolder = $dList.Folders | ? {$_.name -eq $Folder.Name}
    }
    $AllFiles = $sList.Items
    $sItems = $Folder.folder.Files
    
    if($Folder.Folder.Files.count -gt 0)
    {
        foreach($item in $sItems)
        {
            
            #$Relative = ($Item.ServerRelativeUrl).substring(1)
            $Relative = ($Item.Url)
            $TargetItem = $AllFiles | ? {$_.URL -eq $Relative}
            $sBytes = $TargetItem.File.OpenBinary()
            $dFile = $Newfolder.Folder.Files.Add($TargetItem.Name, $sBytes, $true)
            $AllFields = $TargetItem.Fields | ? {!($_.sealed)}
            
            foreach($Field in $AllFields)
            {
                if($TargetItem.Properties[$Field.Title])
                {
                    if(!($dFile.Properties[$Field.title]))
                    {
                        $dFile.AddProperty($Field.Title, $TargetItem.Properties[$Field.Title])
                    }
                    else
                    {
                        $dFile.Properties[$Field.Title] = $TargetItem.Properties[$Field.Title]
                    }
                }
            }
            $dFile.Update()
        }
    }
}
Write-Host "All Files are moved successfully" -foregroundcolor green

Export User alerts/ Export User Subscribed alerts in PowerShell


Write User Subscribed Alerts to CSV

Below is the PowerShell script which will export the Users who have subscribed alerts to lists and librarys in the site.

SharePoint Out of the box the provides to view users alerts SiteSettings->Usrs alerts , select the user from dropdownlist which will show huge chunk of users , select the user and click on update button which will show documentlibrary or lists which selected user has subscribed alerts.

But above requirement will not solve our problem where we need to view the consolidated list users instead of selecting each time single user through UI,

Either we can go through custom coding or powershell , below is the powershell script


cls

asnp "*sh*"

$web=Get-SPWeb http://SharePoint2013:1555/

$alerts=$web.Alerts

foreach($alert in $alerts)

{

$alert.List.Title + " ......" $alert.User.DisplayName + "   " + 

$alert.User.DisplayName  | Out-File E:\Ms\UserAlerts.csv -Encoding 

ascii -Append -Width 100

}