Bienvenue à Blogs CodeS-SourceS Identification | Inscription | Aide

Jean-Christophe Brabant

SharePoint, HTML5, UX,PowerShell, ...
[SharePoint 2010] Modifier les Fields hérités dans un content type personnalisé

L’une des pratiques de base dans le développement pour SharePoint, c’est de créer des types de contenus (ou ContentType) personnalisés.

Pour rappel, pour créer le content type, il suffit, dans un projet SharePoint, d’ajouter un nouvel élément de type content type.

Il faut choisir le content type parent :

ContentType Héritage

En cliquant sur Finish on obtient un fichier Elements.xml contenant ceci :

<?xml version="1.0" encoding="utf-8"?>
<Elements xmlns="http://schemas.microsoft.com/sharepoint/">
  <!-- Parent ContentType: Article Page (0x010100C568DB52D9D0A14D9B2FDCC96666E9F2007948130EC3DB064584E219954237AF3900242457EFB8B24247815D688C526CD44D) -->
  <ContentType ID="0x010100C568DB52D9D0A14D9B2FDCC96666E9F2007948130EC3DB064584E219954237AF3900242457EFB8B24247815D688C526CD44D009c1c99958d1c4279b12ac33f96b96c19"
               Name="SharePointProject1 - ContentType1"
               Group="Custom Content Types"
               Description="My Content Type"
               Inherits="TRUE"
               Version="0">
    <FieldRefs>
    </FieldRefs>
  </ContentType>
</Elements>

Une fois le ContentType créé on peut le personnaliser en ajoutant des champs créés avant ou en modifiant les champs hérités.

Pour modifier les champs hérité il faut rajouter leurs descriptions dans le nœud FieldRefs. Pour le champs Title par exemple :

<FieldRef ID="{fa564e0f-0c70-4ab9-b863-0177e6ddd247}"
                Name="Title"
                Required="FALSE"
                Hidden="TRUE"
                ShowInNewForm="FALSE"
                ShowInEditForm="FALSE"
                ReadOnly="FALSE"/>

En rajoutant ce nœud, je souhaite le cacher dans tous les formulaires.

Mais ça ne suffit pas à modifier un champ hérité. Si je déploie la solution, le champs Title aura les mêmes propriétés que dans le content type “Article Page”.

Pour prendre en compte le changement, il faut absolument le préciser au content type de la manière suivante :

 <ContentType ID="0x010100C568DB52D9D0A14D9B2FDCC96666E9F2007948130EC3DB064584E219954237AF3900242457EFB8B24247815D688C526CD44D009c1c99958d1c4279b12ac33f96b96c19"
               Name="SharePointProject1 - ContentType1"
               Group="Custom Content Types"
               Description="My Content Type"
               Inherits="TRUE"
               Overwrite="TRUE"
               Version="0">

Jicay

[SharePoint 2010] Modifier un workflow de manière programmatique

Il peut nous arriver de vouloir modifier un Workflow de SharePoint de manière programmatique. Par exemple, nous pourrions vouloir, à l’activation d’une feature, changer les approbateurs ou bien désactiver l’arrêt du workflow lors d’une modification d’une page.

Pour commencer, ce qui va définir les actions du workflow, ce qui va le définir se trouve dans la propriété AssociationData d’un objet SPWorkflowAssociation.

