Импорт файлов Powershell CSV ведет себя странно - PullRequest
0 голосов
/ 30 января 2019

У меня есть файл CSV, в котором содержится информация, с которой мне нужно автоматизировать работу в Office 365. У меня возникают проблемы с полем менеджера, когда я пытаюсь импортировать элементы из CSV.следующий код прекрасно работает, когда в CSV-файле находится только одна запись, но как только я добавлю вторую или третью запись, objectID вернет ноль.Проблема с петлей?Кажется, это работает нормально, если я использую другие команды, такие как Set-AzureADUser -DisplayName

$importFile = "c:\report\Users.csv"
$users = import-csv $importFile | select *


foreach($user in $users){
$DisplayName = $users.'Display Name'
$Managers = $users.'Manager'

$Employees = Get-AzureADUser | where displayname -EQ $displayName 
$EmployeeManagers = Get-AzureADUser | where displayname -EQ $Managers

Set-AzureADUserManager -objectid $employees.ObjectId -RefObjectId $EmployeeManagers.ObjectId
}

Ответы [ 3 ]

0 голосов
/ 30 января 2019

Спасибо!сейчас очень близко.Единственная проблема заключается в том, что теперь он назначает каждому пользователю один и тот же менеджер.

$importFile = "c:\report\Users.csv"
$users = import-csv $importFile | select *

foreach($user in $users){
$DisplayName = $user.'Display Name'
$Managers = $user.'Manager'

$Employees = Get-AzureADUser | where displayname -EQ $displayName 
$EmployeeManagers = Get-AzureADUser | where displayname -EQ $Managers

Set-AzureADUserManager -objectid $employees.ObjectId -RefObjectId $EmployeeManagers.ObjectId
}

foreach ($user in $users) {get-AzureADUserManager -objectid $employees.objectid} 

Это возвращает один и тот же менеджер для всех пользователей, даже если заголовок менеджера в файле CSV содержит разные записи для каждого пользователя.

0 голосов
/ 30 января 2019

В случае, если это полезно для кого-то еще, ответ Prasoons был на 100% правильным, и как только я добавил последнюю строку обратно в цикл, он работал отлично.Окончательный рабочий код приведен ниже.Спасибо Прасун!

$importFile = "c:\report\Users.csv"
$users = import-csv $importFile | select *

foreach($user in $users){
$DisplayName = $user.'Display Name'
$Managers = $user.'Manager'

$Employees = Get-AzureADUser | where displayname -EQ $displayName 
$EmployeeManagers = Get-AzureADUser | where displayname -EQ $Managers

Set-AzureADUserManager -objectid $employees.ObjectId -RefObjectId $EmployeeManagers.ObjectId
get-AzureADUserManager -objectid $employees.objectid 
}
0 голосов
/ 30 января 2019

Проблема в использовании переменной в foreach.Вы используете $Users внутри foreach, который будет иметь несколько элементов.измените его на $user внутри цикла, который является текущим элементом.

foreach($user in $users){
    $DisplayName = $user.'Display Name'
    $Managers = $user.'Manager'

    $Employees = Get-AzureADUser | where displayname -EQ $displayName 
    $EmployeeManagers = Get-AzureADUser | where displayname -EQ $Managers

    Set-AzureADUserManager -objectid $employees.ObjectId -RefObjectid $EmployeeManagers.ObjectId
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...