首页 > 解决方案 > 拉动 DG 的 PS 输出中的触点

问题描述

希望有人可以帮助我...我有一个脚本,它接受组输入并剔除该组的所有成员。对于 DG,它不会列出联系人,因为 PS 不喜欢“SamAccountName”输出。我有它,因此您可以搜索组选择您想要的组,然后它将运行输出。我有以下功能,它将搜索组但不输出结果。

    function Get-MembersofGroup {

$GroupName = Get-ADGroup -Filter "Name -like '*$($User.text)*'" | Select-Object Name,ObjectClass,SamAccountName | Sort-Object -Property Name | Out-GridView -PassThru -Title 'Group selection. Please select a Group to proceed.'
        
)
function Get-Nested {
param(
    [parameter(mandatory)]
    [string]$GroupName
)

$ParentMembers = (Get-ADGroup $GroupName -Properties Members).members
$domains       = (get-adforest).domains

foreach($member in $ParentMembers){
    $ADObject = 
    try{
        Get-ADObject $member -ErrorAction Stop
    }
    catch {
        foreach($domain in $domains){
            try{
                Get-ADObject $member -Server $domain -ErrorAction Stop
            }
            catch{
                continue
            }
        }
    }
    
    switch($ADObject.objectClass){
        'user'{
            Get-ADUser $ADObject | 
            select-object Name,samaccountname,DistinguishedName,objectClass
            
        }
        'group'{
            Get-Nested $ADObject.DistinguishedName
        }
        'contact'{
            $ADObject | 
            select-object Name,
            @{n='samaccountname';e={''}},DistinguishedName,objectClass
            
        }
        default {
            [pscustomobject]@{
                Name              = '-'
                samaccountname    = '-'
                DistinguishedName = $member
                objectClass       = 'Class not addressed in function' 
            }
        }
    }
}

}

Get-Nested $groupName |
Select-Object * -Unique |
select-object @{n='MemberOfGroup';e={$groupName}},*
}

Get-MembersOfGroup  | 
Out-GridView -OutputMode Single

我之前的代码出于明显的原因省略了联系人:

    function MembersOfGroup {
    Try {
        $GroupID = Get-ADGroup -Filter "Name -like '*$($User.text)*'" | Select-Object Name,ObjectClass,SamAccountName | Sort-Object -Property Name | Out-GridView -PassThru -Title 'Group selection. Please select a Group to proceed.'
        
        #Title will appears at the top of the second Gridview

        $title = $('Members of ' + $($GroupID.SamAccountName) + ' -- ' + '')

        (Get-ADGroupMember -Identity $($GroupID.SamAccountName)) | Get-ADUser -Property DisplayName,SamAccountName | Select-Object Name,ObjectClass,DisplayName,SamAccountName | Sort-Object -Property Name | Out-GridView -OutputMode Single -Title "$title"

}

谢谢

标签: powershell

解决方案


推荐阅读