Voici à quoi ressemble les données contenue dans la propriété AssociationData :

   1: <dfs:myFields 
   2:     xmlns:xsd="http://www.w3.org/2001/XMLSchema" 
   3:     xmlns:dms="http://schemas.microsoft.com/office/2009/documentManagement/types" 
   4:     xmlns:dfs="http://schemas.microsoft.com/office/infopath/2003/dataFormSolution" 
   5:     xmlns:q="http://schemas.microsoft.com/office/infopath/2009/WSSList/queryFields" 
   6:     xmlns:d="http://schemas.microsoft.com/office/infopath/2009/WSSList/dataFields" 
   7:     xmlns:ma="http://schemas.microsoft.com/office/2009/metadata/properties/metaAttributes" 
   8:     xmlns:pc="http://schemas.microsoft.com/office/infopath/2007/PartnerControls" 
   9:     xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
  10:   <dfs:queryFields /> 
  11:   <dfs:dataFields>
  12:       <d:SharePointListItem_RW>
  13:           <d:Approvers>
  14:               <d:Assignment>
  15:                   <d:Assignee>
  16:                       <pc:Person>
  17:                           <pc:DisplayName>Approvers</pc:DisplayName> 
  18:                           <pc:AccountId>Approvers</pc:AccountId> 
  19:                           <pc:AccountType>SharePointGroup</pc:AccountType> 
  20:                       </pc:Person>
  21:                       <pc:Person>
  22:                           <pc:DisplayName>BUILTIN\administrators</pc:DisplayName> 
  23:                           <pc:AccountId>BUILTIN\administrators</pc:AccountId> 
  24:                           <pc:AccountType>SecurityGroup</pc:AccountType> 
  25:                       </pc:Person>
  26:                       <pc:Person>
  27:                           <pc:DisplayName>Reader</pc:DisplayName> 
  28:                           <pc:AccountId>LOCAL\reader</pc:AccountId> 
  29:                           <pc:AccountType>User</pc:AccountType> 
  30:                       </pc:Person>
  31:                   </d:Assignee>
  32:                   <d:Stage xsi:nil="true" /> 
  33:                   <d:AssignmentType>Serial</d:AssignmentType> 
  34:               </d:Assignment>
  35:               <d:Assignment>
  36:                   <d:Assignee>
  37:                       <pc:Person>
  38:                           <pc:DisplayName>local\administrator</pc:DisplayName> 
  39:                           <pc:AccountId>LOCAL\administrator</pc:AccountId> 
  40:                           <pc:AccountType>User</pc:AccountType> 
  41:                       </pc:Person>
  42:                   </d:Assignee>
  43:                   <d:Stage xsi:nil="true" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" /> 
  44:                   <d:AssignmentType>Parallel</d:AssignmentType> 
  45:               </d:Assignment>
  46:           </d:Approvers>
  47:           <d:ExpandGroups>true</d:ExpandGroups> 
  48:           <d:NotificationMessage /> 
  49:           <d:DueDateforAllTasks xsi:nil="true" /> 
  50:           <d:DurationforSerialTasks xsi:nil="true" /> 
  51:           <d:DurationUnits>Day</d:DurationUnits> 
  52:           <d:CC /> 
  53:           <d:CancelonRejection>true</d:CancelonRejection> 
  54:           <d:CancelonChange>false</d:CancelonChange> 
  55:           <d:EnableContentApproval>true</d:EnableContentApproval> 
  56:       </d:SharePointListItem_RW>
  57:   </dfs:dataFields>
  58:   </dfs:myFields>

Comme on peux le voir, il est assez simple de faire le rapprochement entre le le XML et cette interface :

Worlfow Page Approval 

En définitive, il suffit de modifier le XML et de le sauvegarder pour prendre en compte les modifications.

Voici un exemple pratique :

SPList list = web.GetListFromUrl("Pages/Forms/AllItems.aspx");
SPWorkflowAssociation workflow = list.WorkflowAssociations[0];

if (workflow.BaseTemplate.Name != web.WorkflowTemplates.GetTemplateByName("Publishing Approval", new CultureInfo(1033)).Name)
    return;

XNamespace xsd = "http://www.w3.org/2001/XMLSchema";
XNamespace dms = "http://schemas.microsoft.com/office/2009/documentManagement/types";
XNamespace dfs = "http://schemas.microsoft.com/office/infopath/2003/dataFormSolution";
XNamespace q = "http://schemas.microsoft.com/office/infopath/2009/WSSList/queryFields";
XNamespace d = "http://schemas.microsoft.com/office/infopath/2009/WSSList/dataFields";
XNamespace ma = "http://schemas.microsoft.com/office/2009/metadata/properties/metaAttributes";
XNamespace pc = "http://schemas.microsoft.com/office/infopath/2007/PartnerControls";
XNamespace xsi = "http://www.w3.org/2001/XMLSchema-instance";

