Cmdlet 命名约定:用于破坏 and/or 从资源中删除的动词

Cmdlet naming convention: verbs for destroying and/or removing from a resource

This 问题询问对 "delete" 使用 new-Thing 创建的资源使用哪个动词。 Remove 是自然接受的动词,因此您有一个 remove-Thing cmdlet。

但是我们有几种情况 Thing 也是一个容器,我们可以向其中添加项目或从中删除项目。目前我们有

    Remove-Thing myThing                   # Destroys myThing
    Remove-ItemFromThing myThing myItem    # Removes myItem from myThing

这太可怕了。有没有更优雅的方式来做到这一点?

您可以通过 ScriptMethod 使用 Remove 方法扩展 Thing 容器的成员。所以你可以这样做:

$Thing.Item.Remove()

鉴于没有 Remove-MemberAdd-Memeber cmdlet 配对,这看起来是有效的方法。

我想到了几个想法。

首先是容器中的对象不能与容器同名。所以如果你的容器是 Thing 那么你有:

Remove-Thing  #destroys Thing

Thing 中的对象不应命名为 Thing。假设它们被命名为 Part。那么你会:

Remove-Part Thing Part # Removes Part from Thing

这将从事物容器中删除一个部件。

我想到的另一种方法是将一个方法附加到移除一个部分的事物。所以你会这样做:

Thing.RemovePart(Part)