| Jacques's profilejanelPhotosBlogLists | Help |
|
September 27 Hip hop! J'édite mon script!Petite astuce à deux balles :
J’ai la bonne habitude de garder mes scripts PowerShell dans un même répertoire, ou plus précisément dans un même arborescence (contenue dans le répertoire créé par PowerShell pour stocker mon profil utilisateur). Lorsque je veux modifier un script depuis la console PowerShell, il faut alors que je navigue jusqu’au répertoire en question et que je lance Notepad – ou tout autre éditeur de texte que j’aurai défini par défaut pour les fichiers PS1 – en lui passant le nom du fichier en paramètre.
Ces opérations peuvent être regroupées en une seule commande :
ii (gcm monscript).path
Décomposons ce que fait cette commande. D’abord, l’expression entre parenthèses est évaluée. gcm est un alias standard pour get-command. get-command monscript recherche toute commande portant le nom monscript, qu’il s’agisse d’une commandelette, d’un alias, d’un script (PS1, VBS, CMD ou autre) ou d’une application. On n’a pas besoin de préciser l’extension, PowerShell essaiera de résoudre le nom en fonction des extensions connues comme étant exécutables. Evidemment, cela ne marche pas si le répertoire de monscript n’est pas dans le PATH. Au passage, je vous rappelle que le répertoire en cours n’est pas implicitement pris en compte par PowerShell pour la recherche de commandes.
Si la commande est un script, get-command retourne un objet de type System.Management.Automation.ExternalScriptInfo :
get-command monscript | get-member
TypeName: System.Management.Automation.ExternalScriptInfo
Name MemberType Definition
---- ---------- ----------
Equals Method System.Boolean Equals(Object obj)
GetHashCode Method System.Int32 GetHashCode()
GetType Method System.Type GetType()
get_CommandType Method System.Management.Automation.CommandTypes get_CommandType()
get_Definition Method System.String get_Definition()
get_Name Method System.String get_Name()
get_Path Method System.String get_Path()
ToString Method System.String ToString()
CommandType Property System.Management.Automation.CommandTypes CommandType {get;}
Definition Property System.String Definition {get;}
Name Property System.String Name {get;}
Path Property System.String Path {get;}
MSDN ScriptMethod System.Object MSDN();
La propriété Path, vous l’aurez deviné, contient le chemin d’accès au script. Donc, (get-command monscript).path retourne le chemin d’accès à monscript.ps1 (en supposant qu’il s’agisse d’un script PowerShell).
Il ne reste plus qu’à ouvrir le fichier en question. Je pourrais utiliser explicitement Notepad (hé oui, le Bloc-notes reste mon éditeur de texte préféré), mais autant avoir une solution qui utilisera l’éditeur de texte associé à l’extension PS1 (ou à défaut à tout fichier texte) quel qu’il soit. Pour cela j’utilise la commandelette invoke-item dont l’alias standard est ii.
Et voilà :-)
Janel La RC2 de Windows PowerShell enfin disponible!Pour info, la RC2 de Windows PowerShell est disponible en téléchargement, y compris en version française.
L’ensemble des installations disponibles est accessible depuis cette page :
L’article de la base de connaissances qui doit décrire le processus d’installation est disponible ici :
Pour une raison que je ne m’explique pas, je ne peux pas accéder à cette page, ne comptez donc pas sur moi pour commenter son contenu.
La RC2 de PowerShell est installable sur Windows XP (SP2) y compris l’édition x64, et sur Windows Server 2003 x86, x64 et Itanium. Ne cherchez pas la version pour Windows Vista, elle n’est pas disponible dans l’immédiat. Du coup, je resterai avec ma version intermédiaire post-RC1 ou pré-RC2 quelques jours de plus.
Les langues disponibles sont le chinois simplifié et traditionnel, l’anglais, le français, l’allemand, l’italien, le japonais, le coréen, le portugais brésilien, le russe et l’espagnol.
Bon téléchargement !
Janel September 26 Delicious PowerShellJe viens de tomber sur le site del.icio.us consacré à PowerShell, et l’abondance des liens recensés me donne le vertige. Quelle source de référence ! Vous pouvez retrouver les contributions du net par personne, par communauté, par fonctionnalité ou encore par technologie Windows concernée (par exemple, vous retrouverez la série d’articles de MOW parmi les 27 contributions recensées pour Active Directory).
Une des fonctionnalités du site que j’apprécie le plus est la clarté et la concision des éléments d’interface. Tout est disponible dans la colonne de droite, rangé par catégorie. Et si vous cherchez les contributions qui traitent du pipeline, et que vous ne trouvez pas dans quelle catégorie Pipeline a été rangé (si tant est qu’il figure quelque part) ? Tapez http://del.icio.us/powershell/pipeline, et vous aurez votre réponse. En plus, chaque liste est accompagnée d’une sélection de catégories en relation avec le même sujet. Bref, vous n’avez pas fini de naviguer d’une page à l’autre ! J’aime les sites comme celui-là qui donnent envie de lire, encore et encore :-)
Si je devais trouver un défaut à ce site ? L’absence totale de contributions non-anglophones. Je peux comprendre que ce ne soit pas simple à intégrer dans une gestion de mots-clés, mais c’est dommage. On pourra toujours se rabattre sur les moteurs de recherche classiques, y compris Technorati pour une recherche dédiée au contenu des blogs.
Bonnes lectures !
Janel September 25 L'équipe Windows PowerShell à BarceloneL’IT Forum (conférence de Microsoft ouverte aux professionnels de l’informatique) se déroulera cette année du 14 au 17 novembre, à Barcelone. La capitale catalane accueille régulièrement les grandes conférences européennes de Microsoft depuis plusieurs années.
Avant que l’IT Forum existe (l’évènement a été créé il y a quatre ou cinq ans) Barcelone accueillait déjà le Tech-Ed, évènement principalement consacré aux développeurs. La première édition de l’IT Forum eu lieu à Copenhague, où les infrastructures d’accueil sont moins développées qu’à Barcelone, mais j’imagine que pour une première édition Microsoft n’envisageait pas une audience comparable au Tech-Ed. J’y étais, et j’en ai surtout gardé le souvenir d’un séjour dans le froid et la nuit. Un peu normal me direz-vous pour le mois de novembre au Danemark, mais peu réconfortant pour l’informaticien qui se retrouve seul, loin de chez lui…
Quoi qu’il en soit, cette année il devrait faire beau et chaud. Et en plus, quelques-uns des membres les plus éminents de l’équipe Windows PowerShell seront de la partie, cf. le billet de Jeffrey Snover. Si vous voulez vous inscrire:
L’agenda officiel fait état d’une session “MGT 314 : Solving Management Problems with Windows PowerShell”.
Janel September 20 Lancement (encore plus) rapide dans VistaSi vous avez atterri ici en pensant trouver de l’information sur la fonction SuperFetch de Windows Vista, non ce n’est pas l’objet de ce billet.
En réalité, je ne fais que relayer une information qui semble-t-il commence à circuler sur d’autres blogs en anglais (voir le blog de Steve Clayton). L’information en soi n’est pas d’une importance folle, mais pour l’utilisateur de Vista que je suis et que vous êtes très certainement elle peut s’avérer très utile.
Vous avez certainement installé des raccourcis vers vos applications favorites dans la barre de lancement rapide (la barre juste à droite du bouton Démarrer). Sachez que vous pouvez lancer ces applications en appuyant sur la touche Windows + le numéro d’ordre de l’application en question. Par exemple, vous trouverez jointe à ce billet une capture écran de ma barre de lancement rapide. Comme vous le voyez, la barre est sur deux lignes : la numérotation se fait comme la lecture, de gauche à droite et de haut en bas. Donc, si j’appuie sur Windows + 2, j’obtiens le lancement d’Internet Explorer ; si j’appuie Windows + 3 c’est Outlook qui est lancé, etc. jusqu’à Windows + 8 qui lancera Network Monitor.
Et si j’appuie sur Windows + 1, j’obtiens alternativement l’affichage du bureau et le rétablissement des fenêtres d’applications. A propos du bureau, le billet de Steve Clayton mentionne une deuxième astuce. Je vous laisse la découvrir sur son site.
Janel September 07 Mélangeur de volume de Windows VistaSi vous avez installé Windows Vista (actuellement disponible en RC1) vous avez peut-être noté cette petite nouveauté. Oh, il ne s’agit pas d’une révolution comme UAC, ou d’une nouvelle technologie ébouriffante comme WIM, ni même d’un changement cosmétique essentiel comme Aero Glass. Non, il s’agit simplement d’une fonctionnalité dont j’ai maintes fois rêvé et qu’enfin, Microsoft a fait ! Jetez plutôt un oeil à la capture d'écran ci-jointe.
On obtient ce dialogue en cliquant sur l’icône de réglage du son dans la barre système. Vous l’aurez compris, on peut maintenant régler le volume sonore pour chaque application ouverte de manière totalement indépendante. On peut même complètement « couper le sifflet » à une application sans interrompre les autres. Très pratique pour, par exemple, écouter sa musique à fond tout en gardant en arrière-plan les sons système ou les notifications de courrier d’Outlook.
Les fous de musique expérimentale pourront même se servir de ce dialogue comme d’une table de mixage sommaire : quelques sources sonores différentes (par exemple un WMA, un fichier Real Audio, un film Flash et un AAC), le mélangeur de volume, et hop ! Bonjour les hit-parades familiaux avec le nouveau remix fait maison !
Deux remarques légèrement hors sujet : oui, mon Vista est en français. Et non, je n’ai pas Aero Glass sur mon ordinateur. N’insistez pas.
Janel September 06 Mon album d'images avec PowerShellTout commença par une question sur le forum de scripting MS… Quelqu’un voulait savoir pourquoi son script VBS ne marchait pas, et son script était censé piloter un freeware qui crèe des miniatures d’images. La finalité du script était de créer une page web qui reprendrait toutes ces miniatures.
Je dois avouer que je n’ai pas vraiment cherché à résoudre le problème qui était soumis au forum. Par contre, l’envie m’est venue d’écrire le même type de script en PowerShell, sachant qu’à la place du freeware on pourrait utiliser les classes .NET idoines. J’ai fait une première version qui ne marchait que moyennement, et puis le temps a passé et je me suis remis à l’ouvrage récemment pour finalement produire le script que voici.
Ce script est loin d’être abouti – le paramétrage est limité au strict minimum – mais il m’a permis de me confronter à deux ou trois problèmes sympathiques (pas liés à PowerShell d’ailleurs), et j’espère qu’il vous ouvrira des horizons sur les multiples usages possibles de PowerShell.
# out-album.ps1
#
# Crèe un album à partir des images fournies en entrée
#
# Usage: ... | out-album [-ratio r | -largeur x -hauteur y]
#
# -ratio indique le ratio (1/r) entre les images et leurs miniatures
# -largeur indique la largeur des miniatures en pixels
# -hauteur indique la hauteur des miniatures en pixels
#
# Les images utilisées pour créer l'album sont transmises par le pipeline.
# Les miniatures sont créées dans un sous-répertoire /thumb du répertoire courant.
# L'album est constitué d'un fichier album.htm qui affiche toutes les miniatures
# et les lie à leur image d'origine.
#
# Si ratio est spécifié, largeur et hauteur sont ignorées.
# Si une seule des deux dimensions est spécifiée, l'autre est calculée en proportion.
# Si aucun paramètre n'est spécifié, un ratio de 1/10 est utilisé.
#
param (
$ratio = 0,
$largeur = 0,
$hauteur = 0
)
[reflection.assembly]::loadwithpartialname("system.drawing")>$null
if (!(test-path thumb)) {md thumb >$null}
$album = "<html>`n"
$input | foreach {
$imgname = $_.name
$imgbasename = [IO.Path]::GetFileNameWithoutExtension($_)
$image = new-object system.drawing.bitmap($_.fullname)
if ($ratio) {
$largeur = $image.width/$ratio
$hauteur = $image.height/$ratio
}
else {
if ($largeur -or $hauteur) {
if (!($largeur)) {$largeur = $image.width/($image.height/$hauteur)}
if (!($hauteur)) {$hauteur = $image.height/($image.width/$largeur)}
}
else {$ratio = 10}
}
$thumb = $image.getthumbnailimage($largeur,$hauteur,$null,0)
$thumbname = "thm_$imgname"
$thumbpath = join-path (join-path (pwd).path thumb) $thumbname
$thumb.save($thumbpath, [system.drawing.imaging.imageformat]::jpeg)
$thumb.dispose()
$image.dispose()
$album += "<a href='$imgname'>"
$album += "<img src='thumb/$thumbname' alt='$imgbasename'>"
$album += "</a>`n"
}
$album += "</html>"
$album | out-file album.htm
Janel Documentation en français pour PowerShell RC2Il semblerait que non seulement la RC2 de PowerShell sera disponible en français (comme indiqué dans un précédent billet) mais que la documentation sera également traduite. Il ne s’agit pas d’une annonce officielle, mais l’info vient d’une source fiable :-)
Pour ce qui est de la mise à disposition de la RC2, toujours aucune date…
Janel Conférence itSMF France le 17 octobre 2006La conférence annuelle d’itSMF France aura lieu au Palais des Congrès de Paris le 17 octobre prochain :
<pub>
Microsoft est un des Diamond Sponsors de l’évènement. J’aurai le plaisir d’y être présent et d’y présenter les travaux récents de l’informatique interne de Microsoft en matière de Gestion de Services, en application des recommandations ITIL et MOF. Ma présentation portera principalement sur la mise en place d’un Catalogue de Services.
</pub>
Plus d’informations sur ITIL (IT Infrastructure Library) –
Site français de l’itSMF (association de promotion d’ITIL)
Site anglais de l’OGC (organisme fondateur d’ITIL)
Plus d’informations sur MOF (Microsoft Operations Framework, à ne pas confondre avec Managed Object Format) –
Programme d’amélioration permanente de MOF (Microsoft France)
Site de référence sur MOF (Microsoft US)
Janel |
|
|