Powershell-根据描述查找名称

Powershell-根据描述查找名称,powershell,Powershell,我的代码: Get-ADUser -Filter {Name -eq "James Kent"} -Properties Description | where {$_.Description -Notlike "Services User"} | select Name 我尝试了上面的代码,它仍然显示这两个帐户。因此,我有两个帐户的用户。一个账户是普通账户,一个是服务账户。我只想显示常规帐户 您的代码看起来很好,对我来说,它适用于已更改的帐户变量。这意味着您应该检查帐户和服务用户。一步一步地

我的代码:

Get-ADUser -Filter {Name -eq "James Kent"} -Properties Description | where {$_.Description -Notlike "Services User"} | select Name

我尝试了上面的代码,它仍然显示这两个帐户。因此,我有两个帐户的用户。一个账户是普通账户,一个是服务账户。我只想显示常规帐户

您的代码看起来很好,对我来说,它适用于已更改的帐户变量。这意味着您应该检查帐户和服务用户。一步一步地分解管道,以验证工作是否正常

Get-ADUser -Filter {Name -eq "James Kent"} -Properties Description
这将输出这两个帐户及其作为标题的描述。根据您的错误,这部分工作正常,因此您可能甚至不需要检查它

但是,检查Description属性是否良好仍然是一件好事:

Get-ADUser -Filter {Name -eq "James Kent"} -Properties Description | select Description
如果这些元素与您编写的内容匹配,则将下一个元素添加到管道中:

Get-ADUser -Filter {Name -eq "James Kent"} -Properties Description | where {$_.Description -Notlike "Services User"}
对于这一部分,更重要的是查看它的输出。从你所说的,这将输出两个帐户,但这不是你想要的。最可能的情况是,服务用户与您的其他帐户的描述不完全相同。将其与上面的代码段的输出进行比较


我希望这有帮助,这只是经典的调试。您还可以使用DiscrimitedName属性之类的东西来比较这两个帐户,它可能比不是强制属性的描述更可靠。

也许您应该使用另一个开关。使用-not like,您应该使用-ne或-eq:

Get-ADUser -Filter {Name -eq "James Kent"} -Properties Description | where {$_.Description -ne "Services User"} | select Name
或:


当然,当您使用上述开关时,必须检查描述中的字符串。它必须等于where条件下的字符串。

兴趣。。。当我添加*服务时,它工作*

谢谢大家对这个问题的总结

Get-ADUser -Filter {Name -eq "James Kent"} -Properties Description | where {$_.Description -eq "regular account"} | select Name