Activate Infopath forms on all site collections
#Script to take all your infopath forms in folder, upload to central administration and activate it on selected site collections (or all)
#ActivateInfoPathForm.ps1 is on link
https://mypowershell.webnode.sk/news/activate-infopath-form-on-site-collection/
#UploadInfoPathForm.ps1 is on link
https://mypowershell.webnode.sk/news/upload-infopath-form-template-to-central-administration/
Add-PSSnapin microsoft.sharepoint.powershell
$ErrorActionPreference = "Stop"
$location = Split-Path $script:MyInvocation.MyCommand.Path
# ============================ input parameters ================================
#$sourceFolderPath = "c:\Users\Administrator\Documents\Mosr-scripts\ActivateForms\FormulareZaskis\Vyber\"
$sourceFolderPath = Join-path $location "\Forms\"
#path to scripts 'UploadInfoPathForm.ps1' and 'ActivateInfoPathForm.ps1'
$scriptLocation = (get-item $sourceFolderPath).parent.parent.parent.FullName
#site collection list where to activate forms
$siteCollectionUrls = get-spsite -limit all ' select -ExpandProperty Url
#$siteCollectionUrls = @("https://server/sitecollection1", "https://server/sitecollection2")
# ============================ end of required parameters ================================
function Heading($heading)
{
Write-Host "==============================================================" -ForegroundColor Green
Write-Host " " $heading " " -ForegroundColor Green
Write-Host "==============================================================" -ForegroundColor Green
}
#Get all xsn files from folder
$formsFullPaths = Get-ChildItem -LiteralPath $sourceFolderPath ' where {$_.Extension -eq ".xsn"} ' select -ExpandProperty FullName
if($formsFullPaths -ne $null)
{
#Upload InfoPath forms to Central Administration
$count = $formsFullPaths.Count
$i=1
foreach($eForm in $formsFullPaths)
{
Heading ("{0}/{1}" -f $i, $count)
& $scriptLocation\UploadInfoPathForm.ps1 -formTemplateFullName $eForm
$i++
}
#Activate each form on each site collection
$i=1
foreach($eForm in $formsFullPaths)
{
Heading ("{0}/{1}" -f $i, $count)
foreach($siteCollectionUrl in $siteCollectionUrls)
{
& $scriptLocation\ActivateInfoPathForm.ps1 -siteUrl $siteCollectionUrl -formTemplateFullName $eForm
}
$i++
}
}
else
{
"No forms found in '{0}'" -f $sourceFolderPath
}