Question Comment faciliter la substitution d'une variable ?

Plus d'informations
il y a 15 ans 8 mois #7320 par Laurent Dardenne
Pour faciliter l'appel de l'expansion de variable on peut utiliser le système de type de PowerShell (Extended type system )
[code:1]
<?xml version=\"1.0\" encoding=\"utf-8\"?>
<Types>
<Type>
<Name>System.String</Name>
<Members>
<ScriptMethod>
<Name>ExpandString</Name>
<Script>
$ExecutionContext.InvokeCommand.ExpandString($this)
</Script>
</ScriptMethod>
<ScriptMethod>
<Name>NewScriptBlock</Name>
<Script>
$ExecutionContext.InvokeCommand.NewScriptBlock($this)
</Script>
</ScriptMethod>
</Members>
</Type>
</Types>
[/code:1]
Reste à enregistrer ces lignes dans un fichier .ps1xml, puis à ajouter son chargement dans le profil utilisateur :
[code:1]Update-TypeData C:\Documents and Settings\UserName\Mes documents\WindowsPowerShell\Scripts\System.String.types.ps1xml[/code:1]
Un exemple d'utilisation :
[code:1]$FilePath='$env:HOMEDRIVE$env:HOMEPATH\File001.dat'
$FilePath.ExpandString()[/code:1]

Si vous utilisez cette approche, pensez à déployer le fichier ps1xml avec vos scripts.<br><br>Message édité par: Laurent Dardenne, à: 19/07/10 15:49

Tutoriels PowerShell

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

Plus d'informations
il y a 15 ans 8 mois #7410 par Laurent Dardenne
J'ai ajouté la possibilité de créer un scriptblock à partir d'une instance de type String :
[code:1]
$Code ='`$result=dir `\&quot;$env:HOMEDRIVE$env:HOMEPATH\File001.dat`\&quot;'
$sb=$Code.ExpandString().NewScriptBlock()
$sb.GetType()
#
#IsPublic IsSerial Name BaseType
#

----
#True False ScriptBlock System.Object
#
$sb
#$result=dir \&quot;C:\Documents and Settings\User\File001.dat\&quot;
[/code:1]<br><br>Message édité par: Laurent Dardenne, à: 23/08/10 14:36

Tutoriels PowerShell

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

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