从Excel中读取并导入Active Directory

时间:2015-08-23 11:33:49

标签: powershell active-directory

我有一个Excel文件,它有两列:第一列(员工)和第二列(缩写)。

目标是用AD员工的缩写填写AD中的姓名缩写。

我认为PowerShell脚本应该读取第1列,检查第1列是否与AD中的名称相同,然后读取员工的缩写并将其填入AD中。

这是我的第一个Powershell脚本,这是我尝试的,但当然它不起作用:

$xl = New-Object -COM "Excel.Application"
$xl.Visible = $false
$wb = $xl.Workbooks.Open("C:\Users\user\Desktop\test.xlsx")
$ws = $wb.Sheets.Item(1)

for ($i = 2; $i -le 150) {
   if ($ws.Cells.Item($i, 1).Value2 -ne $null) {
     $Employees = $ws.Cells.Item($i, 1).Value2
     $ abbreviation = $ws.Cells.Item($i, 2).Value2
     write-host " Employees: "$ Employees
     write-host " abbreviation: "$ abbreviation
           }
$i++
}

get-aduser -Filter * -Properties initials | select name, initials

ForEach ($Employees in $name)
{  
      if ($Employees -eq $name)
      {
           #$Initials  -eq $abbreviation 
           Set-ADUser -Initials $ abbreviation
      }
}

1 个答案:

答案 0 :(得分:0)

如果您只是尝试使用文件中的缩写字段更新首字母,我会先将文件另存为CSV文件,然后执行以下操作。

显然,您可以在此过程中添加更多提示和错误检查。

glDebugMessageControlAMD

如果文件中没有标题,则可以删除Get-Content test.csv | Select-Object -Skip 1 | ConvertFrom-Csv -Header Employees, abbreviation | ForEach-Object { Try { Get-ADUser $_.Employees | Set-ADUser -Initials $_.abbreviation } catch { Write-Host "Update Failed" Write-Host "$Error[0]" } }

或更简单

Select-object -skip 1