Publish files which are not published by users
#Set-ExecutionPolicy Unrestricted
#Set-ExecutionPolicy RemoteSigned
cls
$Host.UI.RawUI.WindowTitle = "-- Publish Files --"
$scriptdir = $PSScriptRoot
#$DatePrefix ="XML\"+ (Get-Date).ToString("MMddyyyyHHmm")
$DatePrefix ="XML\"
Write-Host "Loading the CSOM library" -foregroundcolor yellow
Add-Type -AssemblyName System.Web
# Paths to SDK. Please verify location on your c omputer.
Add-Type -Path "$scriptdir\Microsoft.SharePoint.Client.dll"
Add-Type -Path "$scriptdir\Microsoft.SharePoint.Client.Runtime.dll"
Add-Type -Path "$scriptdir\Microsoft.SharePoint.Client.Publishing.dll"
Add-Type -Path "$scriptdir\Microsoft.SharePoint.Client.Taxonomy.dll"
Write-Host "Succesfully loaded the CSOM library" -foregroundcolor green
# Insert the credentials and the name of the admin site
$Username="gaurav@goyal.com";
$AdminPassword=Read-Host -Prompt "Password" -AsSecureString;
$AdminUrl="<<Your Site Collection URL"
$StyleLibrary="Style Library"
$MasterPage="Master Page Gallery"
Write-Host "Connecting to site" -foregroundcolor yellow
$ctx=New-Object Microsoft.SharePoint.Client.ClientContext($AdminUrl)
$ctx.Credentials = New-Object Microsoft.SharePoint.Client.SharePointOnlineCredentials($Username, $AdminPassword)
Function getUnPublishedFiles($listName){
Write-Host ""
Write-Host ""
Write-Host ""
Write-Host "Working on $listName....." -ForegroundColor Gray
Write-Host "Creating file $listName.txt" -foregroundcolor yellow
$xmlFilePath = "$scriptdir\XML\$listName.txt"
#Create Export Files
New-Item $xmlFilePath -type file -force
#Managed Client Object Model CAML Query Syntax
$spList = $ctx.Web.Lists.GetByTitle($listName);
$localWeb=$ctx.Web;
$ctx.Load($spList);
$ctx.Load($localWeb);
$ctx.ExecuteQuery();
if ($spList -ne $null -and $spList.ItemCount -gt 0)
{
#$camlQuery = New-Object Microsoft.SharePoint.Client.CamlQuery()
$camlQuery =[Microsoft.SharePoint.Client.CamlQuery]::CreateAllItemsQuery(1000);
$camlQuery.ViewXml = "<View Scope='RecursiveAll'>"+
"<Query>"+
"<OrderBy>"+
"<FieldRef Name='FileRef' />"+
"</OrderBy>"+
"<Where>"+
"<Neq>"+
"<FieldRef Name='_ModerationStatus' />"+
"<Value Type='ModStat'>0</Value>"+
"</Neq>"+
"</Where>"+
"</Query>"+
"<ViewFields>"+
"<FieldRef Name='FileLeafRef' />"+
"<FieldRef Name='FileRef' />"+
"<FieldRef Name='_ModerationStatus' />"+
"</ViewFields>"+
"</View>";
$listItems = $spList.GetItems($camlQuery);
$ctx.Load($listItems);
$ctx.ExecuteQuery()
foreach($item in $listItems)
{
$fileURL=$item["FileRef"].ToString()
Write-Host $fileURL
Add-Content $xmlFilePath $fileURL
$newFile = $localWeb.GetFileByServerRelativeUrl($fileURL);
$newFileItem = $newFile.ListItemAllFields;
$ctx.Load($newFile);
$ctx.Load($newFileItem);
$ctx.ExecuteQuery();
$newFile.Publish('Auto publsieh');
}
Invoke-Item "$scriptdir\XML\$listName.txt"
}
}
getUnPublishedFiles($StyleLibrary)
getUnPublishedFiles($MasterPage)
Invoke-Item "$scriptdir\XML\"
#Set-ExecutionPolicy RemoteSigned
cls
$Host.UI.RawUI.WindowTitle = "-- Publish Files --"
$scriptdir = $PSScriptRoot
#$DatePrefix ="XML\"+ (Get-Date).ToString("MMddyyyyHHmm")
$DatePrefix ="XML\"
Write-Host "Loading the CSOM library" -foregroundcolor yellow
Add-Type -AssemblyName System.Web
# Paths to SDK. Please verify location on your c omputer.
Add-Type -Path "$scriptdir\Microsoft.SharePoint.Client.dll"
Add-Type -Path "$scriptdir\Microsoft.SharePoint.Client.Runtime.dll"
Add-Type -Path "$scriptdir\Microsoft.SharePoint.Client.Publishing.dll"
Add-Type -Path "$scriptdir\Microsoft.SharePoint.Client.Taxonomy.dll"
Write-Host "Succesfully loaded the CSOM library" -foregroundcolor green
# Insert the credentials and the name of the admin site
$Username="gaurav@goyal.com";
$AdminPassword=Read-Host -Prompt "Password" -AsSecureString;
$AdminUrl="<<Your Site Collection URL"
$StyleLibrary="Style Library"
$MasterPage="Master Page Gallery"
Write-Host "Connecting to site" -foregroundcolor yellow
$ctx=New-Object Microsoft.SharePoint.Client.ClientContext($AdminUrl)
$ctx.Credentials = New-Object Microsoft.SharePoint.Client.SharePointOnlineCredentials($Username, $AdminPassword)
Function getUnPublishedFiles($listName){
Write-Host ""
Write-Host ""
Write-Host ""
Write-Host "Working on $listName....." -ForegroundColor Gray
Write-Host "Creating file $listName.txt" -foregroundcolor yellow
$xmlFilePath = "$scriptdir\XML\$listName.txt"
#Create Export Files
New-Item $xmlFilePath -type file -force
#Managed Client Object Model CAML Query Syntax
$spList = $ctx.Web.Lists.GetByTitle($listName);
$localWeb=$ctx.Web;
$ctx.Load($spList);
$ctx.Load($localWeb);
$ctx.ExecuteQuery();
if ($spList -ne $null -and $spList.ItemCount -gt 0)
{
#$camlQuery = New-Object Microsoft.SharePoint.Client.CamlQuery()
$camlQuery =[Microsoft.SharePoint.Client.CamlQuery]::CreateAllItemsQuery(1000);
$camlQuery.ViewXml = "<View Scope='RecursiveAll'>"+
"<Query>"+
"<OrderBy>"+
"<FieldRef Name='FileRef' />"+
"</OrderBy>"+
"<Where>"+
"<Neq>"+
"<FieldRef Name='_ModerationStatus' />"+
"<Value Type='ModStat'>0</Value>"+
"</Neq>"+
"</Where>"+
"</Query>"+
"<ViewFields>"+
"<FieldRef Name='FileLeafRef' />"+
"<FieldRef Name='FileRef' />"+
"<FieldRef Name='_ModerationStatus' />"+
"</ViewFields>"+
"</View>";
$listItems = $spList.GetItems($camlQuery);
$ctx.Load($listItems);
$ctx.ExecuteQuery()
foreach($item in $listItems)
{
$fileURL=$item["FileRef"].ToString()
Write-Host $fileURL
Add-Content $xmlFilePath $fileURL
$newFile = $localWeb.GetFileByServerRelativeUrl($fileURL);
$newFileItem = $newFile.ListItemAllFields;
$ctx.Load($newFile);
$ctx.Load($newFileItem);
$ctx.ExecuteQuery();
$newFile.Publish('Auto publsieh');
}
Invoke-Item "$scriptdir\XML\$listName.txt"
}
}
getUnPublishedFiles($StyleLibrary)
getUnPublishedFiles($MasterPage)
Invoke-Item "$scriptdir\XML\"
Comments