none
powershell 根据CSV文件批量创建AD用户并移动到指定OU RRS feed

  • 问题

  • 工程师您好,如何通过导入的csv,在批量创建用户的同时,将新建的账号通过CSV中不同部门移动到不同的OU?

    我自己写的脚本可以实现批量创建用户,但是无法移动,求助看下问题在哪里,谢谢。

    例如:

    $path= "ou=it,dc=test,dc=com"

    import-csv c:\user.csv | ? {

                      New-ADUser  -SamAccountName $_.samname 等等 | ? {

                      if ($部门 -eq “it”)

                    {move-adobject  $_.samname -targepath $path  }

                     else   

                    { write-host 123}

    }}

    2020年10月15日 7:49

答案

  • 您好,

    很抱歉没有能够及时回复您。

    脚本中-PassThru这个参数依然还是需要的,否则New-ADUser无法输出对象至管道后面的命令Get-ADUser。

    至于New-ADUser中设置ADUser属性,您可以根据具体CSV文件中列的名称,自行在脚本中自行设置,比如将ADUser的Department属性设置为CSV文件中的“部门”

    Import-Csv C:\user.csv | ForEach-Object{
    New-ADUser -SamAccountName $_.samname -Department $_.部门 等等 -PassThru | Get-ADUser -Properties Department | Where-Object{$_.Department -eq "IT"} | Move-ADObject -TargetPath $path
    }

    但在后面的Get-ADUser中,由于此处是指定获取之前在New-ADUser中创建的ADUser的属性,而不是CSV文件中的“部门”属性(用于给ADUser属性赋值),因此是ADUser的Department属性。

    如您还有其他疑问,请随时与我们联系。 如果回答是有帮助的, 请将其标记为答案, 可以帮助其他有相同问题的社区成员, 并快速找到有用的答复。

    祝好

    Ian Xue


    Please remember to mark the replies as answers if they help.
    If you have feedback for TechNet Subscriber Support, contact tnmff@microsoft.com.





    • 已编辑 Ian Xue 2020年10月27日 3:48
    • 已标记为答案 xi丶xi 2020年11月24日 1:42
    2020年10月27日 3:36

全部回复

  • 您好:

    默认New-ADUser是没有输出的,需要加上-PassThru参数来产生输出对象。例如

    Import-Csv C:\user.csv | ForEach-Object{
    New-ADUser -SamAccountName $_.SamAccountName -Department $_.Department 等等 -PassThru | Get-ADUser -Properties department | Where-Object{$_.department -eq "IT"} | Move-ADObject -TargetPath $path
    }

    由于默认不返回Department属性,所以在Get-ADUser中手动指定。另外遍历所有对象可以用ForEach-Object。

    如果回复对您有所帮助的话,您可以把回复标记为答复,方便论坛中有类似问题的用户快速找到正确的论坛发布问题。
    感谢您的理解和支持。
    祝好
    Ian Xue



    Please remember to mark the replies as answers if they help.
    If you have feedback for TechNet Subscriber Support, contact tnmff@microsoft.com.





    • 已编辑 Ian Xue 2020年10月19日 4:09
    2020年10月16日 9:40
  • 您好:

    请问上述回复是否能够解决您的问题?

    如您还有其他疑问,请随时与我们联系。 如果回答是有帮助的, 请将其标记为答案, 可以帮助其他有相同问题的社区成员, 并快速找到有用的答复。

    祝好

    Ian Xue


    Please remember to mark the replies as answers if they help.
    If you have feedback for TechNet Subscriber Support, contact tnmff@microsoft.com.


    • 已编辑 Ian Xue 2020年10月20日 3:42
    2020年10月20日 3:39
  • sorry,没有及时回复您,是我前面表达的不够清楚,$部门这个值是CSV里的值,并非AD账号里的department,那么您的PassThru是否依然适用?
    2020年10月22日 9:02
  • 您好,

    很抱歉没有能够及时回复您。

    脚本中-PassThru这个参数依然还是需要的,否则New-ADUser无法输出对象至管道后面的命令Get-ADUser。

    至于New-ADUser中设置ADUser属性,您可以根据具体CSV文件中列的名称,自行在脚本中自行设置,比如将ADUser的Department属性设置为CSV文件中的“部门”

    Import-Csv C:\user.csv | ForEach-Object{
    New-ADUser -SamAccountName $_.samname -Department $_.部门 等等 -PassThru | Get-ADUser -Properties Department | Where-Object{$_.Department -eq "IT"} | Move-ADObject -TargetPath $path
    }

    但在后面的Get-ADUser中,由于此处是指定获取之前在New-ADUser中创建的ADUser的属性,而不是CSV文件中的“部门”属性(用于给ADUser属性赋值),因此是ADUser的Department属性。

    如您还有其他疑问,请随时与我们联系。 如果回答是有帮助的, 请将其标记为答案, 可以帮助其他有相同问题的社区成员, 并快速找到有用的答复。

    祝好

    Ian Xue


    Please remember to mark the replies as answers if they help.
    If you have feedback for TechNet Subscriber Support, contact tnmff@microsoft.com.





    • 已编辑 Ian Xue 2020年10月27日 3:48
    • 已标记为答案 xi丶xi 2020年11月24日 1:42
    2020年10月27日 3:36
  • 您好:

    请问您的问题是否得到解决了?

    如您还有其他疑问,请随时与我们联系。 如果回答是有帮助的, 请将其标记为答案, 可以帮助其他有相同问题的社区成员, 并快速找到有用的答复。

    祝好

    Ian Xue


    Please remember to mark the replies as answers if they help.
    If you have feedback for TechNet Subscriber Support, contact tnmff@microsoft.com.

    2020年11月3日 6:55