Прочтите и следуйте Решению проблемы с расширением переменной в блоке сценария в Подстановке переменной в блоке сценария PowerShell :
Решение для расширения переменной внутри блока скрипта состоит в том, чтобы сделать две вещи:
- создать блок скрипта в виде расширяющейся строки.
- использовать статический
Create
метод из[scriptblock]
класса; это создаст блок скрипта.
Выше цитата слегка усечена. Вы можете изменить свой скрипт следующим образом (обратите внимание на соответствующие ###
комментарии):
$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 ) }