【发布时间】:2018-10-03 14:53:03
【问题描述】:
我想创建一个完整的邮箱权限报告并将其导出到 PowerShell 中的 CSV。
$report = @()
$mailboxes = Get-Mailbox -ResultSize unlimited -RecipientTypeDetails sharedmailbox
foreach ($mailbox in $mailboxes)
{
$permissions = Get-Mailbox $mailbox.PrimarySmtpAddress | Get-MailboxPermission | Select-Object user, accessrights
$users = $permissions.user
$accessRights = $permissions.accessrights
$sendAsPermissions = Get-Mailbox $mailbox.PrimarySmtpAddress | Get-ADPermission | Where-Object {$_.extendedrights -eq "send-as"} | select -ExpandProperty user
$sendOnBehalfPermissions = Get-Mailbox $mailbox.PrimarySmtpAddress | select -ExpandProperty grantsendonbehalfto
$properties = @{
Identity = $mailbox.PrimarySmtpAddress
Users = ($permissions.user -join "`n")
AccessRights = ($permissions.accessrights -join "`n")
SendAs = ($sendAsPermissions -join "`n")
SendOnBehalf = ($sendOnBehalfPermissions -join "`n")
}
$mailboxObject = New-Object -TypeName psobject -Property $properties
#$mailboxObject | select identity, users, accessrights | Export-Csv -Append -NoTypeInformation -Path c:\temp\test.csv
$mailboxObject | select identity, users, accessrights, sendas, sendonbehalf | out-gridview
}
gridview 准确显示了我想要的内容,但我很难将其正确导出到 CSV。
【问题讨论】:
-
CSV 有什么问题?
-
在 CSV 中,'users' 列的第一条记录放置在 'users' 列中,但所有后续记录都放置在 'identity' 列中。我似乎无法让 CSV 与 Out-Gridview 匹配。
-
您好尝试在 $mailboxobject 上将 psobject 替换为 pscustomobject
-
为什么需要这样的 CSV 输出?在 csv 中存储换行符分隔的字符串会产生奇怪的输出。这就是换行符出现在文件中的方式。我不认为你想要的会起作用。话虽如此,如果您显示 csv 的外观以及您希望它的外观,可能会更容易。我会选择将数组扁平化为分号字符串以允许每个身份输入一个条目,或者为每个权限创建一行并复制身份列,这样在查看一个权限条目时数据不会丢失。
-
您基本上是要求在 csv 输出中插入任意空格以获得更多表格输出吗? csv 格式正确,PowerShell(和其他应用程序)按原样正确读取。更改它会将不需要的数据引入输出,从而影响其读取方式。
标签: powershell exchange-server export-csv