【问题标题】:How to call an overloaded command in PowerShell如何在 PowerShell 中调用重载命令
【发布时间】:2017-12-29 23:17:27
【问题描述】:

我的 PowerShell 环境有两个 Expand-Archive 命令:

  • Windows 10 -> 来自 Microsoft.PowerShell.Archive (1.0.1.0) 的函数
  • PowerShell 社区扩展 -> 来自 Pscx (3.2.2) 的 CmdLet

我当前的环境默认为来自 Pscx 的 CmdLet:

PS> (Get-Command Expand-Archive).ModuleName
Pscx

是否有任何语法(完全限定名称)可以从另一个模块调用命令?
我不想卸载 Pscx。

【问题讨论】:

    标签: powershell zip pscx


    【解决方案1】:

    您始终可以使用完全限定的模块名称调用函数。

    在你的例子中:

    Microsoft.PowerShell.Archive\Expand-Archive -Path $Path -Destination $Dest
    

    认为当您不指定模块时,它会使用上次加载的任何内容

    【讨论】:

    • 您甚至可以将其别名为不那么麻烦的东西。
    • @EBGreen:你可以,但是你引入了另一个故障点。如果我怀疑我有一个被污染的环境,我会在脚本中完整路径所有内容(因为它只被编写一次)。有趣的事实:我有一些没有环境变量和改变内置模块的服务器。
    • 我也会在脚本中完整路径所有内容。我正在考虑按提示工作,这是我花费大量时间的地方。
    • @EBGreen 说得通。我大部分时间都在自动化部署/配置和编写脚本
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2022-01-22
    • 2020-11-17
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-12-24
    • 2016-12-12
    相关资源
    最近更新 更多