[PowerShell] Comparer deux dossiers

Bonjour à tous,

Voici une portion de script dérivant comment comparer le contenu de deux dossiers.
Le but ici est d’identifier :

  • les fichiers en commun
  • les fichiers présents uniquement dans le premier dossier
  • les fichiers présents uniquement dans le second dossier

Notez que dans la présente situtation, la comparaison se fait au niveau du nom du fichier (-Property Name), mais vous pouvez lancer la comparaison sur un ou plusieurs autres critères comme par exemple le nom et la date de modification.

1
2
3
4
5
6
7
$FolderContent1 = @(Get-ChildItem -Path "<FolderPath1>") | where {!$_.PSIsContainer}
$FolderContent2 = @(Get-ChildItem -Path "<FolderPath2>") | where {!$_.PSIsContainer}
$ComparisonResult = Compare-Object -ReferenceObject $FolderContent1 -DifferenceObject $FolderContent2 -Property Name -IncludeEqual 
$EqualFiles = $ComparisonResult | Where-Object{$_.SideIndicator -eq "=="}
$FilesOnlyInTheFirstFolder =  $ComparisonResult | Where-Object{$_.SideIndicator -eq "<="}
$FilesOnlyInTheSecondFolder = $ComparisonResult | Where-Object{$_.SideIndicator -eq "<="}

et le résultat si je ne souhaite afficher que les fichiers présents dans les deux dossiers :


Enjoy 😉

[SCCM] Nouveau portail de documentation

Bonjour à tous,

Microsoft a dernièrement refondu son portail de documentation technique, en particulier pour EMS et SCCM.
Concernant SCCM voici la nouvelle adresse : https://docs.microsoft.com/fr-fr/SCCM/

Personnellement je trouve ce portail particulièrement agréable à utiliser pour les raisons suivantes :

  • Une meilleure organisation dans les rubriques comparé à la documentation présente sur Technet
  • Une interface responsive donc aisément lisible depuis des supports mobiles
  • Possibilité d’afficher les pages avec un thème clair ou sombre
  • Possibilité de sauvegarder le contenu d’une page au format PDF

D’autre part l’organisation est particulièrement bien pensée. Peu importe le produit, le plan est toujours le même :

  • Comprendre et explorer
  • Mise en route (bien démarrer)
  • Planifier et concevoir
  • Déployer et utiliser

Selon le produit ou la solution, des sections supplémentaires sont accessibles. La documentation de Microsoft Intune bénéficie par exemple d’une section présentant comment utiliser le SDK de Intune pour développer des applications mobiles tirant parti de ce service.

N’hésitez pas et foncez : lire des informations techniques redevient agréable !

Enjoy 😉

 

[SCCM] Fichiers de log dans Configuration Manager

Bonjour à tous,

En cette fin d’année où je dispose d’un peu de temps pour de reprendre de l’oxygène, voici un petit article traduit de l’article Technet suivante : https://technet.microsoft.com/en-us/library/hh427342.aspx.

Chaque élément composant SCCM enregistre son activité dans un fichier de log. Etant donné que le serveur SCCM et le client SCCM sont composés de nombreux éléments on se retrouve confrontés à devoir analyser de nombreux fichiers de logs. De plus, le diagnostic d’une défaillance va vous obliger à consulter plusieurs fichiers.

Cet article énumère les (très nombreux ) logs utilisés dans SCCM et la manière de les exploiter.

Lire la suite

[SCCM] Corriger les erreurs IIS 500.19

Bonjour à tous,

Lors d’une intervention pour débugger le composant Software Update Point chez un client, je me suis retrouvé confronté à un dysfonctionnement général de IIS. Par conséquent, plus de point de distribution, de point de gestion, etc…

Le dysfonctionnement n’est pas apparu immédiatement, mais seulement après avoir désinstallé le composant SCCM « Software Update Point » et le rôle Windows WSUS. A partir de ce moment on rencontrait systématiquement les erreurs suivantes et ce pour tous les sites Web hébergés par le serveur SCCM :

  • Logs IIS : erreurs 500
  • Mpcontrol.log : « Call to HttpSendRequestSync failed for port 80 with status code 500, text: Internal Server Error »
  • Navigateur Web : erreur 500.19 + Error Code 0x8007007e

Après quelques heures de recherche j’ai finalement trouvé la source du problème dans un article de l’équipe du support IIS : http://blogs.iis.net/webtopics/troubleshooting-http-500-19-errors-in-iis-7
Cet article présente les différents scénarii qui peuvent engendrer une erreur 500.19 pour tous les sites Web hébergés par un serveur IIS. Dans ma situation c’est le scénario 6, identifié par le code d’erreur 0x8007007e (affichée lorsque j’essaie d’ouvrir la page dans IIS) qui m’a permis de comprendre le problème. La désinstallation du rôle WSUS n’a pas retiré toute la configuration du site Web WSUS et en particulier une dépendance déclarée au niveau global, en d’autres termes pour tous les sites et applications Web hébergés par mon serveur.

This problem occurs because the ApplicationHost.config file or the Web.config file references a module that is invalid or that does not exist. To resolve this problem: In the ApplicationHost.config file or in the Web.config file, locate the module reference or the DLL reference that is invalid, and then fix the reference. To determine which module reference is incorrect, enable Failed Request Tracing, and then reproduce the problem.
For above specific error (mentioned in this example), DynamicCompressionModule module is causing the trouble. This is because of the XPress compression scheme module (suscomp.dll) which gets installed with WSUS. Since Compression schemes are defined globally and try to load in every application Pool, it will result in this error when 64bit version of suscomp.dll attempts to load in an application pool which is running in 32bit mode.

