2017-09-06 23 views
-1

私はADのネストされたグループに取り組んでおり、何か助けが必要です。関数の結果を動的変数に保存する

ここでは、コードです:

function Extract-Users($group, $array) { 
    $members = Get-ADGroupMember -Identity $group.Name 
    foreach ($member in $members) { 
     if ($member.objectClass -eq "user") { 
      $Admin = New-Object PSObject 
      $Admin | Add-Member -Type NoteProperty -Name User -Value $user.Name 
      $Admin | Add-Member -Type NoteProperty -Name Group -Value $group.Name 
      $array += $Admin 
      Remove-Variable Admin 
      return $array 
     } elseif ($member.objectClass -eq "group"){ 
      Extract-Users $member, $object 
     } 
    } 
} 

問題は、私はこのような関数を呼び出すことができるようにしたいということです。

$ADGroups = Get-ADGroup -Filter {Name -like "*admin*"} 
$Admins = @() 
foreach ($group in $ADGroups) { 
    Extract-Users $group $Admins 
} 

とに機能で作成されたすべてのオブジェクトを保存するには関数に投げている変数。そのため、抽出したすべてのユーザーが$ Admins配列に格納されます。私はすべてのマニュアルを書くことができると知っていますが、私はそれを行う動的な方法があるかどうかを知りたいと思います。


おかげでみんな

+0

のために完璧になります$ objectは返されていますが、$ objectはどこにも定義されていません。 –

+0

$ array とすると申し訳ありません。 – Alex

+3

'$ FinalArray + = Extract-Users $ group $ Admins' –

答えて

1

私は言うあたりの変数に格納された動的な機能を使用することが可能であるとは思わないが、私はあなたがByRefのパラメーターを使用して所望の結果を達成する可能性が信じています。 $アレイパラメータが使用され、機能の動作が受け継が既存のアレイに追加されるようにして、抽出物ユーザー

簡単な例

$Users = @() 

function Extract-Users{ 
Param([Parameter(Mandatory=$true)]$group, 
    [Parameter(Mandatory=$true)][ref]$array) 

$array.Value += (Get-Random) 
return $array.Value.count 
} 

戻り値は、他の目的に使用することも、完全に無視することもできます。

簡単なデモここ

、私エキス、ユーザーが実際には$配列パラメータを使用して、それに乱数を追加します。ただし、代わりにユーザーを追加することはできます。

cls 

$group = 'something' 
Write-host 'Users count:' (Extract-Users $group ([ref]$Users)) 

Write-Host '$Users variable content' 
$Users | ft 


Write-host 'Users count:' (Extract-Users $group ([ref]$Users)) 
Write-host 'Users count:' (Extract-Users $group ([ref]$Users)) 
Write-host 'Users count:' (Extract-Users $group ([ref]$Users)) 

Write-Host ([Environment]::NewLine) 
Write-Host 'Here is the $Users variable content' 
$Users | ft 

注意すべき重要な点は、あなただけではなく、$ MYPARAMの方法([参照] $ MYPARAM)パラメータを渡す必要があり、また機能では、あなたが.VALUEプロパティを更新しないようにすることです変数そのもの。

編集: まあ、Rohinとして完全によくトリックを行う

$FinalArray += Extract-Users $group $Admins 

一見シンプル、OPの質問で指摘しています。あなたが異なるように、戻り値が必要な場合は

(例えばブール結果の成功/ falseの状態を取得したり、ユーザーの数または何か他のものを取得するには、[参照]は、あなたのコードでは、T

関連する問題