Category Archives: Administration

Activating all Publishing Feature – Programmatically & Powershell – SharePoint 2010, 2013, 2016 & Online:

Hi Everyone!!!

Today i will talk about Publishing Features!!! During this afternoon I was trying to activate Publishing Features but i wasn’t having success because Page Library not was created on activation! So there are more than two Publishing Feature that we need have in consideration, it’s not enough Activate Publishing Infrastructure Feature and Publishing Feature. If you want activate all Publishing Features you can do it pragmatically or using Powershell script:

SharePoint Server – Powershell:

 
Disable-SPFeature –identity 'publishingSite' -URL http://server/ -force
Disable-SPFeature –identity 'PublishingResources' -URL http://server/-force
Disable-SPFeature –identity 'Publishing' -URL http://server/ -force
Disable-SPFeature –identity 'PublishingLayouts' -URL http://server/ -force
Disable-SPFeature –identity 'publishingweb' -URL http://server/ -force

Enable-SPFeature –identity 'publishingSite' -URL http://server/ -force
Enable-SPFeature –identity 'PublishingResources' -URL http://server/ -force
Enable-SPFeature –identity 'Publishing' -URL http://server/ -force
Enable-SPFeature –identity 'PublishingLayouts' -URL http://server/ -force
Enable-SPFeature –identity 'publishingweb' -URL http://server/ -force

SharePoint Online – Powershell:

 
Disable-SPOFeature –Identity "F6924D36-2FA8-4f0b-B16D-06B7250180FA" -Scope Site
Disable-SPOFeature –Identity "AEBC918D-B20F-4a11-A1DB-9ED84D79C87E" -Scope Site
Disable-SPOFeature –Identity "22A9EF51-737B-4ff2-9346-694633FE4416" -Scope Web
Disable-SPOFeature –Identity "D3F51BE2-38A8-4e44-BA84-940D35BE1566" -Scope Site
Disable-SPOFeature –Identity "94C94CA6-B32F-4da9-A9E3-1F3D343D7ECB" -Scope Web

Enable-SPOFeature –Identity "F6924D36-2FA8-4f0b-B16D-06B7250180FA" -Scope Site
Enable-SPOFeature –Identity "AEBC918D-B20F-4a11-A1DB-9ED84D79C87E" -Scope Site
Enable-SPOFeature –Identity "22A9EF51-737B-4ff2-9346-694633FE4416" -Scope Web
Enable-SPOFeature –Identity "D3F51BE2-38A8-4e44-BA84-940D35BE1566" -Scope Site
Enable-SPOFeature –Identity "94C94CA6-B32F-4da9-A9E3-1F3D343D7ECB" -Scope Web

Also that you can activate Programmatically:

 

        private void ActivatePublishingFeatures(SPWeb web, SPSite site)
        {
            // Publishing Site
            string sharePointPublishingSite = "f6924d36-2fa8-4f0b-b16d-06b7250180fa";
            Guid sharePointPublishingSiteGuid = new Guid(sharePointPublishingSite);

            if (site.Features[sharePointPublishingSiteGuid] == null)
            {
                site.Features.Add(sharePointPublishingSiteGuid, true);
            }

            // Publishing Resources
            string sharePointPublishingResources = "aebc918d-b20f-4a11-a1db-9ed84d79c87e";
            Guid sharePointPublishingResourcesGuid = new Guid(sharePointPublishingResources);

            if (site.Features[sharePointPublishingResourcesGuid] == null)
            {
                site.Features.Add(sharePointPublishingResourcesGuid, true);
            }

            // Publishing
            string sharePointPublishing = "22a9ef51-737b-4ff2-9346-694633fe4416";
            Guid sharePointPublishingGuid = new Guid(sharePointPublishing);

            if (web.Features[sharePointPublishingGuid] == null)
            {
                web.Features.Add(sharePointPublishingGuid, true);
            }

            // Publishing Layouts
            string sharePointPublishingLayouts = "d3f51be2-38a8-4e44-ba84-940d35be1566";
            Guid sharePointPublishingLayoutsGuid = new Guid(sharePointPublishingLayouts);

            if (site.Features[sharePointPublishingLayoutsGuid] == null)
            {
                site.Features.Add(sharePointPublishingLayoutsGuid, true);
            }

            // Publishing Web
            string sharePointServerPublishingWeb = "94c94ca6-b32f-4da9-a9e3-1f3d343d7ecb";
            Guid sharePointServerPublishingWebGuid = new Guid(sharePointServerPublishingWeb);

            if (web.Features[sharePointServerPublishingWebGuid] == null)
            {
                web.Features.Add(sharePointServerPublishingWebGuid, true);
            }
        }

