gpt4 book ai didi

powershell - 来自自定义模块的命令行开关未被识别

转载 作者:行者123 更新时间:2023-12-05 03:19:40 26 4
gpt4 key购买 nike

过去几天我一直在研究一个自定义的 Powershell 模块,我现在正尝试将它作为一个始终自动加载的模块集成到 powershell 中。

我的模块位于 C:\Users\...\Documents\PowerShell\Modules 下,这是 Powershell 期望模块的位置之一。这是模块的结构:

C:\Users\...\Documents\PowerShell\Modules\MetaData-System\MetaData-System.psm1
C:\Users\...\Documents\PowerShell\Modules\MetaData-System\MetaData-System.psd1

MetaData-System.psd1 文件内容为:

@{

ModuleVersion = '0.0.1'

GUID = '9e976eac-1010-4e0b-95e4-76c8bfc1ece1'

Author = '...'

CompanyName = 'Unknown'

Copyright = '(c) .... All rights reserved.'

FunctionsToExport = @( 'Set-Metadata', 'Clear-Metadata')

CmdletsToExport = @()

VariablesToExport = '*'

AliasesToExport = @()

PrivateData = @{

    PSData = @{

    }

}

}

MetaData-System.psm1 文件内容由两个函数组成,分别是Set-MetaDataClear-MetaData。在终端运行 Get-Module -ListAvailable 列出:

Directory: C:\Users\...\Documents\PowerShell\Modules  

ModuleType Version PreRelease Name PSEdition ExportedCommands
---------- ------- ---------- ---- --------- ----------------
Manifest 0.0.1 MetaData-System ... {Set-Metadata, Clear-Metadata}

但是,当我尝试通过键入“Set-Met”来使用模块中的功能之一时,不会发生自动完成,也不会建议任何参数。如果我把它全部写下来,例如:

Set-Metadata -path "C:\Users\...\Documents\test.txt"-Flags "Hello World

我收到这个错误:

Set-Metadata: The term 'Set-Metadata' is not recognized as a name of a cmdlet, function, script file, or executable program.  
Check the spelling of the name, or if a path was included, verify that the path is correct and try again.

我到处搜索看看我做错了什么现在没主意了。

我也冒昧地在其他论坛上交叉发布了这个问题。

如有任何帮助,我们将不胜感激!

编辑:按照@Abraham Zinala 的建议,我尝试了 Get-Module:

ModuleType Version    PreRelease Name                                ExportedCommands
---------- ------- ---------- ---- ----------------
Manifest 0.0.1 MetaData-System
Manifest 7.0.0.0 Microsoft.PowerShell.Management {Add-Content, Clear-Content, Clear-Item, Clear-ItemProperty…}
Manifest 7.0.0.0 Microsoft.PowerShell.Utility {Add-Member, Add-Type, Clear-Variable, Compare-Object…}
Script 2.1.0 PSReadLine {Get-PSReadLineKeyHandler, Get-PSReadLineOption, Remove-PSReadLineKeyHandler, Set-PSReadLineKeyHandler…}

MetaData-System 模块没有命令。

最佳答案

你的 module manifest缺少以下条目:

RootModule = 'MetaData-System.psm1'

这是发现执行脚本模块文件 (*.psm1) 所必需的。

在没有它的情况下,只有 manifest 文件 (.psd1) 被发现,以及导出的实现命令实际上丢失了。

您的样本证明了这一点 Get-Module输出将 ModuleType 列为 Manifest 而不是 Script

关于powershell - 来自自定义模块的命令行开关未被识别,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/73405626/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com