2011-10-17 26 views
4

Foreachループに2つの変数を追加することはできますか?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

次のようにしてください。 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>" 
    } 
} 
+0

+1 - 良い答え:) – manojlds

10

クリスチャンの答えはあなたの状況ですべきことです。 2つのリストを取得する必要はありません。 PowerShellでは、最後のステップまでオブジェクトを操作することを忘れないでください。あなたが実際にそれらを使用するポイントまでプロパティなどを取得しようとしないでください。

しかし、あなたは二つのリストを持っているし、2オーバー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()を使用した2つのリストの良いサンプル –

関連する問題