Ler e seguir Resolvendo o problema com a expansão de variáveis em um bloco de scripts em Substituição de variável em um bloco de script do PowerShell :
The solution to expanding a variable inside a script block is to do two things:
- create the script block as an expanding string.
- use the static
Create
method from the[scriptblock]
class; this will create a script block.
A citação acima é ligeiramente truncada. Você pode modificar seu script da seguinte forma (observe os ###
comentários apropriados):
$parentProfile = $psISE.CurrentPowerShellTab.AddOnsMenu.SubMenus.Add("Modules",$null,$null)
$mymodules = Get-ChildItem $env:USERPROFILE\documents\windowspowershell\modules |
Where-Object { $_.PSIsContainer } |
Select-Object name -ExpandProperty name
$i = 0
foreach ($folder in $mymodules) {
$auxStringBlock = "Import-Module -Name $folder" ### create the script block as an expanding string.
$parentProfile.SubMenus.Add(
"$folder",
[scriptblock]::Create( $auxStringBlock), ### use the static 'Create' method from the '[scriptblock]' class
$null # keyboard shortcut
)
}