首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >你能在Get-ADUser上使用-Filter来过滤掉空域吗?

你能在Get-ADUser上使用-Filter来过滤掉空域吗?
EN

Stack Overflow用户
提问于 2018-06-15 07:44:35
回答 2查看 4.1K关注 0票数 3

从Active Directory中获取数据并将其插入SQL表时,有没有一种方法可以过滤掉空字段?当我在Get-ADUser上使用-Filter时,我认为这不是正确的语法。

它不能说

无法将输入对象绑定到命令的任何参数,因为命令不接受管道输入,或者输入及其属性与接受管道输入的任何参数都不匹配

代码语言:javascript
复制
$ADARRAY = (Get-ADGroupMember -Identity "Domain Users" -Recursive |
           Get-ADUser -Filter {-not (Mail -like "*")} -Properties Mail)

foreach($OBJECT in $ADARRAY) {
    $NAME = $OBJECT.Name 
    $USER = $OBJECT.SamAccountName
    $EMAIL = $OBJECT.Mail

    $INSERT = "INSERT $TABLE VALUES ('$USER','$EMAIL', '$NAME')"
    $SQL.CommandText = $INSERT 

    $SQL.ExecuteNonQuery()
}

$SQLCON.Close()
EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2018-06-15 16:04:26

之所以会收到这个错误消息,是因为Get-ADUser可以使用参数从管道中读取输入,也可以使用参数。如果您查看documentation,您将看到cmdlet有3个参数集:

代码语言:javascript
复制
Get-ADUser
   [-AuthType <ADAuthType>]
   [-Credential <PSCredential>]
   -Filter <String>
   [-Properties <String[]>]
   [-ResultPageSize <Int32>]
   [-ResultSetSize <Int32>]
   [-SearchBase <String>]
   [-SearchScope <ADSearchScope>]
   [-Server <String>]
   [<CommonParameters>]
代码语言:javascript
复制
Get-ADUser
   [-AuthType <ADAuthType>]
   [-Credential <PSCredential>]
   [-Identity] <ADUser>
   [-Partition <String>]
   [-Properties <String[]>]
   [-Server <String>]
   [<CommonParameters>]
代码语言:javascript
复制
Get-ADUser
   [-AuthType <ADAuthType>]
   [-Credential <PSCredential>]
   -LDAPFilter <String>
   [-Properties <String[]>]
   [-ResultPageSize <Int32>]
   [-ResultSetSize <Int32>]
   [-SearchBase <String>]
   [-SearchScope <ADSearchScope>]
   [-Server <String>]
   [<CommonParameters>]

第二个参数用于从Get-ADGroupMember读取管道输入(通过参数-Identity),但是在指定参数-Filter时,强制使用第一个参数,第一个参数不接受管道输入。

此外,从您的代码判断,您实际上需要具有mail属性的user对象。

使用像这样的Where-Object过滤器,代码应该可以执行您想要的操作:

代码语言:javascript
复制
$ADARRAY = Get-ADGroupMember -Identity 'Domain Users' -Recursive |
           Get-ADUser -Properties Mail |
           Where-Object { $_.Mail -like '*' }

如果您确实想要没有mail属性的用户对象,请将条件$_.Mail -like '*'更改为$_.Mail -notlike '*'

票数 4
EN

Stack Overflow用户

发布于 2018-06-15 08:30:35

很接近,但是Filter接受一个过滤器字符串,而不是脚本块(试试Get-Help Get-ADUser)。

这应该会让你得到你需要的:

代码语言:javascript
复制
Get-ADUser -Filter "Mail -notlike '*'"

This page explains more on the filter syntax for AD.

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/50867371

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档