string data = workflow.AssociationData;

XDocument document = XDocument.Parse(data);
var firstAssignment = document.Descendants(d + "Assignment").First();
firstAssignment.Element(d + "AssignmentType").Value = "Parallel";

XElement assignee = firstAssignment.Element(d + "Assignee");
assignee.RemoveNodes();

XElement person = new XElement(pc + "Person");
XElement displayName = new XElement(pc + "DisplayName");
XElement accountId = new XElement(pc + "AccountId");
XElement accountType = new XElement(pc + "AccountType");

displayName.Value = "LOCAL\Supervisors";
accountId.Value = "local\supervisors";
accountType.Value = "Group";

person.Add(displayName);
person.Add(accountId);
person.Add(accountType);

assignee.Add(person);

workflow.AssociationData = document.ToString(SaveOptions.DisableFormatting);

list.WorkflowAssociations.Update(workflow);
list.Update();
Et vous voilà avec un workflow dont l’approbateur est le l’administrator local.
Note importante : l’Update d’un workflow ne fonctionne qu’une seule fois. Si vous essayé de nouveau de faire un Update, vous vous retrouverez avec une erreur d’accès. Pour faire d’autres changements et refaire un update, il faut de nouveau récupérer le workflow et ensuite appliquer les nouvelles modifications.

Jicay

[SharePoint 2010] Appeler un service Web depuis une application WPF avec WCF

Je me suis récemment retrouvé à faire une application WPF qui communique avec un site SharePoint grâce aux services web tel Lists.asmx http://msdn.microsoft.com/en-us/library/dd878586(v=office.12).aspx . Le hic, et oui il y a toujours un hic, c'est que j'ai voulu rajouté la référence vers ce Web Service en tant qu'une Service Reference, et non pas en tant que Web Reference.

Pourquoi une Service Reference et non une Web Reference ?

Tout simplement parce que WCF nous offre un meilleur contrôle de la communication avec le web service que la web reference. Passer par un service WCF va nous permettre aussi de profiter des dernières versions du Framework .NET alors que la web reference va nous cantonner à la version 2.0 du Framework.

Le problème, c'est que ça va augmenter la complexité d'utilisation, puisqu'il va falloir configurer notre référence.

Les changements ?

Pour fonctionner, il va falloir changer le mode de sécurisation de la communication. En effet, les web services SharePoint vont devoir utiliser le type d'authentification Ntlm. Cependant suivant si le service est accessible par http ou https, le mode de sécurité ne va pas être le même. Il faudra utiliser le mode "Transport" pour https, et le mode "TransportCredentialsOnly" en http.

Ce qui donnera dans notre app.config ceci :

<security mode="Transport">
      <transport clientCredentialType="Ntlm" />
</security>

Jicay

[SharePoint 2010] Cinquième étape : Sysprep et généralisation de la machine

Maintenant que nous avons fini d’automatiser l’installation des scripts, la machine est fin prête pour être généralisée.

Sysprep

Pour lancer le sysprep, il faut lancer cette commande:

   1: C:\Windows\System32\sysprep\sysprep

La fenêtre suivante s’affiche.

clip_image001

Il faut bien choisir Generalize, et shutdown.

Boot to VHD

La machine est maintenant prête. Pour en profiter un maximum, on pourra la lancer directement au démarrage de la machine. Pour ce faire, il va falloir faire un boot2vhd.

Voici les commandes pour rajouter le vhd en boot et pour le supprimer.

   1: bcdedit /copy {default} /d "Win2008R2 from VHD"

Cette commande génère un GUID que l’on devra utiliser dans les commandes suivantes.

   1: bcdedit /set {guid} device vhd=[locate]\windows7.vhd
   2: bcdedit /set {guid} osdevice vhd=[locate]\windows7.vhd
   3:  
   4: bcdedit /default {guid}

 

Pour simplifier l’installation et encore diminuer les interactions avec l’utilisateur, il faut rajouter le /default. Comme ça l’ordinateur bootera automatiquement dessus.

Au passage la commande pour l’enlever du boot est la suivante :

   1: bcdedit /delete <guid> /cleanup

