Если каждая строка обоих файлов соответствует, вы можете использовать простой цикл for
, чтобы выполнить итерацию по обоим спискам одновременно. $ADUsers
будет содержать вывод ADUser
объектов, соответствующих условиям.
$ADUsers = for ($i = 0; $i -lt $Users.Count; $i++) {
Get-ADUser -Filter "Name -eq '$($Users[$i])'" -Properties LogonWorkstations |
Where-Object { ($_.LogonWorkstations -split ',') -contains $Computers[$i] }
}
Поскольку LogonWorkstations
содержит строку, разделенную запятыми, вам придется выполнить некоторые манипуляции со строками. Использование оператора -split
для символа ,
приведет к массиву строк. Оператор -contains
прекрасно работает при сравнении элемента или коллекции элементов с одним элементом.
Если вы хотите сравнить значение LogonWorkstations
пользователя с любым компьютером в списке, выможет сделать что-то вроде следующего:
$ADUsers = foreach ($User in $Users) {
Get-ADUser -Filter "Name -eq '$User'" -Properties LogonWorkstations | Where-Object {
Compare-Object -Ref ($_.LogonWorkstations -split ',') -Dif $Computers -IncludeEqual -ExcludeDifferent
}
}
Compare-Object
здесь будет возвращать значение только при наличии точного совпадения.
Примечание: Iсчитаю, что атрибут LogonWorkstations
был заменен атрибутом UserWorkstations
. Оба могут работать сейчас, но не могут быть гарантированы в будущем.