Une fonctionnalité intéressante de Powershell est le ScriptBlock, mais selon comment vous l’utilisez, ça marche ou pas comme vous le désirez … voici l’explication :
Si nous voulons executer un script powershell, nous pouvons utiliser :
$monPS1 = « C:scriptstoto.ps1"</p> <p class="codediv">powershell ."$monPS1"</p>
<p>Si on veut créer un ScriptBlock, on le fera de cette manière :</p>
<p class="codediv »>$MonScriptBlock = {powershell . »$monPS1 »}
Si on utilise la variable seule, il retourne un string:
PS > $MonScriptBlock
{powershell . »$monPS1″}
Pour récupérer la « valeur calculé », il faut utiliser la commande Invoke() :
PS > $MonScriptBlock.Invoke()
powershell .« C:scriptstoto.ps1 »
Vous pouvez aisément vous servir de cette exemple pour lancer un job :
Start-Job -ScriptBlock $MonScriptBlock.Invoke()
Pour plus d’infos sur les membres de ScriptBlock, rendez vous sur cette page :
ou en faisant :
$MonScriptBlock | Get-Member
Name | MemberType | Definition |
—- | ———- | ———- |
Equals | Method | bool Equals(System.Object obj) |
GetHashCode | Method | int GetHashCode() |
GetNewClosure | Method | scriptblock GetNewClosure() |
GetPowerShell | Method | powershell GetPowerShell(Params System.Object[] args) |
GetSteppablePipeline | Method | System.Management.Automation.SteppablePipeline GetSteppablePipeline(), System.Management.Automation.SteppablePipeline GetSteppa… |
GetType | Method | type GetType() |
Invoke | Method | System.Collections.ObjectModel.Collection[psobject] Invoke(Params System.Object[] args) |
InvokeReturnAsIs | Method | System.Object InvokeReturnAsIs(Params System.Object[] args) |
ToString | Method | string ToString() |
Attributes | Property | System.Collections.Generic.List`1[[System.Attribute, mscorlib, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e08… |
File | Property | System.String File {get;} |
IsFilter | Property | System.Boolean IsFilter {get;set;} |
Module | Property | System.Management.Automation.PSModuleInfo Module {get;} |
StartPosition | Property | System.Management.Automation.PSToken StartPosition {get;} |
IsFilter | Property | System.Boolean IsFilter {get;set;} |
Module | Property | System.Management.Automation.PSModuleInfo Module {get;} |
StartPosition | Property | System.Management.Automation.PSToken StartPosition {get;} |