首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何从powershell中的Get-ADuser cmdlet输出中排除多个用户?

如何从powershell中的Get-ADuser cmdlet输出中排除多个用户?
EN

Stack Overflow用户
提问于 2019-06-28 23:17:35
回答 1查看 294关注 0票数 0

我正在尝试为外部访客登记系统导出特定办公室中所有用户的列表。除了一些用户(大约20人左右)不会被添加到公共目录,我需要他们从输出中排除。

这是我目前所掌握的.

代码语言:javascript
复制
    Get-ADUser -Filter {City -eq "Dallas"} -Properties GivenName, Surname, EmailAddress, Name |
        Select GivenName, Surname, EmailAddress, Name | 
        Sort-Object -Property GivenName | 
        Export-Csv $env:USERPROFILE\Desktop\ADusers.csv -NoTypeInformation -Force

例如,我希望避免过长的过滤器行。

代码语言:javascript
复制
-filer {(name -ne "name 1")(name -ne "name 2")...} etc 

理想情况下,我希望创建一个列出指定用户的变量。这样我以后就可以很容易地修改了。

代码语言:javascript
复制
    $excluded = "Name 1","Name 2","Name 3","Name 4"

结果与预期一致(需要排除的用户除外)...

任何帮助都是非常感谢的!

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2019-06-28 23:40:17

假设没有自定义属性或其他方法来标识这些用户/在ActiveDirectory中将它们分开,那么您可以做的一件事就是从您的姓名数组构建过滤器字符串

代码语言:javascript
复制
$excluded = "Name 1","Name 2","Name 3","Name 4"
$namefilter = ($excluded | ForEach-Object{"name -ne '$_'"}) -join " -and " 
$cityfilter = "City -eq 'Dallas'"
Get-ADUser -Filter ($cityfilter, $namefilter -join " -and ") -Properties GivenName, Surname, EmailAddress, Name

所以过滤器实际上是这样的:

代码语言:javascript
复制
City -eq 'Dallas' -and name -ne 'Name 1' -and name -ne 'Name 2' -and name -ne 'Name 3' -and name -ne 'Name 4'

这可能看起来很复杂,但$cityfilter, $namefilter -join " -and "允许在不更改代码的情况下丢失其中一个过滤器。因此,如果$excluded最终为空,代码仍然会成功。您可以很容易地简化这一点,但这是我想要减轻的事情。

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

https://stackoverflow.com/questions/56809423

复制
相关文章

相似问题

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