我在非標準路徑下有一個模塊(MyModule),即不在$env:PSModulePath -split ";"
中列出的通常位置下。但是,我已將「生產」路徑添加到該環境變量MyModule,同時繼續處理「開發」副本。導入模塊詳細輸出意味着模塊被加載兩次
雖然試圖調試的東西,我裝使用下面的命令模塊(帶$VerbosePreference = "Continue"
),並立即看到詳細輸出的兩個看似矛盾的臺詞:
[D:\Dev\UserA\]> Import-Module D:\Dev\UserA\libs\PowerShell\MyModule
VERBOSE: Loading module from path 'D:\Dev\UserA\libs\PowerShell\MyModule\MyModule.psd1'.
VERBOSE: Loading module from path 'D:\Dev\usera\MyModule2\MyModule.psm1'.
我想明白爲什麼導入模塊出現要加載模塊兩次,尤其是當第二個路徑不正確時。
更詳細地:
用於模塊的文件夾結構是:
MyModule\MyModule.psd1
MyModule\MyModule.Test-Module.xml
MyModule\MyModule1\MyModule.psm1
MyModule\MyModule2\MyModule.psm1
注(1)I在一個MyModule1子文件夾下保持該模塊的舊 「版本1」並將我更新後的「版本2」文件放入MyModule2子文件夾中,以及(2)自定義模塊測試腳本使用.xml文件列出測試用例。我很確定後者可以被忽略。
我的模塊清單(的.psd1)文件包含以下,與所有其他行是空白或註解:
@{
RootModule = '.\MyModule2\MyModule.psm1'
ModuleVersion = '2.0.0.0'
GUID = 'aaaaaaaa-bbbb-cccc-dddd-eeeeeeeeeeee'
Author = 'Old Developer (v1.x) & New Developer (v2.x)'
CompanyName = 'MyCompany'
Copyright = '(c) 2013-2015 MyCompany. All rights reserved.'
Description = 'Really useful functions'
FileList = @(
'.\MyModule.psd1'
'.\MyModule.Test-Module.xml'
'.\MyModule1\MyModule.psm1'
'.\MyModule2\MyModule.psm1'
'.\MyModule2\Examples\Archive-FilesWithCompression.ps1'
)
}
的文件顯然我已經使用相對路徑,ESP。 RootModule key;這是必要的,因爲我無法確定模塊在分享時將被複制到何處。回到Verbose輸出,我可以看到兩行顯示(1)PSD1文件的正確路徑和(2)PSM1文件的無效路徑。我確實注意到第二條路徑的用戶名是小寫的,這正是我在測試之前碰巧輸入的名稱。因此,看起來第一個路徑是通過將MyModule.psd1附加到給定的Import-Module
cmdlet的路徑來實現的,第二個路徑是(Get-Location)和RootModule路徑的串聯。
這似乎只發生在這個模塊。我沒有出現這種行爲的同一個「根」文件夾下的其他人。