powershell - 过滤多个值

标签 powershell active-directory

除了确保用户对象实际上具有员工编号并已启用之外,我还尝试使用特定的员工编号过滤掉几个员工。

还有更好的写法吗?并在用户仍在访问时使其真正发挥作用。

Get-ADUser -Filter {(employeeNumber -ne $false) -and (employeeNumber -ne 000614) 
    -and (employeeNumber -ne 000864) -and (employeeNumber -ne 001195) 
    -and (employeeNumber -ne 001200) -and (employeeNumber -ne 001201) 
    -and (employeeNumber -ne 000628) -and (employeeNumber -ne 000742) 
    -and (employeeNumber -ne 000041) -and (employeeNumber -ne 001225) 
    -and (employeeNumber -ne 001181) -and (employeeNumber -ne 001074)
    -and (employeeNumber -ne 001203) -and (employeeNumber -ne 001198)
    -and (employeeNumber -ne 001208) -and (employeeNumber -ne 001224)
    -and (employeeNumber -ne 001207) -and (employeeNumber -ne 001199)
    -and (employeeNumber -ne 001210) -and (employeeNumber -ne 001214)
    -and (employeeNumber -ne 001220) -and (employeeNumber -ne 001212)
    -and (employeeNumber -ne 001213) -and (employeeNumber -ne 001221)
    -and (employeeNumber -ne 000036) -and (employeeNumber -ne 000589) 
    -and (employeeNumber -ne 099998) -and (enabled -ne $false)}

最佳答案

Any better way to write this?

其实不然,过滤方法是正确的。您可以自动化的是从值数组构建过滤器字符串。我个人在这里使用LDAPFilter,构建过滤字符串更容易。

$toExclude = 000864, 001200, 000628, 000041, 001181, 001203 # etc, more values can be added here

$filter = -join @(
    '(&'                                                  # AND, all conditions must be met
        '(!userAccountControl:1.2.840.113556.1.4.803:=2)' # Enabled objects
        '(employeeNumber=*)'                              # employeeNumber is not null
        $toExclude | ForEach-Object {                     # employeeNumber is not equal to
            "(!employeeNumber=$_)"                        # any of the values in $toExclude
        }
    ')'                                                   # close AND
)

Get-ADUser -LDAPFilter $filter

关于powershell - 过滤多个值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/77413674/

相关文章:

arrays - 如何使用 PowerShell 将嵌套 JSON 哈希表的内容输出到 PSO?

powershell - 如何在 Powershell 中对目录和子目录中的所有文件运行 dos2unix

powershell - [Powershell] : 2nd Execution of Copy-Item creates subfolder (5. 1.17763.1007)

C# 使用 DirectoryEntry 启用用户帐户

.net - "Name"(System.DirectoryServices.AccountManagement) 中的 "IdentityType"是什么

powershell - 我将如何编写一个powershell脚本来ping AD,输出在线系统的TXT,然后使用该文件输出已安装软件的列表

Azure 策略计划定义 az cli 或 Powershell

powershell - 如何从命令行运行 Powershell 脚本并将目录作为参数传递

c# - 为什么 User.Invoke ("SetPassword") 使用我计算机的当前凭据以及我如何指定它们?

asp.net - VB.NET - 如何使用 Active Directory 将 SID 转换为组名称