Category Archives: Uncategorized

Office Online Server (OOS)

Office Online Server unattended setup

Scenario:
1) you need to install Office Online Server as a part of process (Powershell script or DSC configuration)
2) you cannot use system (C:) drive. I.e. OOS must be installed on, e.g. D: drive

Solution: use “config.xml”.

Config.xml example:

<Configuration>
    <Logging Type="verbose" Path="d:\tmp" Template="OOServerSetup(*).log"/>
    <Display Level="none" CompletionNotice="no" />
    <INSTALLLOCATION Value="d:\Program Files\Microsoft Office Servers\"/>
    <Setting Id="USINGUIINSTALLMODE" Value="0"/>
    <Setting Id="SETUPTYPE" Value="CLEAN_INSTALL"/>
    <Setting Id="SETUP_REBOOT" Value="Never"/>
</Configuration>

Command-line run example:

setup.exe /config d:\config.xml

Powershell script example:

Start-Process "d:\source\OOS\setup.exe" -ArgumentList "/config d:\config.xml" -Wait

Powershell DSC configuration example:

include ” <INSTALLLOCATION Value=”d:\Program Files\Microsoft Office Servers\”/>”
into “d:\source\OOS\Files\SetupSilent\config.xml”, so when your LCM will run

        OfficeOnlineServerInstall OOSInstall
        {
            Ensure = "Present"
            Path = "d:\Distrs\OOS\setup.exe"
        }

by default “d:\source\OOS\Files\SetupSilent\config.xml” will be used.

 

 

 

 

===============================================================================

references:

https://docs.microsoft.com/en-us/officeonlineserver/deploy-office-online-server

 

note: 
Install the following software:
Visual C++ Redistributable Packages for Visual Studio 2013
Visual C++ Redistributable for Visual Studio 2015
Microsoft.IdentityModel.Extention.dll
is not required?

I.e. OOS farm will work, but report Unhealthy…

 

 

 

Modern Office 365 Site Pages

SPO Modern Site Pages Enable Disable

If you are adding a page to your Office 365 site via gerbox->”Add a page”
and a “modern-style” SharePoint page is created, 
you still can have “classic” experience, i.e. Wiki pages or WebPart pages. 

Just go to your pages library via “Site Content” -> “Site Pages”, 
then click “Files” tab and select “New Document” with dropdown option,
and this is where you can choose what kind of page to create.

If you want to stick with classic pages permanently (disable modern site pages) – it’s done via
“Site settings” -> “Manage site Features” -> “Site Pages” Deactivate.
then from site pages library settings click “Change new button order and default content type” 
and deselect “Visible” at “Site pages”.

Modern Office 365 Site Pages

Anatoly Stishko. Анатолий Стишко – Джамбул Казахстан

“Радио Свобода”. Отрывок из передачи “Деревенская жизнь художника Анатолия Стишко”

… Мне было однажды лет 10 в Казахстане. Прихожу однаждя я на базар и рисую – лошадей и телеги… Туда … был воскресный день… съезжалися все, натуры – полно. Научится рисовать – это было самое лучшее место. Стали заглядывать люди, смотрят – себя узнают, коня узнают. Вдруг подходит милиционер, говорит
– Что ты здесь зарисовываешь, а ты разрешение имеешь?
[Это он у мальчика спрашивает, да]. Да, я говорю
– Какое разрешение, я посто рисую. – И меня берёт и уводит в милицейский участок. там начальник:
– Что он украл? – спрашивает. Тот говорит
– Да вот, на базаре что-то такое делал подозрительно. Какие-то записи, не положено. – тот говорит
– А ну, покажи, дай блокнот. – тот перед ним [кладёт]. Он начинает листать
– Так это же Пётр Иваныч, а это его конь…
Развеселилась атмосфера, из грозной превратилась в дружескую… Сказал
– Ты хороший молодец, только непонятно, почему ты на базаре рисуешь.
А я говорю
– В книгах написано, что художник должен идти в жизнь, там с натуры рисовать. Самая весёлая жизнь – на базаре. Здесь всё есть.
Он сказал – к нему больше не цепляйся. Тот сказал – будет сделано. А мне сказал
– Старайся, художником можешь стать.
Это было примерно в пятьдесят… пятьдесят втором году. Ещё Сталин был живой. Ну вот, стал художником.

https://www.svoboda.org/a/26416512.html

Microsoft SharePoint, Microsoft 365: studying, certification

