12 mai 2015

MS IGNITE Chicago : Sessions

La semaine dernière a eu lieu le MS Ignite à Chicago.
Le but de cette grande messe est de remonter toutes les informations sur les futures orientations, les nouveaux produits et innovations de Microsoft.
Les sessions parlent donc essentiellement de Windows 10, SharePoint 2016, Yammer, Azure, ASP.Net vNext et bien d’autres…
 
Il est possible de récupérer en local toutes les sessions en utilisant le script PowerShell fourni par Vlad Catrinescu:http://absolute-sharepoint.com/2015/05/the-ultimate-script-to-download-microsoft-ignite-videos-and-slides.html
 
Pour récupérer ces vidéos, il suffira de lancer le script en ayant modifié au préalable l’adresse d’enregistrement sur votre PC grâce à la variable : $downloadlocation
Il est même prévu de filtrer sur les thématiques qui vous intéresse en passant un paramètre keyword lors de l’appel.
 
Enjoy!

5 mai 2015

SHAREPOINT 2013 : Supprimer les pages systèmes des résultats de recherche

Une remarque récurrente des clients lors de l'utilisation du moteur de recherche SharePoint par les clients est la remontée des pages systèmes dans les résultats.
Nous pouvons citer par exemple les pages allitems.aspx (associées aux vues), les "thumbnail.aspx" (pour les images), les pages situées dans le répertoire forms (excepté le dispform.aspx).
 
Pour supprimer ces résultats, il existe deux façons:
  • Vue une crawl rule (Règle d'analyse) dans le moteur de recherche de l'administration centrale. Dans "Chemin", entrer la valeur http://*/allitems.aspx puis sélectionner exclure dans la "analyser la configuration" associée:

    En utilisant cette technique, le nombre d'éléments dans le crawl va grandement décroitre (cf dans la copie d'écran ci-dessous, nous passons de 182 à 46):
 
  • En modifiant la requête sur chaque page de recherche. Il faudra alors ajouter la partie de requête suivante : "-filename:allitems.aspx" à la suite de l'habituel {searchTerms}. Le signe "-" permet de supprimer l'élément des résultats de recherche.
 
 
La deuxième solution reste plus fine et n'impactera pas tous les résultats de votre ferme SharePoint. Je pense notamment qu'elle pourrait s'appliquer à certaines pages de recherches spécifiques mais vous pourrez toujours renvoyer les bibliothèques et listes dans vos résultats de recherche sur les autres pages.

23 avril 2015

SHAREPOINT 2013 : Vérifier page en mode édition


Aujourd'hui un petit post sur la détection en JavaScript du mode édition sur une page SharePoint.
Sur une page de publication, il suffit d'interroger la valeur d'une variable existante:



Il est de même possible d'utiliser les modifications suivantes dans la page maitre sur un site de publication:



Il suffira à présent d'utiliser la variable "IsEditMode" pour tester que la page est bien en mode édition.
Mais ce serait trop simple si tous les cas étaient traités avec cette simple manipulation. Sur les pages Wiki, il faudra ajouter le script suivant pour détecter le mode édition:



Pour les pages de WebPart, il faudra utiliser le script suivant:

 
 
Il sera tout de même nécessaire de tester sur les 2 derniers scripts que les valeurs ne sont pas nulles avant d'accéder à la propriété value: 
(typeof document.forms[MSOWebPartPageFormName]._wikiPageMode != 'undefined'
(typeof document.forms[MSOWebPartPageFormName].MSOLayout_InDesignMode!= 'undefined'

17 avril 2015

SHAREPOINT 2013 : Mapper propriété UPS sur attribut AD

Le service de profil utilisateur de SharePoint 2013 met à disposition des propriétés utilisateurs pouvant être utilisées dans vos applications. Dans ce contexte, il peut être intéressant de mapper ces propriétés sur des attributs de l'Active Directory.
 
Pour se faire, il peut être intéressant d'utiliser un script PowerShell (l'avantage est qu'il permet un déploiement uniforme entre les divers environnements).

Le script suivant permet de parcourir chacune de vos connexions AD définies dans l'UPS et d'ajouter le mappage de la propriété AD "mail" sur la propriété utilisateur "WorkEmail".
# Récupération du UPS associé au site sharepointsite
$site = New-Object Microsoft.SharePoint.SPSite "http://Sharepointsite"
$context = [Microsoft.SharePoint.SPServiceContext]::GetContext($site)
$configManager = New-Object Microsoft.Office.Server.UserProfiles.UserProfileConfigManager $context
# Parcours de toutes les connexions AD définies dans l'UPS
foreach ($ADConnection in $configManager.ConnectionManager)
{
     Write-Host $ADConnection.DisplayName -foregroundcolor blue
     # Ajout du mappage de la propriété "WorkEmail" sur l'attribut AD nommé "mail"
     Write-Host $ADConnection.DisplayName "- Workemail" -foregroundcolor green
     $ADConnection.PropertyMapping.AddNewMapping([Microsoft.Office.Server.UserProfiles.ProfileType]::User,"WorkEmail","mail")
     ...
}
 

12 avril 2015

SHAREPOINT 2013 : Liste des collections de sites

Aujourd'hui, une petite commande PowerShell utile pour tout administrateur SharePoint.
En effet, certaines interfaces de l'administration centrale de SharePoint ne sont pas conçues pour synthétiser l'information, il est donc nécessaire de réaliser des extractions ou des audits via les applets de commandes PowerShell pour SharePoint.

La commande ci-dessous permet de d'obtenir la liste des collections de sites présentes sur une ferme SharePoint ou sur une application web spécifique.
 
Get-SPWebApplication -Limit All | Get-SPSite | Format-Table -Property URL,ContentDatabase, Owner, SecondaryOwner
 
Pour expliquer le fonctionnement:
  • Get-SPWebApplication récupère une collection d'applications web. Le paramètre -Limit All permet de ramener toutes les applications web de la ferme SP. Il serait possible de spécifier une application web particulière en précisant l'url,
  • Get-SPSite : Récupère la liste des collections de sites associées à la (ou les) application(s) web SharePoint.
  • Format-Table : Affiche les données en renvoyant les propriétés sélectionnées.


Tout cela en une seule ligne, merci Powershell! Réaliser la même chose en code managé aurait pris au moins une vingtaine de lignes.
L'utilisation de PowerShell pour administrer et auditer SharePoint doit être un reflexe.