【问题标题】:implement 'Group' cmdlet using .net cmdlets使用 .net cmdlet 实现“组”cmdlet
【发布时间】:2016-01-17 16:17:39
【问题描述】:

我想将Group-Object cmdlet 隐藏在自定义的后面,这样用户就不会知道 cmdlet 返回的对象类型。所以当我这样做时:

$(Get-A;Get-B) | Group Result

其中“结果”是 Get-AGet-B 输出到管道的对象类型,是我想要组合在一起的对象。

我在 .NET 中使用 powershell cmdlet 来创建自定义 cmdlet。

可以这样调用吗? :

$(Get-A;Get-B) | Get-Combine

Get-Combine 与 Group 做的事情在哪里完全相同?

【问题讨论】:

  • 作用域内的同名函数已经胜过 cmdlet。做一个试试看。
  • 看起来像是对我的回答。

标签: .net powershell c#-4.0 cmdlets


【解决方案1】:

我认为您可以使用代理功能来做到这一点。

您可以找到Shay LevyDon Jones 撰写的有关这些函数的文章。

【讨论】:

    【解决方案2】:

    作为JPBlanc mentions,您可以通过扩展现有 cmdlet 的功能来使用代理功能。但是我觉得你要找的东西更简单。如果您想替换 cmdlet 的功能,我能想到的最简单的方法就是使用相同的名称。

    TechNet 文章 about_Command_Preferences 介绍了它的工作原理。

    如果不指定路径,Windows PowerShell 将使用以下 运行命令时的优先顺序:

    1. 别名
    2. 功能
    3. Cmdlet
    4. 本机 Windows 命令

    因此,您应该只需要使用相同的名称创建您自己的函数,因为它出现在 cmdlet 之前的列表中,然后就可以完成了。

    PS C:\Users\mcameron> function Get-ChildItem{"uh uh uh… I thought of that one, too, Better try again"}
    
    PS C:\Users\mcameron> gci
    uh uh uh… I thought of that one, too, Better try again
    

    【讨论】:

    • 再试一次:Microsoft.PowerShell.Management\Get-ChildItem :D(即它作为安全措施没有用,但足够方便;我猜这就是 OP 所追求的)。
    • @Joey 没错。我认为这是一种简单的衡量标准,而不是通过默默无闻的安全性。
    猜你喜欢
    • 2021-01-15
    • 2017-09-17
    • 2017-11-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-02-11
    • 1970-01-01
    • 2013-03-16
    相关资源
    最近更新 更多