| Jacques's profilejanelPhotosBlogLists | Help |
|
November 29 Formation PowerShell sur l'installation et le paramétrage des produits MicrosoftJ’ai tardé à relayer l’information, mais comme on dit, mieux vaut tard que jamais :
La société ISIMEDIA Systèmes va organiser en interne une formation PowerShell débutant sur 3 jours.
Le but de cette formation est d'amener les ingénieurs systèmes à avoir des bases solides et pouvoir développer leurs propres scripts d'installation et de paramétrage des produits Microsoft. Elle devrait se dérouler aux alentours du 26 décembre 2007, à Paris dans le quartier d’Opéra. Le but n'est pas commercial, mais il s’agit de rentabiliser cette formation qui sera dispensée sur mesure à deux ingénieurs d’ISIMEDIA Systèmes. ISIMEDIA Systèmes cherche deux autres personnes pour compléter les effectifs tout en gardant un minimum d'interaction avec le formateur. A quatre personnes, les trois jours reviendront à 1000€ HT par personne (hors frais de transport, de nourriture et d’hébergement).
Si vous êtes intéressé(e) n'hésitez à contacter : Alban CAOUREN ISIMEDIA Systèmes 01 45 62 04 66 Voilà, j’espère que l’annonce sera utile à au moins deux d’entre vous.
Janel November 27 Je fais dans l'import/export des credentialsNe dit-on pas que les informaticiens – et en particulier les administrateurs système – sont des fainéants, et que c’est pour ça qu’ils écrivent des scripts, pour éviter de se fatiguer à ressaisir une même commande ?
Hé bien, si cette tendance est avérée, voici qui devrait caresser tous les administrateurs système dans le sens du poil. Les deux scripts que je vous propose aujourd’hui s'appellent export-credential et import-credential. Ils permettent de sauvegarder dans un fichier les « credentials » d'un utilisateur de manière à pouvoir les recharger à volonté (par exemple dans un script).
Imaginons qu’on veuille interroger une série de serveurs distants avec get-wmiobject mais que son propre compte n'ait pas accès à ces serveurs: la technique classique consiste alors à utiliser get-credential pour saisir un nouveau couple username/password, et à passer le résultat à get-wmiobject via son paramètre –credential :
PS> $cred = get-credential
PS> get-wmiobject win32_operatingsystem -computer MONSERVEUR -credential $cred
Problème, si on doit répéter la manip régulièrement au cours de sessions PowerShell différentes, voire si on doit inclure get-wmiobject dans un script, l'interactivité de get-credential devient une contrainte. C'est là que mes petits scripts interviennent:
Etape 1: sauvegarde des credentials (à faire une fois pour toutes)
# export-credential.ps1
# v1
# janel, 27/11/07
param ($credential, $filename)
$credential.username > $filename
convertfrom-securestring $credential.password >> $filename
Etape 2: chargement des Credentials (à utiliser à volonté)
# import-credential.ps1
# v1
# janel, 27/11/07
param ($filename)
$username,$password = type $filename
$pwd = convertto-securestring $password
new-object system.management.automation.PSCredential $username,$pwd
Exemple d'usage:
# Une fois pour toutes:
PS> $cred = get-credential
PS> export-credential $cred c:\scripts\admin.txt
# Dans un script qui a besoin d'utiliser les credentials:
$cred = import-credential c:\scripts\admin.txt
get-wmiobject win32_operatingsystem -computer MONSERVEUR -credential $cred
Voilà. L'avantage de cette technique (outre le fait qu'elle autorise la récupération des credentials sans avoir besoin de repasser par le popup Windows) est qu'elle préserve la confidentialité du mot de passe en le stockant sous sa forme cryptée.
La contrainte (liée à l'avantage ci-dessus énoncé) est qu'on ne peut importer les credentials qu'à partir du même compte qui les a saisis avec get-credential. En effet, la chaîne sécurisée contenant le mot de passe est générée à partir d'une clé détenue par le compte actif. Attention donc si vous utilisez import-credential dans un script: vous ne pourrez pas le planifier avec un autre compte. Ou alors, il faudra avoir exécuté la première étape à partir de cet autre compte également.
Profitez bien !
Janel November 20 Le premier livre en français sur PowerShellEt voilà, il fallait que ça arrive un jour : le premier livre sur Windows PowerShell en français est sorti cette semaine.
Il s’agit de la traduction d’un ouvrage d’Ed Wilson, formateur spécialiste des scripts pour l’administration et les réseaux. Le livre s’appelle en français Windows PowerShell, Kit d’administration (éditions Dunod / Microsoft Press).
Apparemment le livre est disponible à la FNAC, et donc j’imagine dans la plupart des bonnes librairies techniques en France. Vous pouvez également l’acheter en ligne, ou simplement en savoir plus sur son contenu, sur le site de l’éditeur :
Prix public : 35 €
En attendant le premier livre écrit en français sur Windows PowerShell, dont la sortie est prévue début février 2008. Plus que deux mois à tenir !
Janel November 16 Enregistrez vos commandes PowerShell dans le journal des évènementsTenez, pour conclure la semaine en beauté, voici une petite info non documentée :
Vous savez sans doute que Windows PowerShell crée un journal spécifique pour l’enregistrement des évènements qui le concernent. Ce journal est consultable notamment via la console de gestion de votre système, sous le nom simple de « Windows PowerShell » (dans la rubrique « Application and Service Logs » sous Vista – à traduire en français si vous n’avez pas un Windows en anglais). Par défaut, ce journal enregistre notamment les activités de démarrage et d’arrêt de la console, ainsi que l’initialisation des différents fournisseurs installés.
Ce que vous ne savez peut-être pas, c’est que vous pouvez également demander à PowerShell d’enregistrer dans ce même journal l’ensemble des commandes qui lui sont transmises. Pour cela, il suffit de taper la commande suivante :
PS> $LogCommandLifecycleEvent = $true
A partir de là, toute commande saisie sera enregistrée. Essayez, tapez une commande, rafraîchissez votre journal d’évènements Windows PowerShell, et découvrez les évènements qui ont été ajoutés.
Attention, absolument toutes les commandes transmises au moteur PowerShell sont enregistrées. Cela inclut les commandelettes ajoutées automatiquement à la fin des pipelines de manière habituellement transparente : format-default et out-default. Et cela inclut également les commandes de la fonction prompt qui est appelée à chaque retour à l’invite de commande. Si votre fonction prompt contient une vingtaine de commandes, vous les verrez toutes générer des évènements à chaque appel à la fonction.
Vous constaterez également que deux évènements sont enregistrés pour chaque commande :
Evènement ID 500 : début de la commande (« started »)
Evènement ID 501 : fin de la commande (« stopped »)
Les détails de l’évènement contiennent le nom de la commande et toutes les autres informations qui vous seront utiles pour pouvoir analyser ce qui a été exécuté.
Voilà, maintenant vous savez presque tout. Ah oui, bien sûr, si vous voulez désactiver cette fonction d’enregistrement, c’est très simple :
PS> $LogCommandLifecycleEvent = $false
Et maintenant, à vous de jouer !
Janel November 15 Mais, ce filtre est une vraie passoire!En testant un bout de script pour répondre à un utilisateur sur un forum, j’ai réalisé que le fonctionnement de where-object est souvent méconnu.
La commandelette where-object (alias : where, ?) est bien connue et fréquemment utilisée pour permettre de filtrer une collection d’objets :
# affiche les processus démarrés depuis moins d’une heure :
get-process | where {$_.StartTime -gt [DateTime]::Now.AddHours(-1)}
Ce qu’on oublie souvent, c’est que son fonctionnement ne s’arrête pas à faire ce filtrage. En réalité, where-object va exécuter le code qui lui est fourni pour tous les objets qui lui sont transmis. A chaque fois que le code exécuté retournera la valeur $true, where-object passera l’objet en cours à la commande suivante dans le pipeline :
# affiche les noms de tous les processus,
# en formatant l’affichage de ceux démarrés depuis moins d’une heure :
get-process | where {
write-host $_.name
$_.StartTime -gt [DateTime]::Now.AddHours(-1)
} | format-table name, starttime
On peut très certainement trouver des applications plus utiles que mon exemple, mais je voulais simplement attirer votre attention sur ce point. A vous de trouver les applications qui vous seront utiles. L’important, déjà, est de savoir comment ça marche ! J
Bon vent (frais),
Janel November 06 Ca y est, la CTP est disponible!Vous pouvez la trouver ici :
Si vous ne l’avez pas encore fait, lisez le billet de Jeffrey Snover sur le blog de l’équipe PowerShell. Il contient des mises en garde très précises sur l’utilisation de la CTP.
A bon entendeur !
Janel November 05 Windows PowerShell v2 arrive en CTPL’équipe PowerShell a annoncé vendredi la disponibilité prochaine de la version CTP de Windows PowerShell v2. CTP veut dire « Customer Technology Preview ». Comme le blog ci-dessous l’explique, il s’agit d’une version de travail loin d’être achevée, dont l’objectif principal est de recueillir les avis d’utilisateurs experts sur les choix technologiques en cours d’implémentation dans ce qui deviendra la v2 de PowerShell à une échéance encore indéterminée.
Jeffrey Snover insiste sur le fait que, bien qu’accessible à tous, la CTP de PowerShell n’est pas forcément à mettre entre toutes les mains. Il est important de lire le message ci-dessus pour comprendre les impacts et les risques potentiels à installer à utiliser cette version. Si vous avez le moindre doute, ne l’installez pas. Si au contraire vous piaffez d’impatience, hé bien… patience. J
Janel |
|
|