涉及AD用户和luhn算法的Powershell脚本

Powershell script involving AD users and luhn algorithm

我是 Powershell 新手,需要有关脚本的帮助。 我需要列出所有 AD 用户及其员工 ID,我需要一个 csv,其中有一列根据 Luhn 算法测试说明员工 ID 是真还是假。 我有这个脚本:

import-module -Name ActiveDirectory

$SearchBaseOU = "OU=---,DC=---,DC=---"

$ADusers = Get-ADUser -Filter {Enabled -eq $True} -SearchBase $SearchBaseOU -Properties EmployeeID,CanonicalName,EmployeeNumber | 
   Where {$_.EmployeeID -eq "123456789"} | 
   Select-Object samAccountName, Name , EmployeeID, EmployeeNumber,@{name="OU";expression={(($_.CanonicalName.split('/'))[0..($_.CanonicalName.split('/').Count-2)]) -join '/'}}

$ADusers | Export-Csv .\EnabledInactiveUsers.csv -Force -NoTypeInformation -Encoding UTF8

此脚本列出了员工 ID 等于“123456789”的所有 AD 用户。 我也在网上找到这个脚本:

https://www.powershellgallery.com/packages/gibbels-algorithms/1.0.3/Content/scripts%5Cluhn%5CTest-LuhnValidation.ps1

测试 ID 是真还是假。

我的问题是 - 如何将 luhn 算法函数添加到上面的原始脚本中以进行测试并将结果导出为 true 或 false 语句?

谢谢!

您可以使用 PowerShell Calculated Properties

例如,查看 select 中的最后一个 属性:“IsLuhn”,就像您在示例中的 CanonicalName 属性 中使用的那样, 首先将 link 中的 Luhn 函数添加到您的代码中。

$ADusers = Get-ADUser[... -Properties EmployeeID,CanonicalName,EmployeeNumber ...] | 
Select EmployeeID,CanonicalName,EmployeeNumber,
@{N="IsLuhn";E={Test-LuhnValidation $_.EmployeeID}}