【问题标题】:Looping through 2D array | Powershell循环二维数组 |电源外壳
【发布时间】:2021-11-24 19:34:14
【问题描述】:

我正在尝试制作一个脚本,让我可以从数组/列表中一次为多个 azure 用户添加 phonenumber 2factor。

我认为二维数组可能是一个不错的解决方案。然后遍历数组并在列表中添加每个人的编号。

然而 powershell 不是我的菜。所以我无法继续。

所以如果有人可以帮助我如何制作 2 数组,以及如何抓取数组中的每个嵌套数组。

下面是我想要工作的“草图”。

 $name = [
  ["name-01@email.com","+1 12345678"],
  ["name-02@email.com","+1 12345678"],
  ["name-03@email.com","+1 12345678"],
  ["name-04@email.com","+1 12345678"],
  ["name-05@email.com","+1 12345678"],
  ["name-06@email.com","+1 12345678"],
  ["name-07@email.com","+1 12345678"],
  ["name-08@email.com","+1 12345678"],
  ["name-09@email.com","+1 12345678"],
  ["name-10@email.com","+1 12345678"]
]

下面是我用来添加属于电子邮件的号码的命令。

foreach ($i in $name) {
New-MgUserAuthenticationPhoneMethod -UserId $navn[$i][0] -phoneType "mobile" -phoneNumber $navn[$i][1]
}

【问题讨论】:

    标签: arrays list azure powershell automation


    【解决方案1】:

    foreach 迭代器不是这样工作的。它的想法是您可以一个一个地访问集合中的每个元素。这与项目的索引不同。由于$name 是一个包含数组的数组,您可以使用索引器访问内部成员的元素。

    这样,

    # Use parenthesis (, not brackets [
    # $contacts would be better a name since it's a collection of mail and phone pairs
    $name = (
    ("name-01@email.com","+1 12345678"),
    ...
    ("name-02@email.com","+1 12345678"))
    
    # Print each element's first - index zero - member:
    foreach($i in $name) { $i[0] }
    name-01@email.com
    ...
    name-10@email.com
    
    # Or second - index one - member:
    foreach($i in $name) { $i[1] }
    +1 12345678
    ...
    +1 12345678
    

    所以最终版本应该类似于

    foreach ($i in $name) {
        New-MgUserAuthenticationPhoneMethod -UserId $i[0] -phoneType "mobile" -phoneNumber $i[1]
    }
    

    【讨论】:

    • 谢谢!这比我的解决方案干净得多。
    【解决方案2】:

    我最终得到的是超级混乱。

    $user = @(
      ("name-01@email.no","+1 12345678"),
      ("name-02@email.no","+1 22345678"),
      ("name-03@email.no","+1 32345678"),
      ("name-04@email.no","+1 42345678"),
      ("name-05@email.no","+1 52345678"),
      ("name-06@email.no","+1 62345678"),
      ("name-07@email.no","+1 72345678")
    )
    $position = 0
    
    foreach ($i in $user) {
      New-MgUserAuthenticationPhoneMethod -UserId $user[$position][0] -phoneType "mobile" -phoneNumber $user[$position][1]
      $position++
    }
    

    编辑:使用 vonPryz 解决方案!它的方式更清洁,你应该如何做到这一点。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-12-22
      • 2023-04-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多