Le blog technique

Toutes les astuces #tech des collaborateurs de PI Services.

#openblogPI

Retrouvez les articles à la une

ADK 10 (10.0.10240.16384) disponible + Mise à jour du GeneratorWinPE_1.1

 

ADK 10

 

Vous pourrez trouver la version de ADK 10 (10.0.10240.16384) disponible via ce lien :

http://download.microsoft.com/download/8/1/9/8197FEB9-FABE-48FD-A537-7D8709586715/adk/adksetup.exe

 

une fois le kit de déploiement installé, la version détectée au travers de appwiz.cpl est 10.0.26624

clip_image002

 

En utilisant la build précédente de l’ADK, lors de l’ajout de Powershell dans le PE celui ci s’ajoutait correctement.

 

Cependant lors de son utilisation un message d’erreur apparaissait.

Avec cette build, l’intégration de PowerShell est fonctionnellePouce levé

 

image

 

GeneratorWinPE 1.1

 

L’application a été mis à jour.

 

Disponible ici :

https://onedrive.live.com/redir?resid=B370CC46EA3AB572!137&authkey=!ANkLug_PPC-kh-8&ithint=folder%2cexe

 

il est maintenant nécessaire de sélectionner le Path du Windows Kits.

 

clip_image002[5]

 

Une fois celui ci définit, les versions d’ADK présentes s’’affichent :

 

clip_image004

 

Cette action permet de s’affranchir d’une installation avec le Path par défaut de Windows Kits sur C: par exemple.

 

Rappel : Présentation  de GeneratorWinPE  http://blog.piservices.fr/post/Apps-Generateur-de-WinPE.aspx

 

Vous pouvez maintenant via GeneratorWinPE créer votre WinPe 10 avec l’utilisation de cette version d’ADK   Clignement d'œil

Utilisation de la commande Powershell New-TimeSpan sur des cultures différentes

 

Vous avez besoin de connaitre la différence entre deux variables de temps différente

 

Exemple :

 

$source= »23/06/2015 11:43:50″

$dest= »23/06/2015 18:42:38″

 

La commande New-TimeSpan nous permet de calculer cette différence.

 

Cependant, les valeurs de nos 2 variables ont été récupérées sur un ordinateur ou la culture était fr-FR.

 

L’interprétation de la commande New-TimeSpan ne posera pas de problème si celle-ci est exécutée sur un poste ayant une culture fr-Fr

 

Exemple :

image

 

Cependant, si la culture du poste est différente de fr-FR. Cela peut poser problème.

 

Exemple : avec un poste ayant une culture en-US, la commande New-TimeSpan n’est pas capable de bien interprété la valeur de nos 2 variables qui sont formatés dans une culture fr-FR.

 

image

 

 

Si nous voulons que la commande New-TimeSpan puisse interpréter correctement la valeur de nos 2 variables, il va donc falloir les formater correctement.

 

[System.Globalization.CultureInfo]$French = ‘fr-FR’

[System.Globalization.CultureInfo]$English = ‘en-US’

 

$DateTime = [datetime]::Parse($source, $French)
$source = $DateTime.ToString($English)
 
 
$DateTime = [datetime]::Parse($dest, $French)
$dest = $DateTime.ToString($English)
 
 
 

Résultats :

 

image

 

New-TimeSpan peut maintenant calculer la différence des deux variables

 

image

Exchange / Powershell : EWS et Impersonation

Introduction

Les Exchanges Web Services (EWS) sont très pratiques pour manipuler le contenu d’une boite aux lettres. Ceux-ci ont été créés pour s’intégrer dans des applications en C# mais peuvent aussi être utilisés dans un script Powershell. Grâce aux EWS, nous pouvons manipuler des dossiers, des messages, le calendrier. Il est possible de réaliser des opérations de créations (comme l’envoi d’un email), suppressions et modifications. Cependant, nous verrons qu’il est nécessaire d’avoir des droits sur la boite aux lettres d’un utilisateur ou d’utiliser un mécanisme d’impersonation pour réaliser ces opérations.

Contexte

Cet article est basé sur un retour d’expérience d’utilisation des EWS dans un environnement Exchange 2010 SP3. Le système de réservation de ressources d’une entreprise (salle, équipements) devait migrer vers Exchange. Un mécanisme de reprise de l’existant a dû être mis en place pour créer les réservations dans les calendriers des ressources et des personnes réservant la ressource.

EWS

