나는 내가 찾고있는 대답을 찾기 위해 검색 엔진 내에서 내 문제를 잘 표현할 수 없어서 도움을 얻기 위해 커뮤니티를 참조한다.
PowerShell ISE의 메뉴에 하위 메뉴 항목을 채워서 디렉토리에있는 모듈 목록으로 채워 넣기를 원합니다. 그래서 몇 번의 마우스 클릭만으로 모듈을로드 할 수 있습니다.
$parentProfile = $psISE.CurrentPowerShellTab.AddOnsMenu.SubMenus.Add("Modules",$null,$null)
$mymodules = gci $env:USERPROFILE\documents\windowspowershell\modules |
?{ $_.PSIsContainer } | select name -ExpandProperty name
$i = 0
foreach ($folder in $mymodules) {
$parentProfile.SubMenus.Add(
"$folder", {
Import-Module -Name $folder
},
$null # keyboard shortcut
)
}
이 코드는 상위 메뉴 항목 인 "Modules"아래에 20 개의 새 하위 메뉴 항목 목록을 작성하지만 하위 메뉴 항목 중 하나를 클릭하면 예상대로 작동합니다.
Import-Module : The specified module '_Connect-Office365Service' was not loaded because no valid module file was found in any module directory.
At line:2 char:2
+ Import-Module -Name $folder
+ ~~~~~~~~~~~~~~~~~~~~~~~~~~~
+ CategoryInfo : ResourceUnavailable: (_Connect-Office365Service:String) [Import-Module], FileNotFoundException
+ FullyQualifiedErrorId : Modules_ModuleNotFound,Microsoft.PowerShell.Commands.ImportModuleCommand
"_Connect-Office365Service"값은 foreach 문에서 처리 한 마지막 값 또는 폴더입니다. 내가 만든 하위 메뉴 항목의 일부로 발견 된 각 폴더 이름에 대해 $ folder의 고유하고 상응하는 값을 원합니다.
이것이 가능한가? 아마도 내가 지적 할 수있는보다 훌륭하고 우아한 접근 방식이 있을까요? 폴더에있는 이름을 검색하는 것보다 액세스 할 수있는 모듈 목록을 얻는 더 좋은 방법이 있다는 것을 알고 있지만 원본과 관계없이 변수에서 잘못된 (마지막 값)을 전달하는 것과 같은 문제로 끝날 것이라고 생각합니다. .
감사.