我正在制作邮箱及其权限列表。所以我做了这个小脚本
$Users = Import-Csv -Path C:\Outlookcache_2019.csv -Delimiter ";"
foreach ($User in $Users) {
$Permissions = Get-MailboxPermission -Identity
$User.UserPrincipalName | select Identity,AccessRights
$Output = New-Object psobject -Property @{
UserPrincipalName = $User.UserprincipalName
Identity = $Permissions.Identity
AccessRights = $Permissions.accessrights
}
$Output | Export-Csv -Path C:\Mail_Permissions.csv -Encoding
UTF8 -NoTypeInformaiton
}
我需要在列表中的UserPrincipalName形式的CSV,因为我需要合并结果与另一个EXCEL列表。问题是当我的条目在Permission Like中有超过一个用户时,例如:身份访问权限约翰读,写简读
这个脚本将它们格式化为{John,Jane} {Read,Write,Read},因为它将它们加在一起。我如何格式化它,使第一个条目中的Identity位于一行中,第二个条目在另一行中。这样我就可以在Excel文件中的一个单元格中有两行。提前感谢
我还没有尝试过Regex是否有可能用它来格式化它。我是PowerShell新手
1条答案
按热度按时间iyr7buue1#
所以如果我理解正确的话,您希望输出中的每条记录都代表一个可以访问CSV中邮箱的委托?
你可以这样做:
但是请记住,这将只获得具有“读取和管理”访问权限的代理。这里有一些更彻底的东西,也显示谁有“发送为”访问权限。
不过,看看这个算法,我意识到如果你把你的$Output存储到一个哈希表而不是一个列表中,它会更快。由于我们正在检查具有“读取和管理”的所有代表的完整列表,因此每个具有“SendAs”的代表是否应将它们合并到同一记录中。如果你的数据要大幅扩展,看看你是否能想出一个更好的算法。
如果你想看看谁也有“代表发送”权限,那会增加复杂性,但希望这有助于你走上正确的方向。