Je l'extrait de code de script suivante PowerShell dans mon profil:Qu'est-ce que PowerShell snippet moyenne (parsing syntaxe aide!)
. (join-path (split-path (& { $myInvocation.ScriptName })) "export-errors.ps1")
Maintenant, je comprends que cela provoque le script export-errors.ps1
qui existe dans le même répertoire comme mon script de profil à exécuter. Ma question est, pourquoi?
Je ne comprends pas pourquoi la construction & { xxx }
est différente que xxx
dans ce cas. J'ai essayé d'utiliser cette construction similaire:
$lame = join-path (split-path $myinvocation.mycommand.definition) "_lame\lame.exe"
Cela ne fonctionne pas, cependant. J'ai des erreurs sur les fournisseurs qui n'existent pas, et je ne comprends pas vraiment pourquoi.
Pourquoi la première construction fonctionne-t-elle, et pas la seconde?
MISE À JOUR
Il est devenu clair pour moi que je courais le mauvais bug. En effet, les deux constructions fonctionnent, sous certaines conditions. La condition sous laquelle j'exécutais la deuxième construction, cependant, est celle dans laquelle NEITHER fonctionne. Je vais poser une question distincte à ce sujet. Keith a presque certainement raison quand il dit que la première construction est une tentative de contourner certaines bizarreries. C'était une chose de copier-coller d'il y a longtemps.
La commande 'lame' fonctionne pour moi. '$ lame' est une chaîne de résultats comme' C: \ TEMP \ _101119_163554 \ _lame \ lame.exe'. Pour l'exécuter en tant qu'utilisation de commande. ou & opérateur: '. $ lame'. –
BTW, ce code devrait être invoqué dans un script sinon il ne fonctionne pas comme "prévu". –