2014-01-15 2 views
2

Использование PowerShell 2.0Должны ли модули Powershell размещаться в отдельных папках?

Согласно тому, что я читал в Интернете, создаваемые пользователем модули powershell должны находиться в их собственном каталоге. Например, если я создаю модуль с именем MyModule.psm1, он должен находиться в папке с именем MyModule и находиться в любом каталоге, указанном в $env:PSModulePath.

Если у меня есть много модулей для проекта, мне кажется глупым создать отдельную папку для каждого из них. Это действительно необходимо? Зачем? Любой элегантный способ вокруг него?

ответ

1

Это не идеальный вариант, но вы можете создать переходы (MSDN), используя Sysinternals junction.exe. Это позволит вам хранить все фактические данные в одной папке, но ссылаться на нее с помощью разных путей.

[MSDN] Hard Links and Junctions

Предположим, что у вас было три (3) автономные .psm1 модуль файлы в папку с именем Modules в вашем $env:UserProfile\Documents\WindowsPowerShell\Modules каталоге.

Module Folder

Вы можете использовать несколько junction.exe команды для создания места (ссылки), которые указывают на «реальную» Modules папку в файловой системе.

$ModulePath = '{0}\Modules' -f (Split-Path -Path $Profile.CurrentUserCurrentHost -Parent); 
junction.exe $ModulePath\Foo $ModulePath\Modules; 
junction.exe $ModulePath\Bar $ModulePath\Modules; 
junction.exe $ModulePath\Trevor $ModulePath\Modules; 

Junctions

Вот что он выглядит, когда вы перейдете в одном из контактов, например, Foo.

Junction

Что касается Windows PowerShell, то, вы находитесь в Foo каталоге, которое совпадает с именем файла Foo.psm1. Он должен игнорировать остальные файлы в этой папке.

Теперь вы можете запустить Get-Module -ListAvailable, и вы должны увидеть список модулей в своем каталоге пользовательского модуля.

Get-Module -ListAvailable

4

Если вы просто хотите иметь .psm1 файл, вы можете импортировать его, давая путь к самому файлу, а не только имя модуля.

Например:

import-module c:\mymodules\folder\themodule.psm1 

С помощью этого метода вы можете иметь столько модулей, сколько вы хотите в той же папке. Я не знаю, что я рекомендую это, но он работает.

Смежные вопросы