PowerShell - сравнение двух массивов возвращает индекс в случае сбоя - PullRequest
0 голосов
/ 17 апреля 2020

Доброе утро!

Я хочу сравнить моего нового пользователя AD ($ ADUserArray) с информацией Json ($ UserObjectArray), я перепробовал все, что смог найти на Inte rnet, но это не похоже на работу.

foreach l oop была моей последней попыткой, мне нужно перебрать список и указать индекс ошибки, если произошла ошибка.

$ADUserArray = @(
            <#0#>           $adUser.givenname;
            <#1#>           $adUser.surname;
            <#2#>           $adUser.DisplayName;
            <#3#>           $adUser.userprinzipalname;
            <#4#>           $adUser.State;
            <#5#>           $adUser.Office;
            <#6#>           $adUser.OfficePhone;
            <#7#>           $adUser.City;
            <#8#>           $adUser.Company;
            <#9#>           $adUser.EmailAddress;
            <#10#>          $adUser.Department;
            <#11#>          $adUser.Homepage;
            <#12#>          $adUser.StreetAddress;
            <#13#>          $adUser.PostalCode;
            <#14#>          $adUser.SamAccountName;
            <#15#>          $adUser.homedirectory;
            <#16#>          $adUser.titel;
            <#17#>          $adUser.HomeDrive;
            <#18#>          $adUser.ProfilePath;
            <#19#>          $adUser.Manager)

$userObjectArray = @(
            <#0#>           $userObject.givenname;
            <#1#>           $userObject.surname;
            <#2#>           $userObject.displayname;
            <#3#>           $userObject.userprinzipalname;
            <#4#>           $userObject.state;
            <#5#>           $userObject.office;
            <#6#>           $userObject.officephone;
            <#7#>           $userObject.city;
            <#8#>           $userObject.company;
            <#9#>           $userObject.emailaddress;
            <#10#>          $userObject.department;
            <#11#>          $userObject.homepage;
            <#12#>          $userObject.streetaddress;
            <#13#>          $userObject.postalcode;
            <#14#>          $userObject.samaccountname;
            <#15#>          $userObject.homedirectory;
            <#16#>          $userObject.titel;
            <#17#>          $userObject.homedrive;
            <#18#>          $userObject.profilepath;
            <#19#>          $userObject.managerName)
$index = 0

foreach  ($test in $ADUserArray) 
{
    if (??? -like ???)
    {
        Write-Host "No Failure"
    }

    else
    {
        Write-Host "Error at: " $index
    }

    $index++
}

1 Ответ

0 голосов
/ 17 апреля 2020

Добро пожаловать в SO,

Возможно, вы захотите посмотреть Compare-Object.

Я адаптировал ваш ввод и код, чтобы он работал. Однако вы можете захотеть, чтобы ваш пользовательский объект JSON и AD был как можно ближе к оригиналу.

В вашем коде вы, кажется, тоже делаете странные вещи. <#1#> биты вам не помогут, так как они просто комментарии. Также заявление if (??? -like ???) выглядит странно. Не могли бы вы объяснить, что вы пытаетесь сделать там?

Я добавил условие if в ваши массивы, чтобы вы также могли использовать поля Nulled.

$ADUserArray = @(
            <#0#>           $(if($ADuser.givenname -eq $null){"No GivenName"}else{$userObject.givenname}),
            <#1#>           $(if($ADuser.surname -eq $null){"No surname"}else{$userObject.surname}),
            <#2#>           $(if($ADuser.displayname -eq $null){"No displayname"}else{$userObject.displayname}),
            <#3#>           $(if($ADuser.userprinzipalname -eq $null){"No userprinzipalname"}else{$userObject.userprinzipalname}),
            <#4#>           $(if($ADuser.state -eq $null){"No state"}else{$userObject.state}),
            <#5#>           $(if($ADuser.office -eq $null){"No office"}else{$userObject.office}),
            <#6#>           $(if($ADuser.officephone -eq $null){"No officephone"}else{$userObject.officephone}),
            <#7#>           $(if($ADuser.city -eq $null){"No city"}else{$userObject.city}),
            <#8#>           $(if($ADuser.company -eq $null){"No company"}else{$userObject.company}),
            <#9#>           $(if($ADuser.emailaddress -eq $null){"No emailaddress"} else {$userObject.emailaddress}),
            <#10#>          $(if($ADuser.department -eq $null){"No department"}else{$userObject.department}),
            <#11#>          $(if($ADuser.homepage -eq $null){"No homepage"}else{$userObject.homepage}),
            <#12#>          $(if($ADuser.streetaddress -eq $null){"No streetaddress"}else{$userObject.streetaddress}),
            <#13#>          $(if($ADuser.postalcode -eq $null){"No postalcode"}else{$userObject.postalcode}),
            <#14#>          $(if($ADuser.samaccountname -eq $null){"No samaccountname"}else{$userObject.samaccountname}),
            <#15#>          $(if($ADuser.homedirectory -eq $null){"No homedirectory"}else{$userObject.homedirectory}),
            <#16#>          $(if($ADuser.titel -eq $null){"No titel"}else{$userObject.titel}),
            <#17#>          $(if($ADuser.homedrive -eq $null){"No homedrive"}else{$userObject.homedrive}),
            <#18#>          $(if($ADuser.profilepath -eq $null){"No profilepath"}else{$userObject.profilepath}),
            <#19#>          $(if($ADuser.managerName -eq $null){"No managerName"}else{$userObject.managerName})
            )


$userObjectArray = @(
            <#0#>           $(if($userObject.givenname -eq $null){"No GivenName"}else{$userObject.givenname}),
            <#1#>           $(if($userObject.surname -eq $null){"No surname"}else{$userObject.surname}),
            <#2#>           $(if($userObject.displayname -eq $null){"No displayname"}else{$userObject.displayname}),
            <#3#>           $(if($userObject.userprinzipalname -eq $null){"No userprinzipalname"}else{$userObject.userprinzipalname}),
            <#4#>           $(if($userObject.state -eq $null){"No state"}else{$userObject.state}),
            <#5#>           $(if($userObject.office -eq $null){"No office"}else{$userObject.office}),
            <#6#>           $(if($userObject.officephone -eq $null){"No officephone"}else{$userObject.officephone}),
            <#7#>           $(if($userObject.city -eq $null){"No city"}else{$userObject.city}),
            <#8#>           $(if($userObject.company -eq $null){"No company"}else{$userObject.company}),
            <#9#>           $(if($userObject.emailaddress -eq $null){"No emailaddress"} else {$userObject.emailaddress}),
            <#10#>          $(if($userObject.department -eq $null){"No department"}else{$userObject.department}),
            <#11#>          $(if($userObject.homepage -eq $null){"No homepage"}else{$userObject.homepage}),
            <#12#>          $(if($userObject.streetaddress -eq $null){"No streetaddress"}else{$userObject.streetaddress}),
            <#13#>          $(if($userObject.postalcode -eq $null){"No postalcode"}else{$userObject.postalcode}),
            <#14#>          $(if($userObject.samaccountname -eq $null){"No samaccountname"}else{$userObject.samaccountname}),
            <#15#>          $(if($userObject.homedirectory -eq $null){"No homedirectory"}else{$userObject.homedirectory}),
            <#16#>          $(if($userObject.titel -eq $null){"No titel"}else{$userObject.titel}),
            <#17#>          $(if($userObject.homedrive -eq $null){"No homedrive"}else{$userObject.homedrive}),
            <#18#>          $(if($userObject.profilepath -eq $null){"No profilepath"}else{$userObject.profilepath}),
            <#19#>          $(if($userObject.managerName -eq $null){"No managerName"}else{$userObject.managerName})
            )

Compare-Object -ReferenceObject @($ADUserArray | select) -DifferenceObject @($userObjectArray | select) -IncludeEqual
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...