什么是PowerShell"搜索"动词?

Tan*_*ett 13 powershell

MSDN页面" Windows PowerShell命令的批准动词 "说:

查找动词用来寻找的对象.该搜索动词用于创建一个容器到资源的引用.

"创建对容器中资源的引用"是什么意思?这是否意味着为现有资源定义新名称?这是否意味着获取有关资源的一些信息并将该信息转换为参考?或者它意味着什么呢?

有关如何使用"搜索"动词的示例是什么?这个动作与搜索有什么关系?

mkl*_*nt0 5

tl; dr

  • 之间的区别SearchFind不明确的 PowerShell中的境界。

  • 现有的Microsoft起源的模块反映了这种混乱,其中任意一个 Find-* Search-* cmdlet随即出现,但不是两者都随。

  • 要解决此问题,请要求Microsoft进行澄清,这可能会导致以下任一情况:

    • 之间的有益的区分SearchFind需要将要解释的,然后可以引导未来实现。
    • 或将一个动词声明为另一个动词的(旧式)同义词,并建议只使用一个动词。

人类语言是模棱两可的,这始终与PowerShell值得称赞的对一致性的追求不一致,如Windows PowerShell Commands的批准动词中所述

遗憾的是,该文档本身包含许多含义不清的术语(截至撰写本文时),这些术语含糊地互换使用,例如resourceobjectitemtargetreference

具有讽刺意味的是,该文件告诫:

若要在cmdlet之间实现一致性,请不要使用批准的动词的同义词。

可以说,在英语中,findsearch是ARE同义词,只有对结果的确定程度可以将它们区分开:搜索find更开放:您可能没有结果就进行搜索,但是find表示肯定的结果。

在命名cmdlet时,这种区别值得吗?

可以说不是,这反映在现实的Microsoft实现中(例如Active Directory,Exchange和PowerShellGet模块),选择一个术语排除另一个术语

再次具有讽刺意味的是,该文档似乎颠倒findsearch之间的人类语言关系:

  • Find

    在未知,隐含,可选或指定的容器中查找对象。

  • Search

    创建对容器中资源的引用。

除了对象容器(以及上下文中的引用)之间的歧义,Find这里的定义听起来比Search对人类语言(英语)的反对更开放。


felixfbecker对于and cmdlet 的名词部分遵守以下规定:Search-*Find-*

我认为另一个区别是in中的名词Search-Noun描述了要搜索的内容,而in Find-Noun中的名词描述了要搜索的内容。因此,例如,cmdlet Search-Wikipedia有道理,而Find-Wikipedia没有。另一方面,Find-WikipediaArticle和和Search-Wikipedia-Article两者都有意义,但含义不同。


bri*_*ist 1

Search-我所知道的唯一例子是Search-ADAccount,它确实对我们没有任何好处,使这变得不那么模糊。Get-ADUser它返回与//相同类型的对象,并且它具有 cmdlet 中不可用的搜索条件,即使这些条件也支持过滤和“搜索” Get-ADComputerGet-ADObjectGet-