我有一个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
}
}
答案 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