将变量添加到 powershell 中的 Select-Object 命令并输出到 excel csv

Add variable to Select-Object command in powershell and output to excel csv

我有一个脚本可以从包含相应组的文本文件中获取用户的经理信息,我想将结果放入 excel 电子表格中。

此外,我想向 Select-Objects 命令添加一个自定义变量,以便它显示为 excel 中的另一列,每个用户各自的组

这是我目前的情况:

 $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 }} 
}

目前的结果是

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
...

我希望此结果采用 excel 格式,并添加一个名为“组”的自定义列,并为每一行添加组名(例如 SSLVPN-ABC)。因此,这些列将是组、姓名、职务、部门、经理姓名、经理邮件,对于第一组,结果单元格都将是“SSLVPN-ABC”。

谢谢

像下面这样更改 select 语句。

Select-Object @{Name = "Group"; Expression = { $Group }}, 
    Name, Title, Department, 
    @{Name = "ManagerName"; Expression = { (Get-ADUser $_.Manager).Name }}, 
    @{Name = "ManagerMail"; Expression = { (Get-ADUser $_.Manager -Properties mail).Mail }} 

在这里您只是添加另一个计算的 属性,它将引用 $Group 迭代变量。请注意,这些属性是按照您要求的顺序列出的。

如果 $Group 变量不包含您可以在表达式中使用 (Get-ADGroup $searchb).Name 的名称。

正常导出到 Csv,我相信你已经解决了那部分...