Here are some resources to study, learn, improve your skills on Microsoft SharePoint, SQL, Office 365, Azure:

Officially free:

SharePoint gurus:

  • https://www.youtube.com/user/ToddKlindtNetcast (Todd Klindt)
  • http://www.toddklindt.com/ (Todd Klindt)
  • http://www.andrewconnell.com/ (Andrew Connell)
  • http://www.wictorwilen.se/ (Wictor Wilen)
  • http://www.srinisistla.com/blog/ (Srini Sistla)
  • http://blah.winsmarts.com/ (Sahil Malik)
  • http://www.harbar.net/ (Spencer Harbar)
  • http://www.askwictor.com/ (Wictor Wilén)
  • http://blogs.technet.com/b/wbaer/ (Bill Baer)
  • http://blog.geektrainer.com/search/label/SharePoint  (Christopher Harrison)
  • http://www.jeremythake.com/ (Jeremy Thake)
  • http://blogs.msdn.com/b/sharepoint_strategery/ (Brian Pendergrass aka bspender)
  • http://blog.falchionconsulting.com/  (Gary Lapointe)
  • https://absolute-sharepoint.com/microsoft-certification-study-guides – SharePoint/Microsoft 365 study guide (Vlad Catrinescu)
  • https://www.helloitsliam.com – (Liam Cleary)
  • https://blogs.technet.microsoft.com/stefan_gossner – (Stefan Gossner)
  • https://blogs.technet.microsoft.com/pla/ – Product Line Architecture (PLA) Team Blog
  • https://eightwone.com/ – Michel de Rooij with focus is on Exchange, Office 365, and PowerShell
  • https://www.eliostruyf.com/ – Elio Struyf
  • http://www.techmikael.com/ – Mikael Svenson – SharePoint and search

Courses on SharePoint (for money):

  • http://www.pluralsight.com/tag/sharepoint
  • www.cbtnuggets.com/
  • http://www.lynda.com/
  • https://www.opsgility.com/ (3-month free subscription for free Visual Studio Dev Essentials members)
  • http://www.skillsoft.com/

SharePoint Certification:

SharePoint career builder/study guides:

https://absolute-sharepoint.com/microsoft-certification-study-guides – SharePoint/Microsoft 365 study guide (Vlad Catrinescu)

http://sharepointkitchen.blogspot.in/2014/05/sharepoint-interview-questions.html

 

SharePoint Security and Penetration Testing

There is a course on Pluralsight: Penetration Testing SharePoint by Liam Cleary.

Here are some fundamentals every SharePoint architect should know on “how to protect SharePoint environment”, from this course and from my personal experience.

Security basics

  • audit environment, document it (annual, semi-annual)
  • permission matrix and authentication flow (semi-annual, monthly) – using 3-rd party tools
  • test environment security

Protect from the Scans

  • Monitoring
  • Access control (accounts, passwords, least permissions, audit)
  • Port restriction (enable only required ports and protocols)
  • Server firewall (including SQL, SharePoint, OOS, Workflow) + Isolation
  • Local Computer Policies
  • Network firewall (incl. edge firewall and internal firewall)

IIS – web.config

  • <authentication …>
  • <microsoft.identityModel>
  • <location path …><allow users …>
  • viewlsts.aspx – protect using <location path …><allow users …> on IIS level
  • … CallStack …
  • <CustomErrors …>
  • <appSettings>

IIS

  • Site – Authentication – Specific user
  • Certificates – Binding

Central administration

  • Web Applications – Web Application – User policies
  • Web Applications – Web Application – Anonymous policies
  • Web Applications – Web Application – Blocked file types
  • Service Applications – Service Application – Administrators/Permissions
  • Security – Farm Administrators

Roles

Architect, Support – should have farm-level access
Developer, Designer, End User, External – should not have farm-level access

Use personalized account for administration/support (do not use farm account or install account)

BTW, My opinion: Do not allow Developers any access to production farm.
The rights/responsibilities and dev workflow should be:

  • SharePoint Developer: Dev farm for development, Dev-Test farm for self-testing
  • SharePoint Tester: Test-farm for testing
  • SharePoint Administrator: Pre-production farm and Production farm

If somebody combine roles – use different accounts and separation of roles.
 

SharePoint updates

  • security updates
  • public updates, cumulative updates (download)
  • service packs, feature packs

Some useful PowerShell commands:

$subnet = "192.168.214"
$range = 223..225
$range | %{$ip = $subnet + '.' + $_; Test-Connection -Count 1 -ComputerName $ip -Quiet } | ?{$_ -eq $true} | %{Write-Host $ip " - Test OK"}

