将变量添加到 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,我相信你已经解决了那部分...
我有一个脚本可以从包含相应组的文本文件中获取用户的经理信息,我想将结果放入 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,我相信你已经解决了那部分...