gpt4 book ai didi

powershell - 如何在 Powershell 类中抑制 "Unapproved verbs"

转载 作者:行者123 更新时间:2023-12-03 01:25:28 26 4
gpt4 key购买 nike

为了在 powershell (V7) 脚本中使用类,似乎有必要声明模块,在其中实现类(Powershell 语言),通过

using module .\MyModule.psm1
模块“MyModule.psm1”通过
Import-Module powershell-yaml -DisableNameChecking
如何在脚本执行期间抑制“未经批准的动词”警告? DisableNameChecking 选项在这里似乎没有帮助
模块的完整示例
 Import-Module powershell-yaml -DisableNameChecking

class TestManager {
hidden [string] $NodeTypeApplication = "Application"

TestManager () {
}

[void] StartDeployment()
{
Write-Host("starting deployment...")

}

}

最佳答案

当你使用 -DisableNameChecking导入嵌套模块(powershell-yaml),如果嵌套模块中的非标准函数成为封闭模块导出的一部分,则警告可能会重新出现在封闭模块中 .
你有两个选择:

  • 如果确实需要导出(嵌套)非标准函数 从您的封闭模块:
  • 使封闭模块的警告静音的唯一方法也是将其导入Import-Module -DisableNameChecking同样,而不是通过using module .
  • 警告 : 不幸的是,这个 禁止使用在您的模块中定义的 PowerShell 自定义类 ;从 v7.0 开始,自定义类只有在您使用 using module 时才会对导入器可见。 (参见 GitHub issue #2449 了解背景信息)。
  • 要解决这个问题:
  • 为您需要导出的那些非标准函数定义包装函数,并为它们提供符合标准的名称。
  • 然后从模块的导出中排除非标准函数 - 请参阅下一点。


  • 否则,从导出 中排除非标准函数, 你可以在
    以下方式之一:
  • 如果您在封闭模块本身中实际上不需要它们,请通过仅将您确实需要的函数的名称传递给 Import-Module 将它们从导入中排除。的-Function范围。
  • 否则,您可以显式控制封闭模块导出的内容:
  • 您可以使用 Export-ModuleMember 调用您的封闭模块。
  • 或者/另外,如果您使封闭模块使用 module manifest,则可以限制导出的功能。 (*.psd1 文件)。



  • 这是原始问题的简单演示:
    # Create a temp. nested module with a nonstandard function.
    'function UnapprovedVerb-Foo { ''unapproved foo'' }' > tmp_nested.psm1

    # Create the enclosing module that imports the nested module
    # with warnings suppressed.
    # However, because the enclosing module has no manifest, the nested
    # functions are exported alongside its own functions.
    'Import-Module $PSScriptRoot/tmp_nested.psm1 -DisableNameChecking; function Get-Foo { ''foo'' }' > tmp_enclosing.psm1

    # This now triggers the warning - as import via `using module` would.
    # Adding -DisableNameChecking would silence it, but `using module` has
    # no equivalent mechanism - and you need the latter to import *custom PS classes*.
    Import-Module ./tmp_enclosing.psm1

    关于powershell - 如何在 Powershell 类中抑制 "Unapproved verbs",我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/63561771/

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