代码之家  ›  专栏  ›  技术社区  ›  Sandeep Kumar

从返回的字段中提取特定字符串

  •  1
  • Sandeep Kumar  · 技术社区  · 1 年前
    Class CustomAdInfo {
        $UserName
        $Group
        $Email
        $Manager
    }
    
    [char] 'y'..[char] 'z' | ForEach-Object {
        $getADUserSplat = @{
            Filter         = "Name -like '$_*'"
            Properties     = 'SamAccountName', 'memberOf', 'EmailAddress', 'Manager'
            ResultPageSize = 256
            SearchBase     = 'CN=Users,DC=ab,DC=cd'
        }
        foreach ($user in Get-ADUser @getADUserSplat) {
            foreach ($group in $user.MemberOf | Get-ADGroup) {
                [CustomAdInfo]@{
                    UserName = $user.SamAccountName
                    Group    = $group.Name # <= You need to choose an attribute here
                    Email    = $user.EmailAddress
                    Manager  = $user.Manager
                }
            }
        }
    } | Export-Csv 'C:\Users\Downloads\Members_and_Groups.csv'
    

    上面的代码将Field Manager值返回为 CN=经理id,CN=用户,DC=ab,DC=cd csv格式。管理器字段由CN用户类型和域详细信息绑定。期望是替换这些,从字符串中仅提取管理器id并将其分配给类属性manager。我是个初学者,在网上找不到任何有用的东西。有人能帮我吗?

    1 回复  |  直到 1 年前
        1
  •  1
  •   Santiago Squarzon    1 年前

    在类定义中添加一个构造函数,您可以从管理器的可分辨名称中提取通用名称。类中使用的正则表达式模式的详细信息 .ctor 可以在这里找到: https://regex101.com/r/tAx4jM/1 .

    class CustomAdInfo {
        $UserName
        $Group
        $Email
        $Manager
    
        CustomAdInfo($user, $group) {
            $this.UserName = $user.SamAccountName
            $this.Group = $group.Name
            $this.Email = $user.EmailAddress
            $this.Manager = $user.Manager -replace '^CN=|(?<!\\),.+'
        }
    }
    
    [char[]] ([char] 'a'..[char] 'z') | ForEach-Object {
        $getADUserSplat = @{
            Filter         = "Name -like '$_*'"
            Properties     = 'SamAccountName', 'memberOf', 'EmailAddress', 'Manager'
            ResultPageSize = 256
            SearchBase     = 'CN=Users,DC=ab,DC=cd'
        }
        foreach ($user in Get-ADUser @getADUserSplat) {
            foreach ($group in $user.MemberOf | Get-ADGroup) {
                [CustomAdInfo]::new($user, $group)
            }
        }
    } | Export-Csv 'C:\Users\Downloads\Members_and_Groups.csv'
    
    推荐文章