Tout d'abord, Windows Powershell est le nouveau le language de scripts de Microsoft remplaçant de Vbscript. Il est disponible sur les différentes plateformes Windows XP SP3 à Windows 7. Il a été inclus dans Windows 7. Il nécessite au minimum le framework 2.0 SP1.
Pour plus d'informations je vous conseil d'aller faire un tour sur Wikipédia
Comment signer vos scripts Powshell ?
Objectif de l'article : Permettre de créer un certificat pour signer mes scripts Powershell. Ensuite configurer la station qui exécute les scripts pour que uniquement les scripts signés soit exécuté. Cela permettra de mettre en place des scripts en s'assurant que aucune modification ne sera faite sans resignature.
Outils nécessaire :
Powershell V1 ou supérieur
L'outils pvk2pfx.exe se trouve dans le Windows Driver Kit
Etape 1 : Installation des outils nécessaires
Les outils demandés sont gratuit et disponible sur le site de Microsoft
- Installation de la dernière version stable de Microsoft Powershell V2 au moment de l'écriture de l'article.
- Installation du framework 2.0 SDK (contient les outils de génération de certificat)
Etape 2 : Création d'un certificat racine
Pour créer un certificat vous avez plusieurs possibilité,
- soit faire appel à une société de certification moyennant finance, il vous créeront un certificat valide pendant une période donné
- soit pour une entreprise mettre en place via serveur Windows avec un service de certification. Cela permet à l'entreprise de gérer elle même la création et validation des certificats fourni.
- soit ici en utilisant un certificat auto validé par nous même.
La création du certificat racine est le certificat qui va devoir être placé sur la machine exécutant le scripts.
Pour crée notre certificat nous allons utiliser l'outils makecert.exe disponible dans le SDK du framework.
Aller dans vortre menu Démmaer -> Microsoft .NET Framework SDK v2.0 -> Invite de commandes du Kit de développement SDK
Une fenêtre vas s'ouvrir, vous allez pouvoir faire appel à makecert.exe dans cette fenêtre
D:\Program Files\Microsoft Visual Studio 8\SDKv2.0>makecert.exe -n "CN=Certific at local racine techjp.net" -a sha1 -eku 1.3.6.1.5.5.7.3.3 -r -sv RacineTechjp.p vk RacineTechjp.cer -ss Root -sr localMachine
Liens et ressource :
Je me suis appuyé pour rédiger cette article sur un articles très bien fait sur le sujet de Laurent Dardenne que vous trouverez ici
Un autre article de blog traitant du sujet ici
Article sur la signature d'une application via un certificat [En]
Astuces ou scripts Powershell
Faire une recherche récursive d'un fichier sur un disque "c:" de tous les fichiers "*.mp3"
dir c: -Recurse -Filter *.mp3
Pour la version 1 de powershell un bug ralenti le démarrage de powershell. Pour résoudre le problème il faut exécuter le code suivant:
Set-Alias ngen @( dir (join-path ${env:windir} "Microsoft.NETFramework") ngen.exe -recurse | sort -descending lastwritetime )[0].fullName [appdomain]::currentdomain.getassemblies() | %{ngen $_.location}
Connaitre la version de powershell
get-host Chargement par défaut des extensions externe à Powershell (exemple : extension Quest)