我正在尝试提供林中管理员帐户的信息报告。所有管理员帐户均以admin开头。管理员帐户的所有者已添加为活动目录中的“ extensionName”属性,我希望将此属性包括在报告中(理想情况下,然后在AD中查找所有者管理器,但这可以分为2部分)。
返回的值似乎是倍数,因此我需要为此选择第一个值,但是当我使用Select @{E={$_.extensionName[0]}}
时,CSV文件中的条目显示为@{$_.extensionName[0]=domain\username}
,我想排除{ {1}}部分
在我转圈的过程中,任何帮助将不胜感激。
@{$_.extensionName[0]=
实际输出结果显示$AdminReport = "C:\Temp\AdminReport.CSV"
Remove-Item $AdminReport -ErrorAction SilentlyContinue
$STR = "Name,SAM,Enabled,Owner,Group Memberships"
Add-Content $AdminReport $STR
$AllUsersNow = Get-ADUser –Filter "SamAccountName -Like 'admin*'"
Foreach ($ThisUser in $AllUsersNow)
{
$NameOfUser = $ThisUser.UserPrincipalName
$SamOfUser = $ThisUser.SamAccountName
$DisabledOfUser = $ThisUser.Enabled
$ExtOfUser = Get-ADuser $ThisUser -Properties extensionName | Select @{E= {$_.extensionName[0]}}
$GroupsOfUser = (Get-ADPrincipalGroupMembership -Identity $ThisUser).Name -join "; "
IF ($NameOfUser -like "*")
{
$STRNew = $NameOfUser+","+$SamOfUser+","+$DisabledOfUser+","+$ExtOfUser+","+$GroupsOfUser
Add-Content $AdminReport $STRNew
}
}
,而我只想要@{$_.extensionName[0]=domain\username}
答案 0 :(得分:1)
由于所有数据都存在于对象中,因此从字符串手动构建csv文件没有多大意义。 建立一个集合[PSCustomObject]并将其导出。
## Q:\Test\2019\02\12\SO_54652780.ps1
$AdminReportFile = "C:\Temp\AdminReport.CSV"
$AdminReport = Foreach($User in (Get-ADUser –Filter "SamAccountName -Like 'xb*'")){
[PSCustomObject]@{
Name = $User.UserPrincipalName
SAM = $User.SamAccountName
Enabled = $User.Enabled
Owner = $User.ExtensionName|Select-Object -First 1
'Group Memberships' = (Get-ADPrincipalGroupMembership -Identity $User).Name -join "; "
}
}
$AdminReport
$AdminReport | Export-Csv $AdminReportFile -NoTypeInformation
答案 1 :(得分:0)
我不熟悉extensionName属性。您可以修改这一行代码:
$ExtOfUser = Get-ADuser $ThisUser -Properties extensionName | Select @{E= {$_.extensionName[0]}}
要满足以下条件:
$ExtOfUser = (Get-ADuser $ThisUser -Properties extensionName).extensionName
如果extensionName是数组,则可能是以下内容:
$ExtOfUser = (Get-ADuser $ThisUser -Properties extensionName).extensionName[0]