Thanks

Fábio Carvalho
SharePoint Consultant
|create|it|

 

 

SharePoint – Get all alerts from a specific SP List/Library using Powershell

Hey Everyone!!!

Today i will talk about List and Library Alerts and how can you get all Active alerts for a specific list using powershell script and how can you disable all alerts.

This is very useful script, when you need move a large list of items on a maintenance routine and you don’t want send a large number of emails/ notifications for users who subscribe alerts, this script help you disable and enable them.

This first PowerShell Script get all SharePoint list alerts with state active.

 

Add-PSSnapin Microsoft.SharePoint.PowerShell –ErrorAction SilentlyContinue

#Variables
$WebURL = "http://YourWebUrl"
$ListName="YourListName"

#Function to Get All Active Alerts on a Given List
Function Get-ListAlerts($WebURL, $ListName)
{
  #Get the Web and List objects
  $Web = Get-SPWeb $WebURL
  $List = $web.Lists.TryGetList($ListName)

  #Get All Alerts created in the list - Which are Active
  $ListAlerts = $Web.Alerts | Where-Object {($_.List.Title -eq $List.Title) -and ($_.Status -eq "ON")}

  foreach($Alert in $ListAlerts)
  {
          write-host "Alert' - $($Alert.Title)' Created for User - '$($Alert.User.Name)'"
  }

 #Dispose web object
 $Web.Dispose()
}

#Call the function Appropriately to Disable or Enable Alerts 
Disable-ListAlerts $WebURL $ListName

 

 

If you want disable all alerts on this specific list you just need run the following script.

 

Add-PSSnapin Microsoft.SharePoint.PowerShell –ErrorAction SilentlyContinue

#Variables
$WebURL = "http://YourWebUrl"
$ListName="YourListName"

#Function to Disable All Active Alerts on a Given List
Function Disable-ListAlerts($WebURL, $ListName)
{
  #Get the Web and List objects
  $Web = Get-SPWeb $WebURL
  $List = $web.Lists.TryGetList($ListName)

  #Get All Alerts created in the list - Which are Active
  $ListAlerts = $Web.Alerts | Where-Object {($_.List.Title -eq $List.Title) -and ($_.Status -eq "ON")}

  Write-host "Total Number of Active Alerts Found in the list: $($ListAlerts.Count)" 
 
  #Iterate through each alert and turn it OFF
  foreach($Alert in $ListAlerts)
  {
     $Alert.Status="OFF"
     $Alert.Update()
     write-host "Disabled the Alert' $($Alert.Title)' Created for User '$($Alert.User.Name)'"
  }
 
 #Dispose web object
 $Web.Dispose()
}

#Call the function Appropriately to Disable or Enable Alerts 
Disable-ListAlerts $WebURL $ListName

 

Thanks

Fábio Carvalho
SharePoint Consultant
|create|it|

SharePoint Online – Storage Metrics – Monitor storage usage in your Site Collection

Hey Everyone!!!

Today i will talk about Storage Metrics in your SharePoint Site Collection!!!

Everyone knows what is the main feature on SharePoint that you could interact with and Structure of SharePoint Site Collections! right!? Site Content and Struct (/_layouts/sitemanager.aspx)!!!

Site Content and Structure page, give you a great overview about all your Site Collection structure. This feature, available since Microsoft Office SharePoint Server 2007, give the capability to navigate dynamically on your site collection hierarchy, it is familiar to Windows Explorer in fact. You can see the site collection hierarchy in the navigation pane as a tree view on the left of the Site Content and Structure page.

But, if you need know more details about storage, probably don’t help you as you expect, so in this case you case access to Storage Metrics (/_layouts/storman.aspx).

 

