Question [Avis]Article sur PoshV3

Plus d'informations
il y a 13 ans 2 semaines #10293 par Arnaud Petitjean
Bonjour !

J'arrive peut être un peu tard, mais il faut savoir que je recherche des personnes motivées pour l'animation de ce site pour me seconder. En effet, Robin m'ayant laché, et étant bien occupé j'ai un peu de mal à tout gérer tout seul...

J'ai déjà fait un appel à candidatures il y a de nombreux mois et je n'ai pas eu de volontaires (mis à part Laurent).

Je trouve que c'est dommage d'éparpiller l'information PowerShell sur de nombreux blogs alors que ce site a justement pour vocation de fédérer les bonnes volontés et l'information en Français autour de PowerShell.

Donc si vous changez d'avis, faites moi signe ! ;)

Arnaud
PS : Sinon Richard, très bien ton article sur la v3 !!!

MVP PowerShell et créateur de ce magnifique forum :-)
Auteur de 6 livres PowerShell aux éditions ENI
Fondateur de la société Start-Scripting
Besoin d'une formation PowerShell ?

Connexion ou Créer un compte pour participer à la conversation.

Plus d'informations
il y a 13 ans 2 semaines #10300 par Matthew BETTON
Réponse de Matthew BETTON sur le sujet Re:[Avis]Article sur PoshV3
Bonjour Arnaud,

J'ai déjà fait un appel à candidatures il y a de nombreux mois et je n'ai pas eu de volontaires (mis à part Laurent).


Désolé, j'ai 'zappé' ton appel...

Quoi qu'il arrive, vous (tout le monde) pouvez compter sur moi pour intervenir, commenter, réagir et partager sur ce forum.... Bien entendu, à mon niveau de connaissances...

A l'époque où j'ai créé mon blog, c'était notamment par amusement et pour comprendre certaines 'subtilités' du Web (je reste un éternel curieux :) ).

Tu pourras noter que j'ai souvent mis en place des redirections vers ce site et que je n'hésites pas, suivant mes disponibilités (Cela me rappelle ce qu'avait écrit Laurent il n'y a pas longtemps dans ce forum : \"Ce n'est pas de la vitesse, juste de la disponibilité\"), à écrire des messages ici et là sur le forum ;)

Je suis OK avec ta proposition... Toutefois, j'espère que cela ne dérangera personne si je conserve encore pour le moment mon blog.

De toute façon, il n'a pas pour vocation de remplacer ce site qui doit absolument continuer d'exister, pour la communauté française des administrateurs systèmes avides de PowerShell !

@ +

Matthew

Connexion ou Créer un compte pour participer à la conversation.

Plus d'informations
il y a 13 ans 2 semaines #10321 par Laurent Dardenne
Concernant le chargement automatique des fonctions hébergées dans un module, voici quelques infos.

Je regarde un peu sous le capot de cette version, à l'aide d' ILSpy et en vérifiant 2-3 trucs par-ci par-là, par exemple la variable $ExecutionContext.InvokeCommand.

Celle-ci contient, dans cette CTP, de nouveaux membres

EnableDefaultCommandNotFoundAction
CommandNotFoundAction
PostCommandLookupAction
PreCommandLookupAction


La premier est une méthode et les trois derniers sont des délégués d'événements.

Les deux derniers sont associés à l'algorithme de recherche des membres propre à PS. Le PreCommand n'a pas l'air au point, car il boucle sur appel à un write-host :silly:

Ces trois délégués utilisent la classe System.Management.Automation.CommandLookupEventArgs.

Donc, le délégué CommandNotFoundAction peut être utilisé pour associé un traitement lors de l'appel d'une commande inexistante.
A l'initialisation d'une session il est à null, c'est donc la recherche par défaut qui opère à savoir DefaultCommandNotFoundAction de la classe System.Management.Automation.CommandInvocationIntrinsics.

La méthode EnableDefaultCommandNotFoundAction, de cette même classe, crée par l'appel à DefaultCommandNotFoundAction le code de recherche suivant :
[code:1]
internal void DefaultCommandNotFoundAction(object commandName, CommandLookupEventArgs eventArgs)
{
if (eventArgs == null)
{
throw PSTraceSource.NewArgumentNullException(\"eventArgs\"«»);
}
string text = eventArgs.CommandName;
if (string.IsNullOrWhiteSpace(text))
{
return;
}
string[] array = text.Split(new char[]
{
'/',
'\\'
});
string text2 = null;
if (array.Length == 2)
{
text2 = array[0];
text = array[1];
}
Collection<PSModuleInfo> collection = PowerShell.Create(RunspaceMode.CurrentRunspace).AddCommand(\"Get-Module\"«»).AddParameter(\"-List\"«»).Invoke<PSModuleInfo>();
if (collection != null && collection.Count > 0)
{
foreach (PSModuleInfo current in collection)
{
if ((string.IsNullOrEmpty(text2) || string.Equals(text2, current.Name, StringComparison.OrdinalIgnoreCase)) && current.ExportedCommands.ContainsKey(text))
{
Collection<PSModuleInfo> collection2 = PowerShell.Create(RunspaceMode.CurrentRunspace).AddCommand(\"Import-Module\"«»).AddParameter(\"-Name\", current.Path).AddParameter(\"-PassThru\"«»).Invoke<PSModuleInfo>();
if (collection2 != null && collection2.Count == 1)
{
CommandInfo commandInfo = collection2[0].ExportedCommands[text];
if (commandInfo != null)
{
eventArgs.Command = commandInfo;
eventArgs.StopSearch = true;
break;
}
}
}
}
}
}
[/code:1]
Peut-être sera-til possible dans la version finale de désactiver ce mode ?

Tutoriels PowerShell

Connexion ou Créer un compte pour participer à la conversation.

Plus d'informations
il y a 13 ans 1 semaine #10333 par Laurent Dardenne
Laurent Dardenne écrit:

Peut-être sera-til possible dans la version finale de désactiver ce mode ?

Je viens de lire un post, de la semaine dernière, sur la mailing des MVP PS, Oisin Grehan y fait mention de la variable suivante pour désactiver l'autochargement :
[code:1] #Turn off module autoloading:
$env:«»psdisablemoduleautoloading = $true[/code:1]

Il précise également que la méthode Commandnotfoundaction doit renvoyer :
[code:1]$eventargs.stopsearch = $true[/code:1]
A tester donc.<br><br>Message édité par: Laurent Dardenne, à: 27/09/11 19:46

Tutoriels PowerShell

Connexion ou Créer un compte pour participer à la conversation.

Temps de génération de la page : 0.108 secondes
Propulsé par Kunena