迭代csv文件并使用属性创建联系人

时间:2016-12-08 11:44:33

标签: powershell csv active-directory

我目前使用以下脚本创建具有我需要的某些属性的联系人。

New-ADObject -name SGTContacttest5 -Type Contact -path "OU=SGTestOU,OU=Contacts,DC=DC,DC=Company,DC=local" -OtherAttributes @{
'department'="America";
'givenName'="SG";
'sn'="Test";
'displayname'="SG Test";
'title'="Job Title";
'telephoneNumber'="020";
'mobile'="075";
'mail'="SGTest888@example.com";
'physicalDeliveryOfficeName'="Office Name";
'company'="Company Name";

'proxyAddresses'="smtp:SGTest888@example.com";
'targetaddress'="smtp:SGTest888@example.com"
}

这很有效但现在我需要从CSV文件中输入大约100个这样的联系人。 我把它放在顶部,我会说:

$users = Import-Csv -Path C:\temp\users.csv 

然后我会以某种方式使用它:

foreach ($user in $users) {

我的CSV启动方式与我的代码相同,列如下所示:

  • 第一
  • 姓名
  • 职位名称
  • 办公室号码
  • 手机号码
  • 电子邮件
  • 位置

2 个答案:

答案 0 :(得分:2)

这是一个相当开放的问题,但是这个例子中的$ user是一个简单的占位符变量,所以可以是任何东西,$ i或$ temp,它代表父级的一个交互,在这种情况下是$ users。

这将是一个很好的开始,看看你的回复:

$users = import-csv -Path C:\temp\users.csv 

foreach ($user in $users)
{
    $user
}

使用:

foreach ($user in $users)
{
     $user | get-member
}

了解您必须使用的内容。

然后您可以访问$ user的属性,如下所示:

foreach ($user in $users)
{
    New-ADObject -name SGTContacttest5 -Type Contact -path "OU=SGTestOU,OU=Contacts,DC=DC,DC=Company,DC=local" -OtherAttributes @{
    'department' = $user.department
    'Surname' = $user.Surname
    }
}

答案 1 :(得分:0)

您可以在foreach循环中访问$user.Job之类的变量。请注意,您应该省略引号。这里有一个属性的例子,你应该能够自己做其余的事情:

$users = Import-Csv -Path C:\temp\users.csv 
foreach ($user in $users) 
{
    New-ADObject -name SGTContacttest5 -Type Contact -path "OU=SGTestOU,OU=Contacts,DC=DC,DC=Company,DC=local" -OtherAttributes @{
    'department'=$user.Job;
    # ....
    }
}