Author Archives: Vlad Software Engineer

About Vlad Software Engineer

Microsoft 365 Teams, SharePoint, Search, PowerShell, Azure...

Allow commenting on modern pages in SharePoint Online

Microsoft: “You can also select to allow or prevent commenting on modern pages. If you allow commenting, it can be turned on or off at the page level

By default both
– Allow users to create new modern pages
– Allow commenting on modern pages
are turned on (enabled)

Tenant or SharePoint admin can find settings under
SharePoint Admin Center -> Settings -> Pages

When you are creating a modern site page – there is an option “Comments” turned On by default:

And page with comments looks like:

Comments on site pages (aka modern pages) can be enabled or disabled at each of the levels:
– Tenant level
– Site (aka site collection) level
– Web (aka subsite ) level
– Page level
Here is how it is done:

LevelHow it’s doneWho can do it
TenantGUI ( SharePoint Administration)
or PowerShell
Global Administrator or
SharePoint Administrator
Site (Site Collection)PowerShellGlobal Administrator or
SharePoint Administrator
Web (Subsite)PowerShellSite Collection Administrator or Owner
(Full Control rights to web)
PageGUI (Page Editing screen)Site Member
(Edit right to page)

If commenting on modern pages disabled at higher level – lower level settings do not work. E.g. If you disable “Allow commenting on modern pages” at tenant level (it takes minutes) – the functionality will gone from all modern pages of all sites.

When you switch page comments Off – all existing comments will be hidden (but not deleted).
If you later turn comments On – comments will reappear, including Likes.

If “Allow commenting on modern pages” disabled at tenant or web level – you will not see “Comments On/Off” switch while editing page.
If “Allow commenting on modern pages” disabled at site collection level – you will see “Comments On/Off” switch while editing page, but you will not be able to turn it ON.

PowerShell

When you disable “Allow commenting on modern pages” at tenant level –
PowerShell Object (site/web) property “CommentsOnSitePagesDisabled” will not be changed for any site/web.
You can still with PowerShell set it to True/False:
“Set-PnPWeb -CommentsOnSitePagesDisabled:$false”
but it does not take any effect.

If you enable “Allow commenting on modern pages” at tenant level (it takes ~10 minutes) – the functionality will return to all modern pages and
all webs and sites properties “CommentsOnSitePagesDisabled” will ???.
You can change it with PowerShell:
“Set-PnPWeb -CommentsOnSitePagesDisabled:$false”.

# having Site Collection Admin Permissions:
# disable Comments On Site Pages for a subsite:
$webName = "SubSite_02"
Set-PnPWeb -Web $webName -CommentsOnSitePagesDisabled:$true 
# enable Comments On Site Pages for a subsite 
# (only if comments enabled at tenant level):
Set-PnPWeb -Web $webName -CommentsOnSitePagesDisabled:$false


# having global admin or SharePoint admin permissions:
# site collection:
Set-PnPTenantSite -Url $siteUrl -CommentsOnSitePagesDisabled:$true
# tenant-level Comments:
Set-PnPTenant -CommentsOnSitePagesDisabled:$true # disable
 comments
Set-PnPTenant -CommentsOnSitePagesDisabled:$false # enable comments

# does not work:
Set-PnPSite -CommentsOnSitePagesDisabled:$true

How do I know if if the page is modern page or classic page (PowerShell)?

$list = Get-PnPList "Site Pages" -Includes ContentTypes, Fields
$list.ContentTypes | ft -a
$cType = Get-PnPContentType -List $list | ?{$_.Name -eq 'Site Page'};
$cType.id
$queryString = "<View><Query><Where><Eq><FieldRef Name='ContentTypeId'/><Value Type='Text'>" + $cType.Id.StringValue + "</Value></Eq></Where></Query></View>"  
$modernPages = Get-PnPListItem -List $list -Query $queryString
$modernPages.count
$modernPages | ft -a

How do I know if the page is a Home Page (PowerShell)?

# web object contains relative link to the web's Home Page:
$web = Get-PnPWeb -Connection $siteConnection -includes WelcomePage
$web.WelcomePage

References

– Microsoft “Allow users to create and comment modern pages

See also:
Allow users to create modern pages

Note:
We did not discuss “Wiki Pages” or “Web part Pages”, we discussed only “Modern Pages” (aka Site Pages).
I have tested it all personally using Communication sites.
MS-Team (group-based) and standalone SharePoint (no-group) sites – TBP.

MS Teams vs SharePoint

… by teams you are bringing in collaboration but you are losing discoverability…
… you put everything in one document library which becomes overloaded…
… you have to rely on search to try to find it…
… challenge for teams to become scalable (not everything can be added to tabs) – @DarceHess, Microsoft 365 & SharePoint PnP Weekly – Episode 91

