什么是PowerShell“搜索”动词?

时间:2016-08-26 19:22:32

标签: powershell

MSDN网页“Approved Verbs for Windows PowerShell Commands”说:

  

查找动词用于查找对象。 搜索动词用于创建对容器中资源的引用。

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

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

4 个答案:

答案 0 :(得分:4)

<强> TL;博士

  • PowerShell领域中SearchFind之间的区别定义错误

  • 现有的,由微软发起的模块反映了这种混乱,任意随 <{em> Find-* {{1 } cmdlet,但不是两者

  • 要解决此问题,请向Microsoft要求澄清,这可能会导致:

    • 需要解释Search-*Search之间的有用区别,然后可以指导未来的实施。
    • 声明另一个动词(遗留)同义词,并建议仅使用一个

人类语言含糊不清,与Approved Verbs for Windows PowerShell Commands中记载的PowerShell对一致性的值得赞扬的追求相去甚远。

令人遗憾的是,该文档本身包含许多不明确的术语(截至本文撰写时),模糊地互换使用,例如 resource object item < / em>, target reference

有点讽刺的是,该文件告诫:

  

要在cmdlet之间强制实施一致性,请不要使用已批准动词的同义词。

可以说,在英语中找到搜索 ARE同义词,只有结果的确定度区分它们: 搜索 find 更开放:你可以搜索没有结果,但找到意味着积极的结果。

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

可以说 ,这反映在实际的Microsoft实施中 - 例如Active Directory,Exchange和PowerShellGet模块 - 选择一个术语排除其他

再次,有点讽刺的是,所述文件似乎逆转 find search 之间的人与人之间的关系:

  • Find

      

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

  • Find

      

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

不考虑对象容器(以及引用在此上下文中)的模糊性,它是{{1这里的定义听起来比Search更开放 - 与人类语言(英语)相对立。

felixfbecker针对FindSearch cmdlet的名词部分进行了以下观察:

  

我认为另一个区别是Search-*中的名词描述被搜索的内容Find-*中的名词描述正在搜索的内容 。因此,例如,cmdlet Search-Noun是有意义的,而Find-Noun则不然。另一方面,Search-WikipediaFind-Wikipedia都有意义,但意味着不同的事情。

答案 1 :(得分:1)

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

答案 2 :(得分:0)

一般来说,Get命令用于检索信息以便进一步处理,而Search命令用于更容易理清未知数。

如果我正在编写脚本,我可能希望使用Get-AdUser命令来获取信息,但是如果我不具备特定参数或管道和按属性排序的能力,我可能发现使用常见的制表符完成变量的另一个命令行开关更容易。

Get-ADUser -Filter * -Properties LastLogonDate | ? {$_.LastLogonDate -lt (Get-Date).AddMonths(-3)}

是一个很长的命令,让那些没有登录3个月的人,但是..

Search-ADAccount -AccountInactive

做类似的工作,输入少得多,如果我只是将名称用于Csv,它们在功能上是相同的。

很明显,powershell的设计者期望Search命令被用作普通Get命令的速记版本,但它并没有真正流行,可能是因为像你我这样的普通人实际上有这些命令关于为什么有人会使用一个而不是另一个的问题。

答案 3 :(得分:0)

答案在你的问题中。

查找用于查找对象。但是,当涉及到诸如组,计算机,帐户之类的东西时。这些被称为“资源”。我们知道资源总是包含在容器中。因为它们不作为Active Directory中的对象存在。

由于我们已经定义了“查找”以查找对象,我们需要另一个动词,因此我们可以在“容器”内“搜索”“资源”。

以下是search-adaccount:

的说明

搜索-ADAccount 获取Active Directory用户,计算机或服务帐户。