Storage Metrics underneath Site Collection Administration, access to your all sub-sites and libraries in SharePoint Online ( also available for SharePoint 2010, SharePoint 2013 and SharePoint 2016) and give you the information about how much storage they are consuming.

It is great!!! Because Storage Metrics allows you to drill down to each site, library and even folder to show a very granular report on your storage consumption, this is very important if you need migrate a large lists or even you are planning an migration between SharePoint Versions without any 3rd Party tool.

Take a Look:

 

 

Thanks

Fábio Carvalho
SharePoint Consultant
|create|it|

SharePoint 2016 – Create Service Accounts using PowerShell script

Hey Everyone!!!

Today i will show you how can you create SharePoint 2016 Service Accounts using PowerShell script following the Best Practices.

The script not only create all the accounts but also create the respectives OU (Organizational Unit):

  • SharePoint Accounts
  • SQL Accounts

Service Accounts:

 Name Description Local Rights Domain Rights
SP_FarmThe server farm account is used to perform the following tasks:
-Configure and manage the server farm.
-Act as the application pool identity for the SharePoint Central Administration Web site.
-Run the Microsoft SharePoint Foundation Workflow Timer Service.
SecurityAdmin and DB_Creator rights on the SQL InstanceDomain User
SP_AdminThe server farm account is used to perform the following tasks:
-Setup
-SharePoint Products Configuration Wizard
Local Administrator on all the SharePoint Servers. SecurityAdmin and DB_Creator rights on the SQL InstanceDomain User
SP_PoolThe Pool account is used to run the Web Application PoolsNoneDomain User
SP_ServicesThe Services Account is used to run the Service Application PoolNoneDomain User
SP_CrawlThe Default Content Access Account for the Search Service ApplicationNoneDomain User
SP_SearchService Account to run the SharePoint Search “Windows Service”NoneDomain User
SP_UserProfilesThe User Profile Synchronization AccountNoneDomain User
SP_MySitePoolUsed for the My Sites Web ApplicationNoneDomain User
SP_CacheSuperUserObject Cache Service Account. The goals of the object cache are to reduce the load on the computer on which SQL Server is running, and to improve request latency and throughput. These user account must be properly configured to ensure that the object cache works correctly.None.
SharePoint: Must be an account that has Full Control access to the Web application.
Domain User
SP_CacheSuperReaderObject Cache Service Account. The goals of the object cache are to reduce the load on the computer on which SQL Server is running, and to improve request latency and throughput. These user account must be properly configured to ensure that the object cache works correctly.None.
SharePoint: Must be an account that has Full Read access to the Web application
Domain User
WF_ServiceWorkFlow Manager Service AccountLocal Administrator and SysAdmin rights on the SQL instance.Domain User
SP_MySitePoolUsed for the My Sites Web ApplicationNoneDomain User
SP_VisioUserVisio Unattended IDNoneDomain User
SP_ExcelUserExcel Unattended IDNoneDomain User
SP_PerfPointUserPerformance Point Unattended IDNoneDomain User
SQL_AdminSQL Admin on the SQL Server. Used to Install the SQL Server.Local Administrator on the SQL ServerDomain User
SQL_ServicesIt is the service account for the following SQL Server services: MSSQLSERVER SQLSERVERAGENTNoneDomain User


Script:

 

$mydom = (get-addomain).distinguishedname 
$password = "pass@word1" | ConvertTo-SecureString -AsPlainText -Force 

$ouNameSP = "SharePoint Accounts"
$oudnSP = "OU=$ounameSP,$mydom" 

$ouNameSQL = "SQL Accounts" 
$oudnSQL = "OU=$ounameSQL,$mydom" 

#----------------------------> Organizational Unit <---------------------------- 

New-ADOrganizationalUnit -Name $OUNameSP -Path $mydom 
Write-Host "OU $OUNameSP Created" -foregroundcolor green 

New-ADOrganizationalUnit -Name $OUNameSQL -Path $mydom 
Write-Host "OU $OUNameSQL Created" -foregroundcolor green 

#-----------------------------> SharePoint 2016 <-------------------------------

