0

簡単な例で説明しましょう。

# TestModule.psm1 content 
# which is D:\Projects\(...)\MyProject\\bin\Debug\Modules directory :
function TestMe
{
 Write-Output "TestMe is called!"
}


# SetUpTools.psm1 content 
# which is D:\Projects\(...)\MyProject\\bin\Debug directory :
function Import-AllModulesInside ([string]$path = $(throw "You must specify a path where to import the contents"))
{

    if ( $(Test-Path $path)-eq $false){
        throw "The path to use for importing modules is not valid: $path"}


        # Import all modules in the specified path
        dir ($path | where {!$_.PsIsContainer} )| %{
        $moduleName = $($path + "\" + $_.name)

        import-module "$moduleName"
        Write-Output "importing $moduleName"

        }
}


#MainScript.ps1 content which is D:\Projects\(...)\MyProject\\bin\Debug directory :

# Config values are loaded in the begining
# (......)

# Import SetUpTools.psm1:

 Import-Module SetUpTools.psm1 


# Gets the modules directory's full path which I have loaded before..
$modulesPath = $(Get-ScriptDirectory) + $appSettings["ModulesFullPath"]


Write-Output ($modulesPath) # which writes : D:\Projects\(...)\MyProject\\bin\Debug\Modules

Import-AllModulesInside $modulesPath #Calls the method in SetUpTools.psm1

# I expect TestModule function to be available now:

TestMe  # But PowerShell does not recognize this function as I have not imported it in the main script.

しかし、メイン スクリプトから Import-AllModulesInside 関数を削除すると、TestMe を呼び出すことができます。

関数 Import-AllModulesInside をセットアップ ツールの一部にしたいと考えています。

質問: インポートされたモジュールによってインポートされたインポート モジュールを、メイン スクリプトで評価できるようにするにはどうすればよいですか?

4

1 に答える 1

1

import-module-scopeglobalがトリックを実行する必要があります:)

PS V2の場合、ilはimport-module -global(http://msdn.microsoft.com/en-us/library/windows/desktop/dd819454.aspx)になります。

于 2012-12-05T11:37:30.643 に答える