What i am trying to acchieve is to write a script that will automatically update all master pages on all site collections in a certain web application.
The only problem i am having is that when i have uploaded the master page to the master page gallery, it is not yet checked in.
I would like yo check in the masterpage from powershell so everyone can see it.
Here is some code to demonstrate, this is not all ofcourse:
$web = $SPSite.OpenWeb();
$MasterPagelist = ($web).Lists |? {$_.Title -eq "Master Page Gallery"}
#Try to upload the master page.
try
{
$MasterPagelist.RootFolder.Files.Add($MasterPageName, $MasterPageBytes) | out-null;
if($debug){Write-Host "Added master page to root folder of master page gallery..." -foregroundcolor Green}
}
catch
{
Write-Host "Error : $_" -foregroundcolor Red
#exit
}
$item = $MasterPagelist.items |? {$_.Name -eq $MasterPageName}
#Set the master page to te wanted item.
foreach ($website in $SPSite.AllWebs)
{
$website.CustomMasterUrl = "/" + $item.url
$website.MasterUrl = "/" + $item.url
if($debug){Write-Host "Set the master page of" $website.Url "to" $MasterPageName -foregroundcolor Green}
$website.Update()
}
after setting it this way, everything works for the user i set it from but when i type:
$masterpage.HasPublishedVersion
I get false.
Also no one can view the page except for me.
So my question, how do i check in(Major Version) this file from powershell?