【发布时间】:2021-09-10 21:41:08
【问题描述】:
目标:创建一个带有数据格式的 Export-CSV 文件,以便可以将其导入另一个程序。 数据文件包括 UIDNumber、GivenName、SurName、Record Type、Custom Field 1、Custom Value 1、End。 “自定义字段 1”和“结束”是我部门特有的填充文本。
“自定义值 1”是我遇到问题的地方。我需要让用户确定他们所在的组并将这些组名分配给以“自定义值 1”分隔的管道。输出应该是这样的:
Employee ID, First Name, Last Name, Record Type, Custom Field 1, Custom Value 1, End
123456, John, Doe, employee, ADGroup-MSelectionList, REF_USERS | PC_USERS, End
我意识到我的代码已经完成并且速度很慢,但我正在学习。对于如何从每个组中获取用户关联并构建所需的字段,我有很多想法,只是不知道如何到达那里。
这是我的代码:
# Var
$LocalVar1 = 'USERGroup1'
$LocalVar2 = 'USERGroup2'
$LocalVar3 = 'USERGroup3'
$Field1 = 'ADGroup-MSelectionList'
$Field2 = 'END'
# Getting the members of each group into one container
$Allusers1 = Get-ADGroupMember -Identity $LocalVar1 | ? {$_.objectclass -eq "user" } | Foreach-Object ({ Get-ADUser $($_.samaccountname) -Properties * }) | ? {$_.enabled -eq $True} | Select @{Name="Employee ID";Expression={$_.UIDNumber}}
$Allusers2 = Get-ADGroupMember -Identity $LocalVar2 | ? {$_.objectclass -eq "user" } | Foreach-Object ({ Get-ADUser $($_.samaccountname) -properties * }) | ? {$_.enabled -eq $True} | Select @{Name="Employee ID";Expression={$_.UIDNumber}}
$Allusers3 = Get-ADGroupMember -Identity $LocalVar3 | ? {$_.objectclass -eq "user" } | Foreach-Object ({ Get-ADUser $($_.samaccountname) -properties * }) | ? {$_.enabled -eq $True} | Select @{Name="Employee ID";Expression={$_.UIDNumber}}
# Putting all the users in one basket
$Allusers = $AllUsers1 + $Allusers2 + $Allusers3
# Removing all of the duplicate users
$Allusers | Sort "Employee_ID" -unique
# Getting the individual users out of each group with required data
$users1 = Get-ADGroupMember -Identity $LocalVar1 | ? {$_.objectclass -eq "user" } | Foreach-Object ({ Get-ADUser $($_.samaccountname) -properties * }) | ? {$_.enabled -eq $True} | Select @{Name="Employee ID";Expression={$_.UIDNumber}},@{Name="First Name";Expression={$_.GivenName}},@{Name="Last Name";Expression={$_.SurName}},@{Name="Record Type";Expression={"Employee"}},
@{Name="Custom Field 1";Expression={$Field1}},@{Name="Custom Value 1";Expression={$LocalVar1}},@{Name="END";Expression={$Field2}}
$users2 = Get-ADGroupMember -Identity $LocalVar2 | ? {$_.objectclass -eq "user" } | Foreach-Object ({ Get-ADUser $($_.samaccountname) -properties * }) | ? {$_.enabled -eq $True} | Select @{Name="Employee ID";Expression={$_.UIDNumber}},@{Name="First Name";Expression={$_.GivenName}},@{Name="Last Name";Expression={$_.SurName}},@{Name="Record Type";Expression={"Employee"}},
@{Name="Custom Field 1";Expression={$Field1}},@{Name="Custom Value 1";Expression={$LocalVar2}},@{Name="END";Expression={$Field2}}
$users3 = Get-ADGroupMember -Identity $LocalVar3 | ? {$_.objectclass -eq "user" } | Foreach-Object ({ Get-ADUser $($_.samaccountname) -properties * }) | ? {$_.enabled -eq $True} | Select @{Name="Employee ID";Expression={$_.UIDNumber}},@{Name="First Name";Expression={$_.GivenName}},@{Name="Last Name";Expression={$_.SurName}},@{Name="Record Type";Expression={"Employee"}},
@{Name="Custom Field 1";Expression={$Field1}},@{Name="Custom Value 1";Expression={$LocalVar3}},@{Name="END";Expression={$Field2}}
# This is my started attempt to get what I want, but had no luck.
Foreach ($Employee_ID in $Allusers) {
Where-Object($User1 -eq $Allusers)
}
【问题讨论】:
标签: powershell nested