首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Powershell脚本,用于从组的文本文件中获取姓名、头衔、部门、经理姓名和经理电子邮件

Powershell脚本,用于从组的文本文件中获取姓名、头衔、部门、经理姓名和经理电子邮件
EN

Stack Overflow用户
提问于 2021-01-11 05:06:03
回答 1查看 61关注 0票数 0

我正在尝试编写一个脚本,该脚本从包含目标组名称(已过滤为至少有一个活动用户)的文本文件中读取并获取以下参数:姓名、职位、部门、经理姓名和经理电子邮件。理想情况下,结果仅显示已启用且具有经理姓名和电子邮件的用户。

根据一些密集的googling搜索和我在编码和ps方面的有限知识,这是我到目前为止所拥有的:

代码语言:javascript
复制
[string[]]$arrayFromFile = Get-Content -Path 'C:\sslvpn-active.txt'
foreach($group in $arrayFromFile){
    $searchb = "CN="+"$group"+",OU=SSLVPN,OU=UserGroupsRAS,DC=xi,DC=xxxinc,DC=net"

    foreach($user in $searchb)
        {
            Write-Output $group
            Write-Output "----------------------------"
            Get-ADUser -Filter { Enabled -eq $true } -Properties Title,Department,Manager -SearchScope Subtree | select Name, Title, Department, @{n="ManagerName";e={get-aduser $_.manager | select -ExpandProperty name}}, @{n="ManagerMail";e={get-aduser $_.manager -properties mail | select -ExpandProperty mail}}

        }
 }

文本文件如下所示

代码语言:javascript
复制
SSLVPN-APC
SSLVPN-XYZ
SSLVPN-Microsoft
SSLVPN-Google
...

我希望结果看起来像这样

代码语言:javascript
复制
SSLVPN-ABC
----------------------
Name        : Joe Smith
Title       : IT Engineer 2
Department  : IT Support
ManagerName : Billy George
ManagerMail : Billy.George@xxx.com

Name        : Matt Damon
Title       : IT Engineer 3
Department  : IT Support
ManagerName : Billy George
ManagerMail : Billy.George@xxx.com

SSLVPN-XYZ
----------------------
Name        : Jen Loo
Title       : Product Designer 3
Department  : Product Design
ManagerName : Ben Smit
ManagerMail : Ben.Smit@xxx.com
...

任何帮助都是非常感谢的!谢谢

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2021-01-11 05:52:06

看起来你永远不会获得群组成员资格。从您的示例开始,尝试以下代码:

代码语言:javascript
复制
    $Properties = @( 'Title', 'Department', 'Manager' )
    
    [string[]]$arrayFromFile = Get-Content -Path 'C:\sslvpn-active.txt'
    foreach($group in $arrayFromFile){
        $searchb = "CN="+"$group"+",OU=SSLVPN,OU=UserGroupsRAS,DC=xi,DC=xxxinc,DC=net"
    
        Get-ADGroupMember $searchb |
        Get-ADUser -Properties $Properties |
        Where-Object{ $_.Enabled } |
        Select-Object Name, Title, Department, 
            @{Name = "ManagerName"; Expression = { (Get-ADUser $_.Manager).Name }}, 
            @{Name = "ManagerMail"; Expression = { (Get-ADUser $_.Manager -Properties mail).Mail }}
    }

注意:内部循环的缺失。然而,我不确定你是否需要这个循环。此外,您可能不需要连接可分辨名称。

代码语言:javascript
复制
    $Properties = @( 'Title', 'Department', 'Manager' )

    Get-Content -Path 'C:\sslvpn-active.txt' |
    Get-ADGroupMember |
    Get-ADUser -Properties $Properties |
    Where-Object{ $_.Enabled } |
    Select-Object Name, Title, Department, 
        @{Name = "ManagerName"; Expression = { (Get-ADUser $_.Manager).Name }}, 
        @{Name = "ManagerMail"; Expression = { (Get-ADUser $_.Manager -Properties mail).Mail }

这在某种程度上取决于您的组的名称,如果它们在环境中是唯一的,等等。

您还可以将一些表达式放在顶部:

代码语言:javascript
复制
    $Properties = @( 'Title', 'Department', 'Manager' )
    
    $ManagerName = @{Name = "ManagerName"; Expression = { (Get-ADUser $_.Manager).Name }}
    $ManagerMail = @{Name = "ManagerMail"; Expression = { (Get-ADUser $_.Manager -Properties mail).Mail }}
    
    Get-Content -Path 'C:\sslvpn-active.txt' |
    Get-ADGroupMember |
    Get-ADUser -Properties $Properties |
    Where-Object{ $_.Enabled } |
    Select-Object Name, Title, Department, $ManagerName, $ManagerMail

我想添加一个示例来获取您提到的格式:

代码语言:javascript
复制
$ADProps = @( 'Title', 'Department', 'Manager' )
$Props =
$ADProps +
@(
    $ManagerName = @{Name = "ManagerName"; Expression = { (Get-ADUser $_.Manager).Name }}
    $ManagerMail = @{Name = "ManagerMail"; Expression = { (Get-ADUser $_.Manager -Properties mail).Mail }}
)

ForEach($Group in Get-Content -Path 'C:\temp\sslvpn-active.txt' )
{
    $Group = Get-ADGroup $Group

    $Group |
    Get-ADGroupMember |
    Get-ADUser -Properties $ADProps |
    Select-Object $Props |
    ForEach-Object{
        $Group.Name
        '----------------------'
        ($_ | Format-List | Out-String).Trim()
        ""
    }
}

如果我想到了更好的方法,请进一步编辑。

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

https://stackoverflow.com/questions/65658498

复制
相关文章

相似问题

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