Powershell CSV文件导入代理奇怪

时间:2019-01-30 02:56:20

标签: powershell office365

我有一个CSV文件,其中包含我要在Office 365中进行自动化的任务。在尝试从CSV导入项目时,我在管理器字段上遇到了麻烦。当CSV文件中只有一个条目时,以下代码可以完美运行,但是一旦我添加了econd或第三个条目,objectID就会返回null。循环有问题吗?如果我使用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 :(得分:0)

问题在foreach中的变量用法中。您正在foreach中使用$Users,它将包含多个项目。将其更改为当前项目循环中的$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
}

答案 1 :(得分:0)

谢谢!现在非常接近。唯一的问题是它现在将每个用户都设置为同一管理员。

$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文件中的管理员标头对于每个用户而言都有不同的条目。

答案 2 :(得分:0)

如果它对其他人有帮助,Prasoons的回答是100%正确,一旦我将最后一行添加到循环中,它就可以完美工作。最终的工作代码如下。谢谢Prasoon!

$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 
}