2011-10-17 174 views
4

是否有可能将两个变量拉入Foreach循环?Foreach循环中的多个变量[PowerShell]

下面的代码是为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>"} 
    } 
} 

回答

6

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

$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>" 
    } 
} 
+0

+1 - 好的答案:) – manojlds

10

克里斯蒂安的答案是你应该在你的情况下做什么。没有必要获得这两个列表。在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

+0

+1良好的示例与两个列表使用GetEnumeratos() –