la résolution du problème est du coup devenue très simple, à savoir taper la commande suivante :
%windir%\system32\inetsrv\appcmd.exe set config -section:system.webServer/httpCompression /-[name='xpress']

cmd

Après un redémarrage du service IIS, tout est rentré dans l’ordre.

Enjoy 😉

[PowerShell] Découverte et personnalisation de PowerShell ISE

Bonjour à tous,

Apparu depuis maintenant quelques années, PowerShell est aujourd'hui incontournable. Pour ceux qui le découvrent, c'est un environnement d'exécution de tâches conçu spécialement pour l'administration des systèmes. Il repose entièrement sur .NET Framework et reprend les fondamentaux de la programmation orientée objet. Il permet aux administrateurs de contrôler et d'automatiser l'administration des systèmes d'exploitation Windows mais aussi de nombreux autres produits comme VMware, SCCM, Exchange, Azure, etc... Bref vous l'aurez compris, il vous sera de plus en plus compliqué de gérer vos environnements tout en ignorant ce composant !

Vous pouvez aborder PowerShell de 2 manières différentes :

  • En lançant la console PowerShell puis en exécutant des commandes comme par exemple dresser la liste de tous les processus actuellement en cours d'exécution (get-process). Après avoir récupéré cette liste vous pouvez stopper certains de ces processus à l'aide de la cmdlet Stop-Process. Dans ce mode de fonctionnement les commandes s'exécutent à votre grés. Aucune préparation n'est nécessaire. On travaille ici à la volée et le travail n'est pas réutilisable
  • En créant un script PowerShell qui prendra en charge l'exécution de nombreuses commandes que vous aurez reliées entre-elles à l'aide d'outils d'algorithmique tels que des conditions, des boucles, des filtres, etc. Ce scénario est particulièrement adapté lorsque vous devez exécuter la même procédure à de nombreuses reprises. L'idée est de décrire la marche à suivre dans ce script puis d'exécuter ce script chaque fois que ce "processus" doit être exécuté.

La rédaction d'un script PowerShell peut être réalisée avec un outil aussi simple que Notepad.exe. Cependant vous conviendrez que ce n'est pas l'outil le plus efficace car il ne permet par exemple pas de débugger ce script ou de bénéficier de coloration syntaxique bienvenue dans tout environnement de développement.

Dès la sortie de PowerShell Microsoft a intégré à Windows un éditeur de script : PowerShell ISE (Integrated Scripting Environment). Cet environnement vous permet de rédiger des scripts PowerShell tout en bénéficiant de nombreuses fonctionnalités :

  • IntelliSense qui vous proposera de compléter automatiquement ce que vous avez commencé à saisir
  • Des snippets ou extraits de code que vous pouvez insérer rapidement et ainsi réduire vos erreurs de saisie
  • Un enregistrement automatique de vos scripts toutes les 2 minutes (et croyez-moi c'est très utile !!)
  • Un debugger vous permettant d'exécuter tout ou partie de vos script en appliquant des points d'arrêt

Dans un premier temps cet environnement vous sera suffisant. Mais PowerShell ISE est un outil particulièrement personnalisable. C'est d'ailleurs son grand point fort. A tel point que plusieurs développeurs se sont "amusés" à ajouter des fonctionnalités supplémentaires qui peuvent être très utiles.

Cet article a pour objectifs de vous donner un aperçu de la personnalisation de l'éditeur PowerShell :

  • Dans un premier temps nous verrons qu'ISE est avant tout un environnement que nous chargeons qui est tout à fait personnalisable
  • Dans un second temps, nous nous focaliserons sur la création de nos propres snippets
  • Enfin je vous présenterai un Add-on permettant de littéralement doper votre ISE :  ISESteroids

Lire la suite

[Work Folders] Déploiement d’une solution interne

Bonjour à tous,

Dans  ce nouvel article je vous propose de décrire le déploiement d'une solution Work Folders à usage interne. Cette première implémentation permet de se familiariser avec les différents éléments composant cette fonctionnalité.

Lire la suite

[Work Folders] Conception d’une solution

Bonjour à tous,

Dans ce deuxième article dédié à la mise en œuvre de Work Folders, nous allons nous pencher sur la conception d'une solution.

L'objectif est de vous présenter les différents scénarii de déploiement de Work Folders ainsi que les critères à prendre en compte afin de concevoir une solution qui vous permettra d'en tirer le meilleur parti.

Lire la suite

[Work Folders] Introduction

On constate actuellement une évolution significative de l’environnement de travail utilisateur. Tout d’abord le nombre de terminaux par utilisateur augmente (il est actuellement de 3 par utilisateurs en Europe). D’autre part l’écosystème matériel se diversifie avec l’apparition de nouveaux facteurs de formes (smartphone, tablette, hybride) sous d’autres systèmes d’exploitation (iOS, Android). Enfin de plus en plus de personnes utilisent leur terminal personnel afin de réaliser des tâches professionnelles telles que l’envoi de mail, etc.

Ces évolutions impliquent des changements dans les usages avec l’apparition de certains risques. Prenons l’exemple du développement de l’utilisation de solutions de stockage de fichiers en ligne (OneDrive, DropBox, etc.) pour stocker et partager des documents professionnels. Ces solutions sont très simples d’utilisation mais présentent l’inconvénient de stocker les données professionnelles dans le Cloud. Dans certains contextes (Santé, innovation, confidentialité, etc.) ce fonctionnement n’est pas permis. Pour autant, l’usage de ces solutions est plébiscité par les utilisateurs du fait de leur simplicité d’utilisation et de leur usage très répandu dans la sphère personnelle.

Lire la suite