2

私はcsvタイプの組織図を作成していて、ユーザーマネージャー、マネージャーのマネージャーなどを最高の位置まで取得するために何が好ましいのか疑問に思っていました。現在私が使用しているもの:

[string]$man = $userEntry.manager
    [array]$manName = $man.split('=,')
    $manager = $manName[1]
    $item.Cells.Item($i,1) = $userEntry.name.value
    $item.Cells.Item($i,2) = $userEntry.description.value
    $item.Cells.Item($i,3) = $manager.ToString()

次に、get-QADobjectを実行して、DNで次のマネージャーを検索します。

しかし、もっとクリーンな方法があるはずです!

ありがとう

4

1 に答える 1

2

私があなたを正しく理解していれば、あなたは指揮系統を一番上までたどりたいと思うでしょう (おそらくその人にはマネージャーがいませんか?)。その場合、再帰的にツリーを上る必要があります。

現時点でテストするのに便利なドメインがないため、テストされていない疑似コード:

Function Get-Manager {
params(
[string]$username
)
$userEntry = get-qaduser $username
[string]$man = $userEntry.manager
if (-not ($man -eq $null)) {
    [array]$manName = $man.split('=,')
    $manager = $manName[1]
    "$manager is the manager of $username";
    Get-Manager $manager
}
}

これは、ユーザーに管理者がいなくなると停止します。私の組織の場合、CEO は彼自身のマネージャーとしてリストされているため、上記のコードを変更して、マネージャーが nullでないか、ユーザーと等しいかを調べて、これらの条件のいずれかが真であるとループが壊れるようにします

于 2013-01-10T03:50:50.387 に答える