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