Le VHD est enfin terminé et est fin prêt à être utilisé à la chaine pour vos développements.

 

Have Fun

Jicay

[SharePoint 2010] Quatrième étape : Automatisation, et Finalisation

Maintenant nous avons tous les scripts nécessaires pour configurer et finir d’installer la machine lors du premier démarrage. Cependant, à ce stade-là, il faut encore lancer à la main l’ensemble des scripts. On va donc s’atteler, à cette étape, de relier tous ces scripts pour n’avoir rien à faire.

Le point d’entrée

Plusieurs scripts que nous avons fait jusqu’à présent demande d’être administrateur pour être lancé. Nous allons donc créer un petit fichier install.bat qui sera le point d’entrée de l’installation.

   1: @ECHO OFF
   2: CALL powershell.exe -ExecutionPolicy Unrestricted -noexit C:\Scripts\Install.ps1
   3: SET /P INPUT=""
Le script d’installation à proprement parlé va contenir l’ensemble des étapes à respecter dans le processus d’installation. J’ai nommé ce fichier Install.ps1. Pendant ce processus nous serons amenés à redémarrer l’ordinateur plusieurs fois.

Automatisation

Pour que l’installation continue tout seul après le redémarrage, on va simplement placer un lien vers notre ficher .bat dans le dossier StartUp du menu démarrer grâce à cette fonction.

   1: function Add-StartUp
   2: {
   3:     param ([string] $parentDir)
   4:     # add startup shortcut
   5:     $wshshell = New-Object -ComObject WScript.Shell
   6:     $scPath = Join-Path $env:ProgramData "Microsoft\Windows\Start Menu\Programs\Startup\Install.lnk"
   7:     $lnk = $wshshell.CreateShortcut($scPath)
   8:     $lnk.Description = "Install Startup"
   9:     $batFilePath = Join-Path $parentDir "Install.bat"
  10:     $lnk.TargetPath = $batFilePath
  11:     $lnk.Save()
  12: }
  13:  
Note : Il faut penser à l’enlever à la fin du script d’installation, sinon il sera lancé à tous les démarrages.

Pour se souvenir d’où nous en étions, il suffit à chaque étape d’incrémenter une variable qui sera contenu dans le fichier config.xml.

Enfin, pour ne pas avoir à se reconnecter avec le bon compte à chaque fois, nous avons récupéré ici une fonction qui nous permettra de nous logger automatiquement à chaque démarrage :

Function Enable-AutoAdminLogon

Vous avez maintenant toutes les informations pour faire votre script d’installation complet.

Jicay

[SharePoint 2010] Création d’une Machine Virtuelle SharePoint automatisée.

La première étape à tout développement SharePoint est la création d’un environnement de développement. Le mieux étant que cet environnement soit vierge, mais qu’il possède déjà un panel d’outils utiles au développement. Le temps passé, au début de chaque nouveau projet SharePoint, à la création de cet environnement, est énorme.

Du coup avec Matthieu, on a décidé de créer un système permettant la création de cet environnement de manière automatisé. Je vais vous décrire dans cette suite d’articles les étapes de la création de cette VM.

Le principe est simple, nous allons préparer un VHD qui aura un Windows Server 2008 R2 généralisé d’installé, ainsi que l’ensemble des outils souhaités. Ensuite, à partir du moment où nous démarrerons, la première fois, sur ce VHD, un script d’installation se chargera de finir d’installer et de configurer l’ensemble des programmes souhaités.

Nous souhaitions avoir sur cette machine, en plus de SharePoint, les logiciels suivant :

  • Visual Studio 2010
  • Office 2010 (32bits)
  • Visio 2010 (32bits)
  • SharePoint Designer (32bits)
  • InfoPath (32bits)
  • SQL Server 2008 R2 (pour le SharePoint)

Pour une meilleure gestion des utilisateurs, nous allons installer un active directory sur le serveur. Nous aurons aussi besoin d’un serveur SMTP et POP pour installer correctement SharePoint.

La création de ce VHD va se faire en plusieurs étapes. Chaque étape donnera lieu à un article :