Afin d’utiliser les Exchange Web Services dans un script Powershell, il faut installer le package permettant d’interagir avec ceux-ci.

Ce dernier est actuellement en version 2.2 et peuvent s’interfacer avec toutes les versions d’Exchange de 2007 SP1 à la dernière en date : 2013 SP1 (Les cumulatives updates n’ont pas d’importance).

Il est disponible en suivant le lien ci-dessous :

http://www.microsoft.com/en-us/download/details.aspx?id=42951

Impersonation

Les Exchange Web Services utilisent l’autodiscover pour communiquer avec une boite aux lettres spécifique.

Exemple de connexion aux EWS :

Cependant, dès que j’effectuerai une opération sur la boite aux lettres, il me faudra des droits sur cette boite aux lettres comme le contrôle total. Dans le cas contraire, j’obtiendrai des erreurs.

Donner des droits sur un grand nombre de boites aux lettres n’est pas recommandable car cela complexifie l’administration. il existe donc une seconde option permettant de se faire passer pour le compte utilisateur de la boite aux lettres. Il s’agit de l’impersonation. C’est un rôle à attribuer à un compte de service (via le mécanisme RBAC). Cette solution offre plusieurs avantages :

  • Simplicité d’administration : on peut rapidement ajouter ou supprimer les droits d’impersonation à un compte.
  • Contrôle des comptes visés : le scope des utilisateurs pouvant être "remplacer" par un compte de service peut facilement être modifié sans devoir changer les propriétés de chaque boite aux lettres.
  • Décoreller des délégations : le processus d’impersonation n’apparait pas dans les délégations et il est ainsi plus simple de faire la différence entre les deux mécanismes et les différentes autorisations.

Implémentation RBAC

Le rôle permettant l’impersonation est nommé ApplicationImpersonation. Pour l’implémenter, nous allons d’abord créer un scope, c’est-à-dire définir les utilisateurs sur lesquels le compte de service pourra faire de l’impersonation.

Dans l’exemple ci-dessous, nous créons un scope contenant toutes les boites aux lettres utilisateurs :

Puis, nous ajoutons le rôle ApplicationImpersonation à l’utilisateur souhaité en spécifiant le scope créé précédemment.

NB : Pensez à changer la valeur MYUSER par le nom d’utilisateur de du compte réalisant de l’impersonation.

Script

Ci-dessous vous trouverez différentes fonctions Powershell commentées permettant la création d’une réunion avec la possibilité de réserver une salle mais aussi la validation que ces réunions ont bien été créées. Ces fonctions gèrent l’impersonation tant que le compte avec lequel la connexion aux EWS possède ce droit sur les boites aux lettres visées.

 

Fonction de création de réunions :

 

Fonction de validation de la réunion dans le calendrier utilisateur :

Cette fonction valide qu’une réunion possédant les bonnes ressources ainsi que les bonnes dates de début et de fin existe dans le calendrier de l’utilisateur.

 

Elle permet aussi de vérifier qu’il n’y a pas eu de création de doublons dans le calendrier (utile si un script de création de réunion à été exécuté plusieurs fois).

 

Fonction de validation de la réunion dans le calendrier de la boîte aux lettres de ressources :

Cette fonction cherche une réservation de la ressource en validant les dates et heures ainsi que le nom de la personne ayant créé cet objet. Cette vérifications s‘effectue sur le calendrier de la boite aux lettres de ressource. Le statut de la réservation est aussi vérifié (valeur attendue : Accept) afin d’être certain que la ressource n’ait pas été réservée pas une autre personne.

Tips

La création de nombreuses réservations peut engendrer un grand nombre d’envoi d’email aux utilisateurs ayant réservés ces ressources. En effet, ils vont recevoir des réponses des ressources (acquittement ou refus de la demande) si le système de réservation automatique a été activé (Resource booking attendant). Une solution de contournement peut être mise en place pendant la phase de migration. Elle consiste à limiter le nombre de destinataires à 0 lors de l’envoi d’un mail par la boite aux lettres de ressources.

Pour réaliser cette opération, il suffit de lancer une invite de commande Powershell Exchange (EMS) et d’exécuter la commande suivante :

Ou bien, si l’on souhaite changer la valeur sur toutes les boites aux lettres de salles en une seule commande (on peut remplacer RoomMailbox par EquipmentMailbox pour les boites aux lettres d’équipements).

NB : Pensez à remplacer IDENTIFIANT_BAL par l’identifiant de la boite aux lettres de ressources (Alias par exemple).