Question Comment faciliter la substitution d'une variable ?
- Laurent Dardenne
- Auteur du sujet
- Hors Ligne
- Modérateur
-
Réduire
Plus d'informations
- Messages : 6311
- Remerciements reçus 68
il y a 15 ans 8 mois #7320
par Laurent Dardenne
Tutoriels PowerShell
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
[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.
- Laurent Dardenne
- Auteur du sujet
- Hors Ligne
- Modérateur
-
Réduire
Plus d'informations
- Messages : 6311
- Remerciements reçus 68
il y a 15 ans 8 mois #7410
par Laurent Dardenne
Tutoriels PowerShell
Réponse de Laurent Dardenne sur le sujet Re:Comment faciliter la substitution d'une variable ?
J'ai ajouté la possibilité de créer un scriptblock à partir d'une instance de type String :
[code:1]
$Code ='`$result=dir `\"$env:HOMEDRIVE$env:HOMEPATH\File001.dat`\"'
$sb=$Code.ExpandString().NewScriptBlock()
$sb.GetType()
#
#IsPublic IsSerial Name BaseType
#
----
#True False ScriptBlock System.Object
#
$sb
#$result=dir \"C:\Documents and Settings\User\File001.dat\"
[/code:1]<br><br>Message édité par: Laurent Dardenne, à: 23/08/10 14:36
[code:1]
$Code ='`$result=dir `\"$env:HOMEDRIVE$env:HOMEPATH\File001.dat`\"'
$sb=$Code.ExpandString().NewScriptBlock()
$sb.GetType()
#
#IsPublic IsSerial Name BaseType
#
----
#True False ScriptBlock System.Object
#
$sb
#$result=dir \"C:\Documents and Settings\User\File001.dat\"
[/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
- Vous êtes ici :
-
Accueil
-
forum
-
PowerShell
-
Contributions à la communauté
- Comment faciliter la substitution d'une variable ?