Monday 30 November 2015
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
}
Subscribe to:
Posts (Atom)