首页 > 解决方案 > 使用 for 循环复制具有递增值的属性

问题描述

我想将 CustomAttributes 从我们的 Exchange Online 帐户复制到用户 AD 对象。

CustomAttributes 1-3 将被复制到 AD 的 ExtensionAttribute 值 (1-3)

我创建了一个脚本来自动化这个过程。

  <following on from previous code>....  
    $ExtAttr= "ExtensionAttribute"
    $i =1
    $CustomAttr = ""

  For($i =1; $i -lt 4; $i++)
         {
           $CustomAttr = get-mailbox  $upn | Select CustomAttribute$i
           Set-ADUser -server Server -Identity $LocalADUser.SamAccountName -Add @{"$ExtAttr$i"=$CustomAttr."CustomAttribute$i"}
         }

这段代码一直有效,直到我到达“$CustomAttr.CustomAttribute$i”

如何修改最后一部分,以便 CustomAttribute$i 属性根据 $i 当前的值复制正确的值?

因此,如果 $i 为 1,则对于 AD 中的当前选择用户,应将 CustomAttribute1 复制到 ExtensionAttribute1,对于 Si=2,然后将 CustomAttribute2 复制到 ExtensionAttribute2 等。

标签: powershell

解决方案


使用括号和一些字符串连接应该可以解决这个问题。尝试更换:

-添加@{"$ExtAttr$i"=$CustomAttr."CustomAttribute$i"}

和:

-添加@{"$ExtAttr$i"=$CustomAttr.$("CustomAttribute" + $i)}


推荐阅读