首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Powershell -将自动递增的值分配给包含AD OU的数组

Powershell -将自动递增的值分配给包含AD OU的数组
EN

Stack Overflow用户
提问于 2015-02-02 22:01:20
回答 1查看 2.9K关注 0票数 0

我有一段代码,我已经花了几天的时间在脑子里。我正试图根据我们的AD OU结构来获取特许学校及其校园的名单。我翻阅并获取特许的名称,然后使用特许OU,我骑自行车和抓取校园的名单。我希望将它们放在一个具有自动递增值($i)的数组中,因为当我获取这些数据时,我希望在一个菜单中显示它,用户可以通过输入一个数字来选择校园。基本上每个校园都有自己的号码。

问题是,当它完成循环时,唯一返回的值是它循环通过的最后一个宪章中的值,其他值都没有继续执行。另一件奇怪的事情是,数组中的键正在很好地递增,我只是看不见它们!

代码语言:javascript
复制
# Get list of Charters in AD
$charters = Get-ADOrganizationalUnit -LDAPFilter '(name=*)' -SearchBase 'OU=Campuses,DC=INTELLATEK,DC=LOCAL' -SearchScope OneLevel | Select-Object Name, DistinguishedName | Where-Object {$_.name -ne 'All Campus'} 

$i = 1
ForEach ($charter in $charters) {

    # Get list of list of campuses for that charter
    $campuses = Get-ADOrganizationalUnit -LDAPFilter '(name=*)' -SearchBase $charter.DistinguishedName -SearchScope OneLevel | Select-Object Name, DistinguishedName, ObjectGUID

    $sel = @{}

    ForEach ($campus in $campuses) {

        # $i 
        # $campus.Name

        $sel[$i]                        = @{}
        $sel[$i]["charter"]             = $charter
        $sel[$i]["campus"]              = $campus.Name
        $sel[$i]["distinguishedname"]   = $campus.DistinguishedName
        $sel[$i]["objectguid"]          = $campus.ObjectGUID

        $i++
    }
}

$sel

$sel输出如下:

为什么它只显示11-16 (这是它循环通过的最后一个宪章)?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2015-02-02 22:17:09

你只会得到最后一个,因为你在你的foreach宪章循环中重新初始化$sel,所以每次它通过一个新的宪章时,保存在$sel中的所有以前的信息都会被删除。你需要把它放到循环之外:

代码语言:javascript
复制
i = 1
$sel = @{}
ForEach ($charter in $charters) {

    # Get list of list of campuses for that charter
    $campuses = Get-ADOrganizationalUnit -LDAPFilter '(name=*)' -SearchBase $charter.DistinguishedName -SearchScope OneLevel | Select-Object Name, DistinguishedName, ObjectGUID

    ForEach ($campus in $campuses) {

        # $i 
        # $campus.Name

        $sel[$i]                        = @{}
        $sel[$i]["charter"]             = $charter
        $sel[$i]["campus"]              = $campus.Name
        $sel[$i]["distinguishedname"]   = $campus.DistinguishedName
        $sel[$i]["objectguid"]          = $campus.ObjectGUID

        $i++
    }
}

$sel
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/28287616

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档