【问题标题】:How to select multiple subobjects of an object in powershell如何在powershell中选择对象的多个子对象
【发布时间】:2019-07-19 17:01:56
【问题描述】:

目标是从包含 X 个用户的子主题“用户”的组列表中选择所有用户。此用户列表应稍后作为批处理写入 SQL Server。目标是拥有一个包含用户属性和组名 + id 的表。

为了使选择和映射更快,我尝试使用 powershell 的 select 命令。但是当组中有多个用户时会出现问题

$GroupUsers = @()
foreach ($group in $groups) {
        $GroupUsers = New-Object -TypeName PSObject -Property @{
            UserLoginName = $group.Users.LoginName
            UserTitle     = $group.Users.Title
            UserEmail     = $group.Users.Email
            GroupName     = $group.Title
        } | Select UserLoginName, UserTitle, UserEmail, GroupName

         $GroupUsers+= $GroupUsers

    } 

生成的输出如下所示:

用户 ID:33 用户登录名:WalterX.test.com 用户名:Walter X 用户邮箱:x@mail.de 组名:组 1 组号:1 用户 ID:{1、2、3、4...} UserLoginName : {User1.test.com, User2.test.com,User3.test.com ...} 用户标题:{用户 1,用户 2,用户 3...} 用户邮箱:{User1@mail.com,User2@mail.com...} 组名:组2 组号:2

如您所见,第一个用户已正确导出。数组中的第二个条目在 UserLoginName、Title 和 EMail 属性上有多个用户...

【问题讨论】:

    标签: powershell select


    【解决方案1】:
    1. 不要使用+=这是无效的,因为它会在每次添加时重建完整的数组
    2. 将 foreach 的输出分配给一个变量,使用 [PSCustomObject]
    3. 嵌套另一个 foreach 以迭代组的用户。
    $GroupUsers = foreach($group in $groups) {
        foreach($user in $group.Users){
            [PSCustomObject]@{
                UserLoginName = $User.LoginName
                UserTitle     = $User.Title
                UserEmail     = $User.Email
                GroupName     = $group.Title
            }
        }
    }
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-02-22
      • 1970-01-01
      相关资源
      最近更新 更多