Правильная установка SharePoint 2013, SQL Server 2012. Учётные записи

Описание правильной установки SharePoint 2013 в варианте, минимально приемлемом для “боевого” применения, соответствующая рекомендациям Microsoft для небольшого количества пользователей (до 10тыс.) и без требований по отказоустойчивости. А именно – двухсерверная двухуровневая топология – один сервер баз данных и один сервер SharePoint, сочетающий все роли. Учётные записи – в соответствии с принципом least privilege.

Подготовка к установке

Считаем, что есть AD. Тогда делаем:

– (виртуальный) сервер для MS SQL
Рекомендуется выделять отдельный (в зависимости от предполагаемой нагрузки и доступных ресурсов физический или виртуальный) сервер для работы SQL сервера для SharePoint, или как минимум отдельный инстанс. Рекомендуется также давать алиас этому инстансу.

  • проц любой серверный 64-bit (рекомендуется дать 4-8 ядер),
  • память 2-4GB (рекомендуется 8-16GB),
  • HDD min 60GB (рекомендуется 80GB)

ставим MS Windows Server 2012 std en with GUI, устанавливаем время и часовой пояс, даём статический IP, называем как надо, локализуем под себя (language, region) включаем в домен, добавляем роль App Server, ставим обновления, проверяем есть ли ошибки в журнале, устраняем их.

– (виртуальный) сервер для MS SharePoint (далее SP)

  • проц любой серверный 64-bit (рекомендуется дать как минимум 4 ядра),
  • память минимум 8-12GB (рекомендуется 16-24GB),
  • HDD min 40GB (рекомендуется 80GB)

ставим MS Windows Server 2012 std en with GUI, устанавливаем время и часовой пояс, даём статический IP, называем как надо, локализуем под себя (language, region) включаем в домен, добавляем роли App Server и IIS, ставим обновления, проверяем есть ли ошибки в журнале, устраняем их.

заводим в AD следующие учётные записи:
– SP_Admin
– SP_Farm
– SP_Services
– SP_PortalAppPool
– SP_ProfilesAppPool
– SP_CacheSuperUser
– SP_CacheSuperReader
– SP_ProfileSync
– SP_SearchService
– SP_SearchContent
– SQLAdmin
– SQLSvc
(если ставим SharePoint Enterprise, то ещё
– SP_ExcelUser
– SP_VisioUser
– SP_PerfPointUser
)

на сервере SQL Server:
даём доменной учётке SQLAdmin права локального админа
разрешаем Remote Desktop

на сервере SP Server:
даём доменной учётке SP_Admin права локального админа
разрешаем Remote Desktop

Установка

на сервере SQL Server:
логинимся под учёткой SQLAdmin

  • устанавливаем MS SQL Server 2012 SP1
    (фичи: Database Engine Services, Reporting Services – SharePoint, Management Tools Basic+Complete;
    Service Accounts: вбиваем учётку SQLSvc;
    Collation должен быть Cyrillic_General_CI_AS;
    Server Configuration->AddCurrentUser)
  • SQL Management Studio->Security->Logins добавляем sp_admin, даём роли securityadmin, dbcreator, public.
  • SQL Management Studio->Right Click on instance name->select properties->Advanced->Change Max Degree of Parallelism to 1
  • Windows Firewall and Advanced Security->Inbound Rules->New Rule->Port TCP 1433 Allow .

на сервере SP Server:
логинимся под учёткой SP_Admin

  • устанавливаем MS SQL Server 2012 SP1
    (фичи: Reporting Services – add-in for SharePoint, Management Tools Basic+Complete)
  • запускаем SQL Management Tools, логинимся к нашему SQL Server (для проверки что есть доступ)
    Если нет – то первым делом на SQL Server проверяем, активированы ли протоколы TCP/IP для удалённого доступа (SQL Server Configuration Manager -> SQL Server Network Configuration -> Protocols… -> TCP/IP -> Enable)
  • Качаем и ставим Notepad++.
  • Качаем AutoSPInstaller. Распаковываем, изучаем состав.
  • Распаковываем AutoSPInstaller на локальном диске, (например, в d:\distrs),
    чтобы путь, например, к “AutoSPInstallerInput.xml” был такой “D:\distrs\SP\AutoSPInstaller\AutoSPInstallerInput.xml”