$usersArraySP = @("SP_Farm","SP_Admin","SP_Pool","SP_Services","SP_Crawl","SP_Search",
                  "SP_UserProfiles","SP_PortalSuperReader","SP_CacheSuperUser","SP_VisioUser",
                  "SP_PerfPointUser","WF_Service","SP_MySitePool","SP_PortalSuperUser")

foreach ($usp in $usersArraySP) {
        New-ADUser -Name $usp -DisplayName $usp -SamAccountName $usp -AccountPassword $password 
        -ChangePasswordAtLogon $false -PassThru -PasswordNeverExpires $true -Path $oudnSP 
        Write-Host "$usp Created" -foregroundcolor green
 }

#----------------------------------> SQL <--------------------------------------
$usersArraySQL = @("SQL_Admin","SQL_Service")

foreach ($usql in $usersArraySQL) {
       New-ADUser -Name $usql -DisplayName $usql -SamAccountName $usql -AccountPassword $password 
       -ChangePasswordAtLogon $false -PassThru -PasswordNeverExpires $true -Path $oudnSQL
       Write-Host "$usql Created" -foregroundcolor green
 }

 

Thanks

Fábio Carvalho
SharePoint Consultant
|create|it|

SharePoint Scenarios – Online, On-Premises or Hybrid!?

Hey Everyone!!!

Today i’m going to talk about SharePoint Scenarios and what are the main difference between this three types of scenarios and what scenario should be the option for your environment…

So, the three types of architecture scenario that you can have on your SharePoint environment are the following:

What should you choose?! Well in fact there are so many question that you need answered before take an decision!?

 

It isn’t easy take a decision, let’s analyse what are the main benefits each architecture:

SharePoint On-Premises:

  • Private Cloud
  • Dedicated environment
  • Internally hosted
  • Internally managed
  • Internal designed
 ProsCons
Control PerformanceCost of internal resources (staff, hardware, software, etc)
Scale Up and Scale OutAdditional Geographic redundancy costs
Reduces Bandwidth requirementsDisaster Recovery dependent on internal capabilities
Full CustomizationScale Up/Out Cost( SW/HW)
Full Server and SQL DatabasePatching Servers/farms
Migrate as NeededExtra configurations for External Collaboration
Seamless Single Sign on with Corporate Active Directory
  • Migration Flow:

SharePoint Online:

  • Public Cloud
  • Partially or fully dedicated
  • Externally hosted
  • Externally or Internally managed
  • Internally managed
  • Minimal customization

Cloud benefits according to cloud users?

  • Increase efficiency (55 %)
  • Improved employee mobility (49 %)
  • Increased ability to Innovate (32 %)
  • Freed current IT staff for other projects (31 %)
  • Reduce IT operation costs (25 %)
  • Enabled us to offer new products/ services (24 %)
 ProsCons
Uptime 99.99%More ISP Bandwidth
Multiple Data centersLimited Customizations
Shorted release cycleRecovery SLAs
Geographically redundant and ScalabilityNo Server access
Managed Services ( SaaS)
Pay as you go ( Low Cost )
Reduced impact on internal IT resources
  • Migration Flow:

SharePoint Hybrid Solution:

What is Hybrid SharePoint?

“Productivity services in SharePoint Online (Office 365) which are securely integrated with on-premises SharePoint Server 2016 to provide unified functionality and access to data.”

Why considering a Hybrid SharePoint Solution?

  • Large existing investments (customized SP deployments w/lots of data and settings,custom solutions, LOB systems, etc…)
  • Functionalities I can’t do in the Cloud that i can do on premises;
  • Keep Sensitive Data on Premise
  • Collaboration with External Partners
  • Capacity Flexibility
  • Intranet – Extranet
  • Geo Location

Same Benefits of Hybrid SharePoint Solution?

SharePoint Business to Business Collaboration: Extranet for Partners with Office 365

“on-premises extranet site involves complex configuration to establish security measures and governance, including granting access inside the corporate firewall, and expensive initial and on-going cost….SharePoint Online, partners connect directly to a members-only site in Office 365, without access to the corporate on-premises environment or any other Office 365 site. Office 365 Extranet sites can be accessed anywhere…”

SharePoint hybrid sites and search