Jicay

[SharePoint 2010] Troisième étape : Configuration de la machine et installation de SharePoint

Après avoir installé tous les outils que nous voulions à l’étape deux, nous allons configurer la machine. A partir de maintenant on va se concentrer sur la création de scripts qui vont nous permettre d’installer et configurer les outils restant automatiquement. Nous nous placerons dans un dossier spécifique à la racine du disque, le dossier C:\Scripts.

Configuration de l’ordinateur

Il va nous falloir fixer le nom de l’ordinateur avant de configurer l’AD. En effet, nous aurons besoin de connaitre son nom pour l’installation de SharePoint, donc autant le fixer nous-même.

Le script powershell à exécuter pour se faire :

   1: $sysInfo = Get-WmiObject -Class Win32_ComputerSystem
   2: $sysInfo.Rename("DEVSP")

Configuration de l’active directory

Dans un premier temps, on va configurer l'active directory pour pouvoir créer l'ensemble des utilisateurs nécessaire à l'installation de SQL et SharePoint tout en respectant certains bonnes pratiques.

Pour faire simple, lors de la configuration de l’AD, nous utiliserons local.com comme domaine.

Pour configurer l’AD, il faut passer par dcpromo.exe. L’une des options qui nous sera utile est l’option /unattend. Elle va nous permettre de passer un fichier réponse avec toutes les informations nécessaires.

Voici le fichier réponse que j’ai utilisé pour ma configuration :

   1: ;Usage
   2: ; dcpromo.exe /unattend:C:\Scripts\AD\Answer.txt
   3: [DCInstall]
   4: ReplicaOrNewDomain=Domain
   5: NewDomain=Forest
   6: NewDomainDNSName=local.com
   7: ForestLevel=4
   8: InstallDNS=Yes
   9: ConfirmGc=Yes
  10: CreateDNSDelegation=No
  11: DatabasePath="C\Windows\NTDS"
  12: LogPath="C:\Windows\NTDS"
  13: SYSVOLPATH="C:\Windows\SYSVOL"
  14: SafeModeAdminPassword=Password0
  15: RebootOnCompletion=No
 
Note : J’ai pris soin de mettre le reboot à No pour le gérer moi-même dans mon script de base.

Une fois la configuration de l'AD terminée nous allons créer nos utilisateurs en suivant les conseils de Todd pour les bonnes pratiques d'installation de SharePoint 2010 au niveau des utilisateurs. Nous devons faire attention aux droits nécessaires pour chacun des utilisateurs. Nous pouvons en profiter pour créer les utilisateurs nécessaires à l'installation du SQL Server. J'ai créé les utilisateurs suivant :

  • sql_reportservice
  • sql_agentservice
  • sql_service

Il y a plusieurs manières de rajouter des utilisateurs à l’AD, j’ai choisi d’utiliser la commande dsadd.

   1: dsadd user "CN=sp_install,cn=users,dc=local,dc=com" -acctexpires never -pwd Password0 -mustchpwd no -canchpwd no -pwdneverexpires yes -disabled no
   2:

Complétion de l’image SQL Server

Plus rien ne s'oppose à nous maintenant pour installer SQL Server. J'ai choisi de l'installer en ligne de commande grâce à PowerShell.

   1: invoke-expression "& ""$SqlSetupPath"" /Q /ACTION=CompleteImage /INSTANCEID=""$InstanceID"" /INSTANCENAME=""$InstanceName"" /SQLSVCACCOUNT=""$SqlSvcAccount"" 
   2: /SQLSVCPASSWORD=""$SqlSvcPassword"" /RSSVCACCOUNT=""$RsSvcAccount"" /RSSVCPASSWORD=""$RsSvcPassword"" /SQLSYSADMINACCOUNTS=""$SqlSysadminAccounts"" 
   3: /AGTSVCACCOUNT=""$AgtSvcAccount"" /AGTSVCPASSWORD=""$AgtSvcPassword"" /AGTSVCSTARTUPTYPE=""Manual"" /IACCEPTSQLSERVERLICENSETERMS /TCPENABLED=$TcpEnabled 
   4: /ERRORREPORTING=""1"" /INDICATEPROGRESS " 

