PowerShell 模块未正确公开命令
PowerShell module not exposing commands properly
自从我重新搭建我的 PowerShell 模块后,我遇到了一个奇怪的问题。
cfsdevops.psm1 非常简单,只需自动导入 /private
和 /public
.
中的所有 .ps1 文件
#Get public and private function definition files.
$Public = @( Get-ChildItem -Path $PSScriptRoot\Public\*.ps1 -ErrorAction SilentlyContinue )
$Private = @( Get-ChildItem -Path $PSScriptRoot\Private\*.ps1 -ErrorAction SilentlyContinue )
#Dot source the files
Foreach($import in @($Public + $Private))
{
Try
{
. $import.fullname
}
Catch
{
Write-Error -Message "Failed to import function $($import.fullname): $_"
}
}
Export-ModuleMember -Function $Public.Basename
一旦我将所有文件发布到我的模块路径目录并尝试执行 运行 个命令,我收到一条错误消息,指示它不是有效命令:
PS C:\> get-podconfig
get-podconfig : The term 'get-podconfig' is not recognized as the name of a cmdlet, function, script file, or operable
program. Check the spelling of the name, or if a path was included, verify that the path is correct and try again.
At line:1 char:1
+ get-podconfig
+ ~~~~~~~~~~~~~
+ CategoryInfo : ObjectNotFound: (get-podconfig:String) [], CommandNotFoundException
+ FullyQualifiedErrorId : CommandNotFoundException
然而,当我 运行 "Get-Command -Module cfsdevops" 它列出了所有可用的命令,并且在该会话中工作正常。
PS C:\> Get-Command -Module cfsdevops
CommandType Name Version Source
----------- ---- ------- ------
Function add-deploymanifest 4.1.0 cfsdevops
Function add-podconfig 4.1.0 cfsdevops
Function add-tenant 4.1.0 cfsdevops
Function gen-podconfig 4.1.0 cfsdevops
Function get-aobcredential 4.1.0 cfsdevops
Function get-podconfig 4.1.0 cfsdevops
Function get-servertraffic 4.1.0 cfsdevops
Function new-deploymanifest 4.1.0 cfsdevops
Function publish-octopus 4.1.0 cfsdevops
Function publish-webconfig 4.1.0 cfsdevops
Function set-aobcredential 4.1.0 cfsdevops
Function set-octopusapikey 4.1.0 cfsdevops
你的Get-Command -Module cfsdevops
没有显示get-podconfig
,而是gen-podconfig
。因此,错误消息完全有道理。
检查脚本文件名和您的 PowerShell 模块清单(psd1-文件)是否有拼写错误。
自从我重新搭建我的 PowerShell 模块后,我遇到了一个奇怪的问题。
cfsdevops.psm1 非常简单,只需自动导入 /private
和 /public
.
#Get public and private function definition files.
$Public = @( Get-ChildItem -Path $PSScriptRoot\Public\*.ps1 -ErrorAction SilentlyContinue )
$Private = @( Get-ChildItem -Path $PSScriptRoot\Private\*.ps1 -ErrorAction SilentlyContinue )
#Dot source the files
Foreach($import in @($Public + $Private))
{
Try
{
. $import.fullname
}
Catch
{
Write-Error -Message "Failed to import function $($import.fullname): $_"
}
}
Export-ModuleMember -Function $Public.Basename
一旦我将所有文件发布到我的模块路径目录并尝试执行 运行 个命令,我收到一条错误消息,指示它不是有效命令:
PS C:\> get-podconfig
get-podconfig : The term 'get-podconfig' is not recognized as the name of a cmdlet, function, script file, or operable
program. Check the spelling of the name, or if a path was included, verify that the path is correct and try again.
At line:1 char:1
+ get-podconfig
+ ~~~~~~~~~~~~~
+ CategoryInfo : ObjectNotFound: (get-podconfig:String) [], CommandNotFoundException
+ FullyQualifiedErrorId : CommandNotFoundException
然而,当我 运行 "Get-Command -Module cfsdevops" 它列出了所有可用的命令,并且在该会话中工作正常。
PS C:\> Get-Command -Module cfsdevops
CommandType Name Version Source
----------- ---- ------- ------
Function add-deploymanifest 4.1.0 cfsdevops
Function add-podconfig 4.1.0 cfsdevops
Function add-tenant 4.1.0 cfsdevops
Function gen-podconfig 4.1.0 cfsdevops
Function get-aobcredential 4.1.0 cfsdevops
Function get-podconfig 4.1.0 cfsdevops
Function get-servertraffic 4.1.0 cfsdevops
Function new-deploymanifest 4.1.0 cfsdevops
Function publish-octopus 4.1.0 cfsdevops
Function publish-webconfig 4.1.0 cfsdevops
Function set-aobcredential 4.1.0 cfsdevops
Function set-octopusapikey 4.1.0 cfsdevops
你的Get-Command -Module cfsdevops
没有显示get-podconfig
,而是gen-podconfig
。因此,错误消息完全有道理。
检查脚本文件名和您的 PowerShell 模块清单(psd1-文件)是否有拼写错误。