【发布时间】:2015-12-13 09:48:58
【问题描述】:
我的目标是使用 HR 导出的没有正确标题的 CSV 文件来更新我们的 AD 用户和计算机。最后我想更新:部门、描述/职位、办公室、位置、经理。
我不是要你为我做这件事,只是给我指出正确的方向,我真的很感激。
您还会注意到没有 SamAccountName,这是设计使然,因为用户有相同的名字,所以我们不得不使用一些用户名字的前 2 个首字母,后跟姓氏。
import-module ActiveDirectory
Import-CSV $data | ForEach-Object {
$Name;expression={($_.'First Name'+' '+$_.'Last Name')}
$displayName;expression={$_.'First Name'+' '+$_.'Last Name'}
$givenName;expression={$_.'First Name'}
$surName;expression={$_.'Last Name'}
$description;expression={$_.'Job Name'}
$office;expression={$_.'Location Name'}
$department;expression={$_.'Department Name'}
$title;expression={$_.'Job Name'}
$manager;expression={$_.'Manager Name'}
}
foreach ($user in $data){
Get-ADUser -Filter "displayName -eq '$($user.$Name)'" | Set-ADUser -Replace @{title = “$($user.$title)”}
}
我遇到的错误之一
The term 'expression=' is not recognized as the name of a cmdlet, function, script file, or operable program.
【问题讨论】:
-
嗨,你能告诉我们出了什么问题吗? :) 最后我至少看到了一些奇怪的引用
-
@sodawillow 这些将是聪明的报价。 通常是复制粘贴的产物。卡姆你从来没有问过问题吗?
-
您没有为
$name(或其他变量)赋值,所以我确信您在这方面遇到了几个错误。$Name = $_.'First Name' + ' ' + $_.'Last Name'在我看到您在这里遇到的其他问题中。你不需要有两个循环,$data看起来像一个文件路径,所以每个循环的第二个都没有权重 -
只是为了记录......无论人们是否有相同的名字,sAMAccountName 可能是 John Doe 的“roflninjacopter”,Neo 的“kitten27”等等......哦,虽然在同名主体;找到一个用户,其中 displayName -eq "First Name" + "Last Name" - 这不可能让 CIO 成为场地管理员或类似的人吗?
标签: powershell csv active-directory