我是PowerShell的新手,我有一个.csv文件,其中包含100个不同的用户,其名称分别为Name,Surname,Section,具体取决于必须在该特定OU中创建用户的部分。例如:Joe,Heart,Accounts-执行命令I时,必须在帐户组织单位中创建用户。
最大的挑战是,我仅需使用1行命令即可在各自的OU中创建100个用户。我尝试了多个命令,并观看了许多视频,但似乎没有任何效果。我正在使用Windows Server 2012。
当前,我正在尝试使用此命令
Import-Csv C:\Users\Administrator\Desktop\HomeList.csv
| ForEach-Object { Set-ADOrganizationalUnit -Identity $_.Section -Member $_.Name }
我得到了错误
找不到与参数名称“成员”匹配的参数
答案 0 :(得分:0)
由于这是学校的练习,所以我认为给您一个可工作的代码来简单地复制/粘贴并不是一件好事。 不过,我可以给您提示要看的地方。
您说的CSV文件具有以下字段:Name
,Surname
,Section
,其中
必须将CSV中的每个用户移动到指定的OU,并且为此ActiveDirectory模块具有cmdlet Move-ADObject,因此您可以使用Foreach-Object {...}遍历数据。 >
这里有几个问题要处理。
第一个是Move-ADObject
cmdlet带有一个-Identity
参数,该参数可以是DistinghuishedName或GUID。您还可以通过管道将ADUser对象发送给它。
在CSV中,您具有用户的名字(AD属性GivenName
)和用户的名字(属性SurName
),因此您需要从AD获取用户 object 首先是为了能够使用Move-ADObject。
为此,使用-Filter
和Get-ADUser的-LDAPFilter
参数在互联网上可以找到几个答案。
第二个问题是Move-ADObject
需要以{strong> DistinghuishedName 形式的-TargetPath
参数,并且由于您的CSV文件仅包含目标OU的(Display)Name ,您也需要先获得它。
相应的cmdlet是Get-ADOrganizationalUnit,您可以在其中使用-Filter
参数,例如:-Filter "Name -eq '$($_.Section)'"
注意:您也可以使用Get-ADObject
并过滤“ ObjectClass -eq'organizationalunit'”作为Get-ADOrganizationalUnit
的替代项,但这有点困难。
一旦拥有两个AD对象,就都设置为使用Move-ADObject
cmdlet将用户移动到目标OU,但是在尝试使用该命令时始终将-WhatIf
开关添加到命令中码。只有对控制台中显示的结果感到满意时,才可以关闭该开关。
请不尝试将所有这些内容放在一行中。将其写出来并在代码中添加注释。如果一切正常,您可能希望通过使用Group-Object
从CSV整理数据来加快处理速度希望这会有所帮助