Les variables sont tirées d’un fichier de config XML :

   1: xml version="1.0" encoding="utf-8"?>
   2: <Configuration>
   3:
   4: <SqlServer SqlSetupPath="C:\Scripts\InstallIso\SQL2008R2" InstanceID="SQLSERVER" 
   5: InstanceName="SQLSERVER" SqlSvcAccount="local\sql_service" SqlSvcPassword="Password0" 
   6: RsSvcAccount="local\sql_reportservice" RsSvcPassword="Password0" SqlSysadminAccounts="builtin
   7: \administrators" AgtSvcAccount="local\sql_agentservice" AgtSvcPassword="Password0" 
   8: SecurityMode="SQL" SaPassword="Password0" TcpEnabled="1">SqlServer>
   9:
  10: Configuration>
Une fois SQL Server terminé d’installer, nous devons ajouter les utilisateurs ayant des droits, typiquement sp_install et Administrator. Pour ce faire nous allons utiliser la commande suivante :
   1: Invoke-sqlcmd -ServerInstance localhost\SQLSERVER -InputFile "C:\Scripts\RightsSqlServer.sql"

Cependant pour avoir accès à la cmdlet Invoke-sqlcmd nous allons ajouter un provider pour SQL Server. Nous pouvons nous inspirer de l’initialiseur trouvé ici : http://www.sqldev.org/sql-server-tools-general/powershell-v2-sql-server-53788.shtml.

Installation de SSMS

L’un des problèmes de l’installation de SQL Server en passant par une image, c’est qu’il n’installe pas Sql Server Management Studio. Le seul moyen est de repasser l’installation en mode « Repair », et de préciser SSMS dans les features.

   1: [xml]$config = Get-Content c:\Scripts\config.xml
   2: $SqlSetupPath = $config.Configuration.SqlServer.SqlSetupPath + "\setup.exe"
   3: $InstanceId = $config.Configuration.SqlServer.InstanceId
   4: $InstanceName = $config.Configuration.SqlServer.InstanceName
   5: invoke-expression "& ""$SqlSetupPath"" /Q /ACTION=Repair /FEATURES=ADV_SSMS"

L’installation de SQL Server est donc terminée. Nous allons pouvoir passer à celle de SharePoint.

Installation de SharePoint 2010

Il existe déjà des outils pour automatiser l’installation de SharePoint 2010. Nous utiliserons AutoSPInstaller.

Note : Les fichiers .ps1 téléchargés avec AutoSPInstaller sont lockés et vous demanderont si vous voulez bien les exécuter. Pour empêcher ça, il faut cliquer sur le bouton Unlock qui se trouve dans les propriétés des fichiers.

Dans le fichier d'input, nous ferons attention d'utiliser les bons users précédemment créés. Par exemple dans la partie ManagedAccount :

   1: <ManagedAccounts>
   2:     <ManagedAccount username="local\sp_portalapp" Password="Password0" CommonName="portalapppool"/>
   3:     <ManagedAccount username="local\sp_webapp" Password="Password0" CommonName="mysiteapppool"/>
   4:     <ManagedAccount username="local\sp_serviceapps" Password="Password0" CommonName="spservice"/>
   5:     <ManagedAccount username="local\sp_search" Password="Password0" CommonName="searchservice"/>
   6: ManagedAccounts> 
Note : Il ne faut surtout pas toucher aux CommonName. Ils sont référencés en dur dans AutoSPInstaller.

Si vous voulez installer SharePoint 2010 en français, vous devrez mettre le LanguagePack dans le dossier d’AutoSPInstaller prévu à cet effet : \SP2010\LanguagePacks.

Pour plus d’informations sur comment configurer et utiliser AutoSPInstaller, je vous laisse aller voir http://autospinstaller.codeplex.com/.

Note : Si vous voulez créer des collections de sites avec un template différent que celui proposé, il faudra créer une nouvelle collection de site.

Jicay

[SharePoint 2010] Seconde étape : Installation des premiers outils