Состав должен быть такой:
– sp\2010 – этот каталог нам не нужен, можно удалить
– sp\2013\SharePoint\ – переписываем сюда «родной» дистрибутив (содержимое DVD или ISO диска SharePoint 2013 en)
– sp\2013\PDF\ – скачиваем файлики по инструкции и распаковываем zip в PDFFilter64installer.msi
– sp\2013\ForeFront\ – ничего не делаем
– sp\AutoSPInstaller\ – тут самое интересно, подробнее дальше

  • Установка пререквизитов
    Переходим в sp\2013\SharePoint\, Запускаем prerequisiteinstaller.exe
    Может потребоваться перезагрузка, но установка пререквизитов должна (пере-)(до-)запускаться автоматом, пока не увидим окошко
    “Installation Complete. All required prerequisites have been installed or enabled”
  • Установка бинарников
    (вообще-то AutoSPInstaller может сам устанавливать бинарники с дистрибутива, а также языковые пакеты, сервис паки и кумулятивные апдейты.
    но настройка всего этого довольно сложная, поэтому проще бинарники установить вручную, и скрип использовать для правильного конфигурирования фермы.)
    • Установка SharePoint с дистрибутива – Переходим в sp\2013\SharePoint\, Запускаем setup.exe
      После установки бинарников вам предложат сконфигурировать ферму (запускается psconfig) – на данном этапе этого делать не надо – выбираем “Отмена”
    • Установка языковых пакетов (language pack) – если надо
      После установки бинарников вам предложат сконфигурировать ферму (запускается psconfig) – на данном этапе этого делать не надо – выбираем “Отмена”
    • Установка CU – скачиваем последний кумулятивный апдейт и устанавливаем
      После установки бинарников вам предложат сконфигурировать ферму (запускается psconfig) – на данном этапе этого делать не надо – выбираем “Отмена”
    • Установка апдейтов языковых пакетов
      После установки бинарников вам предложат сконфигурировать ферму (запускается psconfig) – на данном этапе этого делать не надо – выбираем “Отмена”
  • Теперь работаем с файлами в каталоге sp\AutoSPInstaller\

у AutoSPInstallerInput.xml убираем атрибут “read only” файловой системы
AutoSPInstallerInput.xml правим так:
        <PIDKey></PIDKey> вбиваем ключ (можно триальный отсюда, потом вручную сменим на постоянный)
        <SKU>Enterprise</SKU> вбиваем Standard или Enterprise (ключ тогда должен быть соответствующий)
        <AutoAdminLogon Enable=”false” Password=”” /> вбиваем true и пароль, если хотим чтобы сервер каждый раз сам логинился (предполагается несколько перезагрузок)
        <Passphrase></Passphrase> вбиваем пароль/ключ (используется для присоединения дополнительных серверов к ферме)
        <Account…  везде, где встречаем DOMAIN\ или @domain, исправляем на наши реальные данные так:
            <Username>DOMAIN\SP_Farm</Username> , заменяем DOMAIN на настоящее имя нашего домена, оставляем название и имя учётки (SP_Farm) как есть
            <Password></Password> вбиваем пароль
            <Email>spfarm@domain.com</Email> вбиваем e-mail
        <CentralAdmin Provision=”true”>… ставим порт какой удобно, например <Port>2013</Port>
        <Database> первое упоминание делаем так
           <DBServer></DBServer>  вбиваем алиас для SQL Server (например <DBServer>SP3SQLAL</DBServer>)
                     DBInstance=”SERVER\INSTANCE” правим на только имя сервера (например, DBInstance=”SP3SQL1″)
            <DBPrefix>AutoSPInstaller</DBPrefix> меняем на удобный нам, например <DBPrefix>SP</DBPrefix>
        остальные упоминания <Database> не трогаем (оставляем пустыми как есть)
        <ManagedAccounts> домен и пароль  меняем на свой, всё остальное – названия акаунтов и сами акаунты – оставляем как есть
        <Logging><LogDiskSpaceUsageGB></LogDiskSpaceUsageGB> поставить приемлемое для своего дискового пр-ва значение, например 5
        <AppManagementService если вы в состоянии это сделать, то оставляем Provision=”true”
                и следуем инструкциям, например Setting up your App domain for SharePoint 2013
                иначе – ставим Provision=”false”

  • Собственно установка
    • Запускаем от имени администратора (Run As Administrator) батничек AutoSPInstallerLaunch.bat
    • Но не идём курить, как некоторые советуют, а пьем чай и наблюдаем, т.к. иногда срабатывает UAC и надо тыкнуть “OK”
    • Если скрипт почему-то “слетает”, то смотрим “почему”, поправляем и запускаем снова, ничего не меняя в других настройках.

Последействия:
        <AutoAdminLogon Enable=”false” Password=”” /> стираем пароль
        <Passphrase></Passphrase> стираем

поправить параметры логирования под себя

если есть exchange, можно настроить OutgoingEmail и сам Exchange

основные источники информации:
Technet: Install SharePoint 2013
Technet: Hardware and software requirements for SharePoint 2013
CodePlex: Automated SharePoint 2010/2013 PowerShell-based installation script
Technet: virtual environment for SharePoint 2013
Setting up your App domain for SharePoint 2013