使用模块和路径
Using Module and path
我 运行 遇到加载 PSM1 文件的一些问题。 PSM1 始终与 PS1 位于同一文件夹中,但该文件夹可以更改。如果我使用这样的文字路径,它会起作用...
Using module '\Mac\iCloud Drive\Px Tools 4.#\Dev 4.0\#Spikes\Windows7\library.psm1'
但这没用,因为代码可以安装在任何地方。并且代码已经签名,所以不能更改。
使用新的(在PS3.0)$PSScriptRoot
自动变量也不起作用...
Using module "$PSScriptRoot\library.psm1"
相对路径或简单文件名也不行,如...
Using module ".\library.psm1"
或...
Using module "library.psm1"
我错过了什么,也许是时候收工了?
此外,请注意该库包含 类,因此 Import-Module
等其他模块加载选项不起作用。这让我想知道是否 类 在更高版本中得到更好的支持,我真的应该瞄准 PS 6.0,而不是 5.1?
你应该先运行导入模块。
在 PS1 中,我添加了调用导入模块的代码
像这样:
ForEach($_ in Get-ChildItem "$env:TEMP\*.psm1") {
$checkModuleName = $_.Name -replace ".psm1"
$importModule = $_.Name
if (Get-Module $checkModuleName) {
Write-Host "Update Module $importModule" -ForegroundColor Green
Remove-Module $checkModuleName
Import-Module "$env:TEMP$importModule"
}
else {
Write-Host "Import Module $importModule" -ForegroundColor Green
Import-Module "$env:TEMP$importModule"
}
}
导入完成后,我可以使用所有模块。
为了寻找有关您的问题的更多信息,我解决了这个 blog post。它说相对路径有效,那么您是否尝试过使用带单引号或不带引号的相对路径?
由于双引号内的值 get evaluated 在将它们传递给 cmdlet 之前,使用它们可能不起作用。
我 运行 遇到加载 PSM1 文件的一些问题。 PSM1 始终与 PS1 位于同一文件夹中,但该文件夹可以更改。如果我使用这样的文字路径,它会起作用...
Using module '\Mac\iCloud Drive\Px Tools 4.#\Dev 4.0\#Spikes\Windows7\library.psm1'
但这没用,因为代码可以安装在任何地方。并且代码已经签名,所以不能更改。
使用新的(在PS3.0)$PSScriptRoot
自动变量也不起作用...
Using module "$PSScriptRoot\library.psm1"
相对路径或简单文件名也不行,如...
Using module ".\library.psm1"
或...
Using module "library.psm1"
我错过了什么,也许是时候收工了?
此外,请注意该库包含 类,因此 Import-Module
等其他模块加载选项不起作用。这让我想知道是否 类 在更高版本中得到更好的支持,我真的应该瞄准 PS 6.0,而不是 5.1?
你应该先运行导入模块。 在 PS1 中,我添加了调用导入模块的代码 像这样:
ForEach($_ in Get-ChildItem "$env:TEMP\*.psm1") {
$checkModuleName = $_.Name -replace ".psm1"
$importModule = $_.Name
if (Get-Module $checkModuleName) {
Write-Host "Update Module $importModule" -ForegroundColor Green
Remove-Module $checkModuleName
Import-Module "$env:TEMP$importModule"
}
else {
Write-Host "Import Module $importModule" -ForegroundColor Green
Import-Module "$env:TEMP$importModule"
}
}
导入完成后,我可以使用所有模块。
为了寻找有关您的问题的更多信息,我解决了这个 blog post。它说相对路径有效,那么您是否尝试过使用带单引号或不带引号的相对路径?
由于双引号内的值 get evaluated 在将它们传递给 cmdlet 之前,使用它们可能不起作用。