“A hybrid environment can help your company get started in the cloud, taking a first step to explore the cloud functionality at own your pace. It also enables enterprise users to be connected from almost anywhere to the resources and content they need… SharePoint hybrid features, you can consolidate search results between SharePoint Server and Office 365, consolidate user profiles in Office 365, and offload your users’ personal storage to the cloud…”

  • Migration/Interactions Flow:

Thanks

Fábio Carvalho
SharePoint Consultant
|create|it|

 

SharePoint – Export all solutions wsp using PowerShell script

Hey Everyone,

Today i will post a script very helpful when you are on Migration steps and you need export all wsp solutions.

 

$dirName = "C:\WSP"
if (!(Test-Path -path $dirName))
{
New-Item $dirName -type directory
}
Write-Host Exporting solutions to $dirName
foreach ($solution in Get-SPSolution)
{
    $id = $Solution.SolutionID
    $title = $Solution.Name
    $filename = $Solution.SolutionFile.Name
    Write-Host "Exporting ‘$title’ to …\$filename" -nonewline
    try {
        $solution.SolutionFile.SaveAs("$dirName\$filename")
        Write-Host " – done" -foreground green
    }
    catch
    {
        Write-Host " – error : $_" -foreground red
    }
}

Thanks

Fábio Carvalho
SharePoint Consultant
|create|it|

SharePoint 2016 – TCP/IP Ports

Hey Everyone!!!

Today i will show you the full list of TCP/IP Ports that you must consideration on your SharePoint 2016 Farm.

Full list of ports used by SharePoint 2016:

Protocol
Port
Usage
Comment
TCP80httpClient to SharePoint web server traffic
(SharePoint – Office Online Server/Office Web Apps communication)
TCP443https/sslEncrypted client to SharePoint web server traffic
(Encrypted SharePoint – Office Online Server/Office Web Apps communication)
TCP1433SQL Server default communication port.May be configured to use custom port for increased security
UDP1434SQL Server default port used to establish connectionMay be configured to use custom port for increased security
TCP445SQL Server using named pipesWhen SQL Server is configured to listen for incoming client connections by using named pipes over a NetBIOS session, SQL Server communicates over TCP port 445
TCP25SMTP for e-mail integrationCannot in 2016 be configured (Use SMTP ports other than the default (25).)
TCP16500-16519Ports used by the search index componentIntra-farm only
Inbound rule Added to Windows firewall by SharePoint. (GPO may override this change)
TCP22233-22236Ports required for the AppFabric Caching ServiceUsed by the Distributed Cache…
TCP808Search – Query processing component
Windows Communication Foundation communication
Search – Query processing component
(WCF)
TCP32843Communication between Web servers and service applicationshttp (default) To use custom port, see references section
Inbound rule Added to Windows firewall by SharePoint
TCP32844Communication between Web servers and service applicationshttps
Inbound rule Added to Windows firewall by SharePoint
TCP32845net.tcp binding: TCP 32845 (only if a third party has implemented this option for a service application) Custom Service Applications
Inbound rule Added to Windows firewall by SharePoint
TCP32846Microsoft SharePoint Foundation User Code Service (for sandbox solutions) Inbound on all Web Servers
Inbound rule Added to Windows firewall by SharePoint
Outbound on all Web and App servers with service enabled.
TCP636User Profile Synchronization Service/Active Directory ImportSynchronizing profiles between SharePoint 2016 and AD using SLDAP (Secure LDAP)
TCP5725User Profile Synchronization ServiceSynchronizing profiles between SharePoint 2016 and Active Directory Domain Services (AD DS)
TCP + UDP389User Profile Synchronization ServiceLDAP Service
TCP + UDP88User Profile Synchronization ServiceKerberos
TCP + UDP53User Profile Synchronization ServiceDNS
UDP464User Profile ServiceKerberos change password
TCP809Office Online Server/Office Web AppsOffice Online Server/Office Web Apps intra-farm communication.

 

Reference Links:

Security for SharePoint Server 2016
Set-SPServiceHostConfig
TCP/IP Communications (Windows Server AppFabric Caching)

Thanks

Fábio Carvalho
SharePoint Consultant
|create|it|