我有以下脚本从CSV文件中导入数据。
import-csv CSVfilelocation.csv |
new-aduser -name $_.Name -givenname $_.Firstname -surname $_.Lastname -samaccountname $_.samAccountName -userprincipalname ($_.samaccountname+"@dc.contoso.com") -manager $_.Manager -accountpassword (convertto-securestring Password -asplaintext -force) -path "Complete OU path" -Company $_.Company -Description $_.Description -enabled $false
CSV文件只包含两行数据,第一行包含列标题,下一行包含数据。
脚本不会抛出错误,但它也没有做任何事情。未创建用户,脚本输出>>签字喜欢它正在等待输入。
Executionpolicy设置为不受限制,脚本从本地运行。
为什么不起作用?
答案 0 :(得分:0)
您很可能需要一个明确的foreach
来多次致电new-aduser
。
import-csv CSVfilelocation.csv | % {
new-aduser -name $_.Name -givenname $_.Firstname -surname $_.Lastname -samaccountname $_.samAccountName -userprincipalname ($_.samaccountname+"@dc.contoso.com") -manager $_.Manager -accountpassword (convertto-securestring Password -asplaintext -force) -path "Complete OU path" -Company $_.Company -Description $_.Description -enabled $false
}
编辑:我错过了你的Powershell等待更多输入。这意味着你的行中有一个未闭合的括号或字符串,所以检查并修复。
答案 1 :(得分:0)
请试试这个:
使用PowerShell读取CSV文件并创建Active Directory用户帐户
*我认为最重要的部分是你需要通过列表中的每个项目。 * 强>
“所以!”Lou突然出现“我们将您的整个文件放在Windows PowerShell变量$ UserList中。如果我们希望单步执行此列表,我们只需使用ForEach-Object cmdlet。我们有两种方法可以做到这一点。一种是将信息直接传递给ForEach-Object,如下所示:
$USERLIST | FOREACH-OBJECT { $_ }
“这会将列表中的每个条目都回显到屏幕上。”
“那么有趣的Windows PowerShell变量是什么?一个名字的下划线?“
“AHHA!很高兴你抓住了它!“吹嘘Boo。 “这是Windows PowerShell拥有的众多内置自动变量之一。它包含管道中的当前对象。当我们逐步浏览$ UserList中的信息时,它会保存该行的全部内容。或者我们可以这样做:
FOREACH ($Person in $UserList) { $ Person }
“在第二个实例中(使用$ UserList设置中的$ Person),变量$ Person替换了自动变量,它为我们提供了更具可读性的东西。两者都同样有效,但我更喜欢后者的可读性。因此,如果您想访问列表中的每个条目,我们会在CSV文件中引用列的名称,如下所示:“
FOREACH ($Person in $UserList) {
$Person.FirstName
$Person.LastName
}
希望有所帮助!!
格伦
答案 2 :(得分:0)
发现问题,我有一个"我的路径变量太多了。我想我下次应该更好地校对我的代码。