【问题标题】:Multiple variables in Foreach loop [PowerShell]Foreach 循环中的多个变量 [PowerShell]
【发布时间】:2011-12-09 10:17:39
【问题描述】:

是否可以将两个变量拉入 Foreach 循环?

以下代码针对 PowerShell ASP 进行了编码。我的 Foreach 循环中的语法不正确,但您应该能够破译我试图制作的逻辑。

$list = Get-QADUser $userid -includeAllProperties | Select-Object -expandproperty name
$userList = Get-QADUser $userid -includeAllProperties | Select-Object -expandproperty LogonName
if ($list.Count -ge 2)
{
    Write-host "Please select the appropriate user.<br>"
    Foreach ($a in $list & $b in $userList)
    {
        Write-host "<a href=default.ps1x?UserID=$b&domain=$domain>$b - $a</a><br>"}
    }
}

【问题讨论】:

    标签: powershell syntax foreach logic


    【解决方案1】:

    Christian 的回答是在你的情况下你应该做什么。无需获取这两个列表。记住 PowerShell 中的一件事 - 操作对象直到最后一步。在实际使用它们之前,不要尝试获取它们的属性等。

    但是,对于一般情况,当您确实有两个列表并希望在这两个列表上使用 Foreach 时:

    你可以做 Foreach 自己做的事情:

    $a = 1, 2, 3
    $b = "one", "two", "three"
    
    $ae = $a.getenumerator()
    $be = $b.getenumerator()
    
    while ($ae.MoveNext() -and $be.MoveNext()) {
        Write-Host $ae.current $be.current
    }
    

    或者使用普通的for循环和$a.length等。

    【讨论】:

      【解决方案2】:

      尝试如下。你根本不需要两个变量:

      $list = Get-QADUser $userid -includeAllProperties 
      if ($list.Count -ge 2)
      {
          Write-Host "Please select the appropriate user.<br>"
          Foreach ($a in $list)
          {
              Write-Host "<a href=default.ps1x?UserID=$a.LogonName&domain=$domain>$a.logonname - $a.name</a><br>"
          }  
      }
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2021-12-02
        • 1970-01-01
        • 2022-07-14
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2011-05-08
        • 1970-01-01
        相关资源
        最近更新 更多