Jacques's profilejanelPhotosBlogLists Tools Help
    November 29

    Formation PowerShell sur l'installation et le paramétrage des produits Microsoft

    J’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 credentials

    Ne 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 PowerShell

    Et 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ènements

    Tenez, 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 CTP

    L’é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