MSDN页面" Windows PowerShell命令的批准动词 "说:
在查找动词用来寻找的对象.该搜索动词用于创建一个容器到资源的引用.
"创建对容器中资源的引用"是什么意思?这是否意味着为现有资源定义新名称?这是否意味着获取有关资源的一些信息并将该信息转换为参考?或者它意味着什么呢?
有关如何使用"搜索"动词的示例是什么?这个动作与搜索有什么关系?
tl; dr
该之间的区别Search和Find是不明确的 PowerShell中的境界。
现有的Microsoft起源的模块反映了这种混乱,其中任意一个 Find-* 或 Search-* cmdlet随即出现,但不是两者都随。
要解决此问题,请要求Microsoft进行澄清,这可能会导致以下任一情况:
Search和Find需要将要解释的,然后可以引导未来实现。人类语言是模棱两可的,这始终与PowerShell值得称赞的对一致性的追求不一致,如Windows PowerShell Commands的批准动词中所述。
遗憾的是,该文档本身包含许多含义不清的术语(截至撰写本文时),这些术语含糊地互换使用,例如resource,object,item,target和reference。
具有讽刺意味的是,该文件告诫:
若要在cmdlet之间实现一致性,请不要使用批准的动词的同义词。
可以说,在英语中,find和search是ARE同义词,只有对结果的确定程度可以将它们区分开:搜索比find更开放:您可能没有结果就进行搜索,但是find表示肯定的结果。
在命名cmdlet时,这种区别值得吗?
可以说不是,这反映在现实的Microsoft实现中(例如Active Directory,Exchange和PowerShellGet模块),选择一个术语排除另一个术语。
再次具有讽刺意味的是,该文档似乎颠倒了find和search之间的人类语言关系:
Find
在未知,隐含,可选或指定的容器中查找对象。
Search
创建对容器中资源的引用。
除了对象与容器(以及上下文中的引用)之间的歧义,Find这里的定义听起来比Search对人类语言(英语)的反对更开放。
felixfbecker对于and cmdlet 的名词部分遵守以下规定:Search-*Find-*
我认为另一个区别是in中的名词
Search-Noun描述了要搜索的内容,而inFind-Noun中的名词描述了要搜索的内容。因此,例如,cmdletSearch-Wikipedia有道理,而Find-Wikipedia没有。另一方面,Find-WikipediaArticle和和Search-Wikipedia-Article两者都有意义,但含义不同。
Search-我所知道的唯一例子是Search-ADAccount,它确实对我们没有任何好处,使这变得不那么模糊。Get-ADUser它返回与//相同类型的对象,并且它具有 cmdlet 中不可用的搜索条件,即使这些条件也支持过滤和“搜索” Get-ADComputer。Get-ADObjectGet-
| 归档时间: |
|
| 查看次数: |
899 次 |
| 最近记录: |