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-Member
与 Add-Memeber
cmdlet 配对,这看起来是有效的方法。
我想到了几个想法。
首先是容器中的对象不能与容器同名。所以如果你的容器是 Thing 那么你有:
Remove-Thing #destroys Thing
Thing 中的对象不应命名为 Thing。假设它们被命名为 Part。那么你会:
Remove-Part Thing Part # Removes Part from Thing
这将从事物容器中删除一个部件。
我想到的另一种方法是将一个方法附加到移除一个部分的事物。所以你会这样做:
Thing.RemovePart(Part)
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-Member
与 Add-Memeber
cmdlet 配对,这看起来是有效的方法。
我想到了几个想法。
首先是容器中的对象不能与容器同名。所以如果你的容器是 Thing 那么你有:
Remove-Thing #destroys Thing
Thing 中的对象不应命名为 Thing。假设它们被命名为 Part。那么你会:
Remove-Part Thing Part # Removes Part from Thing
这将从事物容器中删除一个部件。
我想到的另一种方法是将一个方法附加到移除一个部分的事物。所以你会这样做:
Thing.RemovePart(Part)