首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >嵌套切换Powershell以形成用户组

嵌套切换Powershell以形成用户组
EN

Stack Overflow用户
提问于 2020-06-18 07:46:47
回答 1查看 20关注 0票数 0

我希望通过创建一个用户应该属于的组的列表来自动化用户组,基于3个需求,他们的分支,他们在该分支中的部门,以及他们的部门。部门是全国性的,而每个部门都依赖于分部,到目前为止,我有这个坏掉的烂摊子哈哈,

我使用开关和数组(代码未显示)分别处理分支和分区,但它们是互斥的,因此不能与需要基于分支进行更改的部门一起工作。我尝试嵌套这些开关,同时也附加到ArrayList中,但似乎失败了很多。我真的不知道下一步该怎么办。

最终目标将是组列表的输出,然后将用户添加到该列表中。任何指导都将不胜感激,谢谢。

代码语言:javascript
复制
$csvFile = 'C:\Path'  # Enter a path to your import CSV file


Import-Csv -Path $csvFile | ForEach-Object {

    $User = $_.firstname
    $Branch = $_.Branch
    $Divison = $_.Division
    $Department = $_.Department
    $AllStaff = @(
        "All Staff"
        "Staff Wifi"
    )



    [System.Collections.ArrayList]$UserGroups = @()

    $UserGroups.add($AllStaff)

    Switch ($Branch) {
        "Christchurch" {

            Switch ($Department) {
                "ProServices" {
                    $UserGroups.Add("CHCH ProServices")

                }
                "Sales" {
                    $UserGroups.Add("Christchurch Sales")

                }
            }
            $UserGroups.Add("Christchurch Staff")
        }


        "Auckland" {
            Switch ($Department) {
                "ProServices" {
                    $UserGroups.Add("AKL ProServices")

                }
                "Sales" {
                    $UserGroups.Add("Auckland Sales")

                }
            }

            $UserGroups.Add("Auckland Staff")
        }

        "Wellington" {
            Switch ($Department) {
                "ProServices" {
                    $UserGroups.Add("Wellington ProServices")

                }

            }
            $UserGroups.Add("Wellington Staff")
        }

        "Dunedin" {
            Switch ($Department) {
                "ProServices" {
                    $UserGroups.Add("DUN ProServices")

                }
                "Sales" {
                    $UserGroups.Add("Dunedin Sales")

                }
            }
            $UserGroups.Add("Dunedin Staff")
        }
        Default {
        }
    }

    switch ($Division) {
        'Sales' {
            $UserGroups.Add("SalesStaff")
        }
        'internal Sales Support' {
            $UserGroups.Add("Internal Sales Support")
        }
        'Service' {
            $UserGroups.Add("Service Staff")
        }
        Default {
        }
    }
    write-host "$user ALL Groups Are $UserGroups"
    $UserGroups = @()
}
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2020-06-18 08:38:22

我认为您在顶部的$Divison中有一个拼写错误。它与switch语句中对$Division的调用不匹配。

还可以尝试在单独的行上输出$UserGroups,不带"“。

我得到了:

代码语言:javascript
复制
Bob ALL Groups Are System.Object[] CHCH ProServices Christchurch Staff SalesStaff

作为输出,而不是按照自己的方式来做:

代码语言:javascript
复制
All Staff
Staff Wifi
CHCH ProServices
Christchurch Staff
SalesStaff

当输出到它时不是字符串

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

https://stackoverflow.com/questions/62440130

复制
相关文章

相似问题

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