首页 > 解决方案 > PowerShell - 如何定位对象的属性和方法?(它们不在帮助文件中)

问题描述

我对以下代码有几个问题。

Get-DBAAgentJob -SqlInstance *instancename* | Where-Object { $_.HasSchedule -Match "False" }| Out-GridView
  1. 在 Where-Object 中,有 $ .HasSchedule。什么是“$ .HasSchedule”?我查看了 Where-Object 和在线的帮助,但我不明白那是什么。它是一个函数吗?
  2. 这个语法意味着/做什么 $_ ?
  3. 除了 .HasSchedule,我可以在 Where-Object 中过滤什么?另外,我在哪里可以找到如何解决这个问题?如果它不在帮助或在线书籍或谷歌搜索中,我不确定。我的谷歌搜索算法可能不足以让我进入球场。

我很好奇我可以在这行代码的 Where-Object 中过滤的所有内容。例如,如果我想查看未启用作业的位置,而不是有计划,是否有 .NotEnabled?

谢谢您的帮助。

标签: powershell

解决方案


Where-Object子句是一种过滤从某个属性的 cmdlet 返回的对象的方法。在您的示例中,它正在过滤HasSchedule属性上的对象。该示例的过滤器表示此属性必须为 False,以便对象通过管道通过管道传输,下一个 cmdlet 将它们作为输入。

它使用$_ Automatic 变量测试对象,该变量按顺序表示从Get-DbaAgentJobcmdlet 传入的每个对象。

通常,要了解对象的外观,您只需在 Google 上搜索即可。
在这种情况下,如果您查找Get-DBAAgentJob,您将找到此页面,您可以在其中查看函数本身。在这里您可以找到每个返回的对象具有哪些属性:

ComputerName, InstanceName, SqlInstance, Name, Category, OwnerLoginName, IsEnabled, LastRunDate, DateCreated, HasSchedule, OperatorToEmail.

如您所见,有一个属性IsEnabled,因此您可以过滤 Not enabled with

Where-Object { -not $_.IsEnabled }

请参阅:PowerShell 逻辑运算符

如果您单击dbatools的主页,您会看到一个名为docs的部分,您可以在其中了解更多信息。

在 PowerShell 上浏览免费电子书

希望有帮助


推荐阅读