我有一个CSV文件中包含广告组的列表:Input_ADGroup.csv
列A如下所示:
CN
ADgroup1
ADgroup2
我已经有一些代码在output.csv文件中列出了组的所有用户,但是我缺少ADgroup的名称。因此,尚不清楚哪些用户属于哪个组。
$Manager = @{Name = "Manager"; Expression = {%{(Get-ADUser $_.Manager -Properties DisplayName).DisplayName}}}
$Manager_Location = @{Name = "Manager_Location"; Expression = {%{(Get-ADUser $_.Manager -Properties Office).Office}}}
$Fields = @(
'SamAccountName'
'CN'
'DisplayName'
'Office'
'mail'
'Department'
$Manager
$Manager_Location
)
Import-Csv -Path H:\Test\Input_ADGroup.csv |
ForEach-Object {
Get-ADGroup -Filter "CN -eq '$($_.CN)'" -Properties * -ErrorAction SilentlyContinue |
Get-ADGroupMember | Get-ADUser -properties * | Select $Fields
} | Export-Csv -Path H:\Test\Output_ADGroup.csv -NoTypeInformation
H:\Test\Output_ADGroup.csv
那么是否有可能获得显示“ source-ADgroup” ...的列或另一种使用ADGroup名称或其他名称破坏列表的格式?
答案 0 :(得分:0)
由于$_
中已经有广告组名称,因此您可以通过更改以下内容来向Select-Object
添加一个计算所得的属性:
Get-ADGroup -Filter "CN -eq '$($_.CN)'" -Properties * -ErrorAction SilentlyContinue |
Get-ADGroupMember | Get-ADUser -properties * | Select $Fields
为此(将第一个组名保存为变量,以免与稍后在管道中使用的$_
混淆):
$GroupName = $_.CN
Get-ADGroup -Filter "CN -eq '$($_.CN)'" -Properties * -ErrorAction SilentlyContinue |
Get-ADGroupMember | Get-ADUser -properties * | Select ($Fields+@{n="Group";e={$GroupName}})
感谢@LotPings和@Maikel指出注释中错误使用$_
的问题
注意:请记住括号,否则您将收到类似以下的错误:
选择对象:找不到一个接受参数n =“ Group”; e = {$$ GroupName}
的位置参数
答案 1 :(得分:0)
@Lotpings @robdy-感谢您的投入,非常感谢。参见下面的代码
Import-Csv -Path H:\Test\Input_ADGroup.csv |
ForEach-Object {
Get-ADGroup -Filter "CN -eq '$($_.CN)'" -Properties CN -PipelineVariable name -ErrorAction SilentlyContinue |
Get-ADGroupMember | Get-ADUser -properties * | Select ($Fields+@{n="Group";e={$name}})
} | Export-Csv -Path H:\Test\Output_ADGroup.csv -NoTypeInformation
H:\Test\Output_ADGroup.csv
最后一点:AD组显示为CN = Groupname,OU = ... OU = ...等
我无法显示“ Groupname”,但这确实不是问题。
答案 2 :(得分:0)
IMO,我的其他建议解决方案是从输入中更有效地应用同一CN:
$Data = ForEach($CN in (Import-Csv -Path H:\Test\Input_ADGroup.csv).CN) {
Get-ADGroup -Filter "CN -eq '$CN'" -Properties CN -ErrorAction SilentlyContinue |
Get-ADGroupMember | Get-ADUser -Properties * | Select-Object ($Fields+@{n="Group";e={$CN}})
}
$Data
$Data | Export-Csv -Path H:\Test\Output_ADGroup.csv -NoTypeInformation