Après avoir démarré sur le Windows Server, que nous avons configuré ici, nous allons créer une VM qui va utiliser le VHD comme disque dur.

Création de la VM

Il faut se rendre sur le serveur HyperV, cliquer sur new et choisir Virtual Machine

clip_image002

Il faut ensuite lui donner son nom, ça n’aura pas beaucoup d’importance pour la suite.

clip_image004

Etant donné que nous allons installer un SharePoint 2010 dessus, le minimum requis pour le faire tourné est donc de 4Go de RAM. Je vous conseille si vous pouvez de lui en mettre plus, ça facilitera son installation plus tard.

clip_image006

Nous lui fournissons l’accès à internet par la carte réseau que nous avons partagé lors de l’installation d’HyperV.

clip_image008

Le disque dur que nous allons lui donner est le vhd que nous avons créer au début. Il faut donc lui dire où il se trouve.

clip_image010

Installation des rôles et outils

Note : A partir de maintenant, on va partir du principe que toutes les actions suivantes se feront sur la VM.

Dans un premier temps on va activer les features et les rôles nécessaires sans les configurer :

  • Rôles :
    • Active Directory (ADDC)
  • Features :
    • Desktop Experiences
    • SMTP (il installera au passage les rôles indispensables)

De la même manière que nous avions activé HyperV, nous allons installer les rôles et les features en les sélectionnant dans la liste que Windows propose.

Pour rappel, l’active directory va nous permettre de gérer nos utilisateurs et la feature SMTP sera utilisé par SharePoint notamment pour configurer le « ongoing mail ».

On en profite pour installer les logiciels qui ne nécessitent pas d’utilisateur géré par l’AD :

  • Office 32bits
  • Visio 32bits
  • SharePoint Designer 32bits
  • Visual Studio avec son SP1

Note : Il est important d’installer les versions 32bits des produits Office, en effet, il y a quelques fonctionnalités qui ne fonctionnent pas sur les versions 64bits.

Comme Windows Server 2008 R2 propose une feature SMTP mais pas POP, il va falloir installer un logiciel qui nous permettra d’y avoir accès. On va donc installer Visendo SMTP (pop3) Extender .

On va configurer le SMTP et le POP comme indiqué dans ce blog.

Note : Il se peut que vous n’arriviez pas à vous connecter aux serveurs avec l’adresse locale 127.0.0.1, il faudra à ce moment mettre l’adresse ip de la machine sur le réseau local. Adresse du style (192.168.0.X)

Pour finir on va préparer une image de SQL Server que l'on complètera plus tard.

Lorsqu’on lance l’installation de SQL Server, il faut aller dans la partie Advanced et choisir « Image preparation … »

Prepare Image

Nous choisissons les features que nous souhaitons avoir. Nous pouvons voir à ce moment-là qu’il n’y a pas Sql Server Management Studio. Il faudra l’installer plus tard.

clip_image014

Nous devons choisir le nom de l’instance pour pouvoir la compléter plus tard.

clip_image016

Histoire de ne pas être embêté lors de la première utilisation de notre VHD, nous allons en profiter pour mettre à jour le système et tous les outils grâce à Windows Update.

Snapshot

A ce niveau de la création du VHD, il ne nous manque plus que les scripts d’installation et de configuration pour faire un sysprep généralisé. Hors nous les ferons dans les articles suivants. Afin de pouvoir revenir à cet état pour rajouter les scripts sans avoir abîmer le VHD, nous allons faire un snapshot avec HyperV.

Il suffit de cliquer sur Snapshot dans la barre d’actions d’HyperV.

Snapshot HyperV

Nous voyons alors apparaitre le snapshot dans la liste. Nous pouvons en profiter pour le nommer pour savoir quand et pourquoi il a été fait.

clip_image021

Jicay

[SharePoint 2010] Première étape : Créer un VHD avec Windows Server 2008 R2

Comme je le disais dans mon précédent post, à cette étape nous allons créer un disque dur virtuel qui va contenir notre environnement de développement SharePoint.

Préparation

Les outils indispensables pour y arriver sont :

Création du VHD

