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;} |