$port = 3389
foreach ($byte in $range) {
    $ip = "{0}.{1}" -F $subnet, $byte
    Write-Host "Testing NetConnection to $ip`:$port `- " -NoNewline
    $tnc = Test-NetConnection -ComputerName $ip -Port $port -ErrorAction SilentlyContinue -WarningAction SilentlyContinue
    Write-Host $tnc.TcpTestSucceeded
}

 

Links:

  • https://www.exploit-db.com
  • http://angryip.org/ – network scanner
  • https://nmap.org/ – free security scanner
  • http://sparty.secniche.org/ – MS Sharepoint and Frontpage Auditing Tool
  • https://www.metasploit.com/ – Penetration Testing Software
  • https://www.cvedetails.com/ – Common Vulnerabilities and Exposures

 

Project 2016

Project Server 2016

As you know, Project Server 2016 is actually a service application on SharePoint Server 2016.
Which means if you want Project Server 2016, you must have SharePoint 2016 first.
But if you have SharePoint 2016 farm, it’s much easier to get Project 2016. Moreover, once you build robust, scalable and high-available SharePoint, you get the same to you Project “for free”.
NB: Project is licensed separately.

Project 2016

Look at some PowerShell commands, which can help you provision Project 2016 Service Application on SharePoint 2016:

# Enable Project Server License
Enable-ProjectServerLicense -Key Y2WC2-K7NFX-KWCVC-T4Q8P-4RG9W

# Get Service Accounts
Add-WindowsFeature rsat-ad-powershell
Import-Module ActiveDirectory
Get-ADUser -Filter ‘Name -like “*project*”‘
Get-ADUser -Filter ‘SamAccountName -like “SP-Project*”‘ | ft DistinguishedName, SamAccountName

#Add managed accounts
Get-SPManagedAccount
$account = “ecm\SP-Project-Svc”
New-SPmanagedaccount -credential (Get-Credential -UserName $account -Message “type password”)
$SvcAppPlAccnt = Get-SPManagedAccount -Identity $account ; $SvcAppPlAccnt

# Service Application pool
Get-SPServiceApplicationPool
$applPoolName = “Project Service Application Pool”
New-SPServiceApplicationPool -Name $applPoolName -Account $SvcAppPlAccnt
$ap = Get-SPServiceApplicationPool | ?{$_.Name -eq $applPoolName}
$ap.Status

# Service Application
Get-SPServiceApplication | Sort-Object DisplayName | ft -AutoSize
$serviceTypeName = “Word Automation Services”
Get-SPServiceApplication | ? {$_.TypeName -eq $serviceTypeName} | ft -AutoSize
$saName = “Project service Application”
New-SPProjectServiceApplication -Name $saName -ApplicationPool $ap
$sa = Get-SPServiceApplication -Name $saName
$sa.Status; $sa.Name
$proxyName = $saName + ” ” + “Proxy”
New-SPProjectServiceApplicationProxy -Name $proxyName -ServiceApplication $sa

# instances
Get-SPServiceInstance | ft -AutoSize
$serviceTypeName = “Project Server Application Service”
Get-SPServiceInstance | ? {$_.TypeName -eq $serviceTypeName }
$serviceInstances = Get-SPServiceInstance | ? {$_.TypeName -eq $serviceTypeName }
$serviceInstance = $serviceInstances | ? {$_.Server.Address -eq $env:COMPUTERNAME}
$serviceInstance.Status
$serviceInstance.Provision()

# database
Get-SPFarm
(Get-SPFarm).Servers
Get-SPWebApplication
New-SPContentDatabase -Name “SP16_SSF2_Project” -DatabaseServer “SP16SQL” -WebApplication “https://ssf2-imc.intranet.ecm.kz”

# site
Get-SPManagedPath -WebApplication “https://ssf2-imc.intranet.ecm.kz”
New-SPSite -ContentDatabase “SP16_SSF2_Project” -URL “https://ssf2-imc.intranet.ecm.kz/proj/pwa”  -Template pwa#0 -OwnerAlias “ecm\sp-adm”
Get-SPContentDatabase “SP16_SSF2_Project”
Set-SPContentDatabase “SP16_SSF2_Project” -MaxSiteCount 1 -WarningSiteCount 0
Enable-SPFeature pwasite -URL “https://ssf2-imc.intranet.ecm.kz/proj/pwa”

Get-SPSite