Существует, вероятно, простой способ сделать это, но я на мгновение ударился головой о стену. Я пытаюсь захватить несколько пользовательских атрибутов из AD, сравнить два из этих атрибутов и затем изменить их на основе различий. Однако, поскольку некоторые пользователи имеют нулевые значения для своих полей офиса или отдела, что приводит к сбою объекта сравнения, у меня есть те, которые входят в другие массивы с помощью -replace, чтобы избавиться от нулей, поэтому мои переменные выглядят следующим образом:Сравнение массивов в Powershell
$UserData = Get-ADuser -filter * -properties physicaldeliveryofficename,department | select samaccountname,physicaldeliveryofficename,department
$Offices = $UserData.physicaldeliveryofficename -replace "^$","N/A"
$Departments = $UserData.department -replace "^$","N/A"
Пока все хорошо, но когда я просматриваю, чтобы сравнить значения, я начинаю сталкиваться с проблемами. Перебор пользователей, как это, кажется, сравнивая каждый элемент любого другого элемента:
Foreach ($user in $UserData.samaccountname) {
Compare-object $offices $departments -includeqeual}
Пока не имея петлю и с помощью сравнения-объект сам по себе дает точные результаты, но тогда я должен был бы цикл, чтобы проверить для матчей в любом случае.
Предполагая, что я просто хочу определить, какие пользователи имеют соответствующие поля офиса и отдела (и основываясь на том, что делает довольно простую команду Set-ADUser), как бы мне пойти на сравнение значений без проверки каждого элемента на любой другой элемент?
Работал как очарование! –