Avant toutes choses nous allons installer AIK. C’est assez simple il suffit de lancer le CD d’installation en choisissant Windows AIK Setup.

Install AIK

Nous pouvons terminer l’installation en cliquant toujours sur suivant.

Nous allons avoir besoin d’accéder à un fichier bien particulier qui se trouve dans l’iso de Windows Server 2008 R2, plus particulièrement dans le dossier \sources. C’est le fichier install.wim. Pour y accéder pourra monter l’image de l’iso, avec daemon tools par exemple ou bien en la décompressant, avec Winzip par exemple. Pour ma part, j’ai choisi de la décompresser.

Nous allons placer les deux outils WIN2VHD et VHD Tool dans le même dossier et lancer le script WIN2VHD avec la commande suivante :

   1: cscript win2vhd.wsf /WIM:"CheminDeLIso\sources\install.wim" /SKU:SERVERDATACENTER /VHD:CheminDuVHD.vhd /disktype:Fixed 

Signification des paramètres:

  • WIM : Vous l’aurez compris, c’est l’endroit où on va pouvoir trouver le fichier install.wim
  • SKU : Correspond à la version du Windows Server souhaitée, ici la version Datacenter (la version Enterprise aurait pu suffire)
  • VHD : Fichier de sorti du VHD
  • DiskType : Permet de fixer la taille du disque dur. Sans précision de taille, la taille du disque sera de 40Go

Pour travailler sur le VHD

Nous allons avoir besoin de Windows Server 2008 R2, et d’y installer HyperV. Pour ma part, j’ai copié le VHD créé précédemment et j’ai booté dessus grâce aux commandes suivantes :

   1: bcdedit /copy {default} /d "Win2008R2 from VHD"

Cette commande génère un GUID que l’on devra utiliser dans les commandes suivantes.

   1: bcdedit /set {guid} device vhd=[locate]\windows7.vhd
   2: bcdedit /set {guid} osdevice vhd=[locate]\windows7.vhd 

Une fois que nous avons démarré sur le Windows, nous allons ajouter le rôle HyperV en le choisissant dans la liste des rôles proposés.

clip_image005

Ensuite nous allons lui préciser qu’il pourra partager la carte réseau de l’ordinateur aux futures VM.

clip_image007

Nous pouvons terminer l’installation du rôle et redémarrer.

 

Jicay

Plus de Messages « Page précédente


Les 10 derniers blogs postés

- Office 365: Script PowerShell pour auditer l’usage des Office Groups de votre tenant par Blog Technique de Romelard Fabrice le 04-26-2019, 11:02

- Office 365: Script PowerShell pour auditer l’usage de Microsoft Teams de votre tenant par Blog Technique de Romelard Fabrice le 04-26-2019, 10:39

- Office 365: Script PowerShell pour auditer l’usage de OneDrive for Business de votre tenant par Blog Technique de Romelard Fabrice le 04-25-2019, 15:13

- Office 365: Script PowerShell pour auditer l’usage de SharePoint Online de votre tenant par Blog Technique de Romelard Fabrice le 02-27-2019, 13:39

- Office 365: Script PowerShell pour auditer l’usage d’Exchange Online de votre tenant par Blog Technique de Romelard Fabrice le 02-25-2019, 15:07

- Office 365: Script PowerShell pour auditer le contenu de son Office 365 Stream Portal par Blog Technique de Romelard Fabrice le 02-21-2019, 17:56

- Office 365: Script PowerShell pour auditer le contenu de son Office 365 Video Portal par Blog Technique de Romelard Fabrice le 02-18-2019, 18:56

- Office 365: Script PowerShell pour extraire les Audit Log basés sur des filtres fournis par Blog Technique de Romelard Fabrice le 01-28-2019, 16:13

- SharePoint Online: Script PowerShell pour désactiver l’Option IRM des sites SPO non autorisés par Blog Technique de Romelard Fabrice le 12-14-2018, 13:01

- SharePoint Online: Script PowerShell pour supprimer une colonne dans tous les sites d’une collection par Blog Technique de Romelard Fabrice le 11-27-2018, 18:01