Taylohtio/_Scripts/backup-doclibs/backup-doclibs.ps1

101 lines
1.8 KiB
PowerShell

param(
[Parameter(Mandatory=$true)]
[string]$url
)
function Write-Log($msg)
{
Write-Host $msg -foregroundcolor green
($msg) | Out-File "log-backup-doclibs.txt" -Append
}
function Get-Web($webs, $title)
{
foreach ($web in $webs)
{
if ($web.Title -eq $title)
{
return $web
}
}
return $null
}
function Get-Doclib($lists, $title)
{
foreach ($list in $lists)
{
if ($list.Title -eq $title)
{
return $list
}
}
return $null
}
function Backup-Doclib($web, $doclib)
{
$dirName = $web.Url.Replace("https://", "").Replace(".", "_").Replace("/", "_")
$dirName = $PSScriptRoot + "/backups/" + $dirName
[System.IO.Directory]::CreateDirectory($dirName)
foreach ($item in $doclib.Items)
{
$file = $item.File
Write-Log ($file.Name)
$fileBytes = $file.OpenBinary()
$fileTo = $dirName + "/" + $file.Name
$fileStream = New-Object System.IO.FileStream($fileTo, "Create")
$binaryWriter = New-Object System.IO.BinaryWriter($fileStream)
$binaryWriter.Write($fileBytes)
$binaryWriter.Close()
}
}
function Backup-Web($web)
{
Write-Log ($web.Url)
$doclib = Get-Doclib $web.Lists "Tiedostot"
if ($doclib -ne $null)
{
Backup-Doclib $web $doclib
}
}
function Backup-Condo($web)
{
Write-Log ($web.Url)
$webAsukkaille = Get-Web $web.Webs "Asukkaille"
if ($webAsukkaille -ne $null)
{
Backup-Web $webAsukkaille
}
$webOsakkaille = Get-Web $web.Webs "Osakkaille"
if ($webOsakkaille -ne $null)
{
Backup-Web $webOsakkaille
}
$webHallitukselle = Get-Web $web.Webs "Hallitukselle"
if ($webHallitukselle -ne $null)
{
Backup-Web $webHallitukselle
}
}
function Backup-Pmc($site)
{
foreach ($web in $site.RootWeb.Webs)
{
Backup-Condo $web
}
}
<#$wa = Get-SPWebApplication $url
foreach ($site in $wa.Sites)
{
Backup-Pmc $site
}#>
$site = Get-SPSite $url
Backup-Pmc $site