编辑CSV标头

时间:2015-09-11 16:01:14

标签: powershell csv

我有一个要求。作为其中的一部分,我尝试将Exchange邮箱上的ACL导出为CSV并稍后导入它。 Exchange邮箱权限的一个属性是一个数组,因此我们的CSV标头有$_.AccessRights作为数组的标头,因为我们使用Select {$_.AccessRights}来导出此数组。

导入时出现问题,因为Import-Csv不会这样。我试图找到一种方法只为该属性编辑标题中的$_.,并在再次导入之前重新编写该文件。到目前为止,我已经Import-Csv -HeaderGet-Object-replace一起尝试过没有运气。还有其他想法吗?

编辑:我实际上不仅仅是尝试Import-Csv而是尝试运行运行Add-MailboxPermission - Exchange脚本来导入邮箱上的ACL。所以,我尝试运行的代码是

Import-Csv $ACLExportFile | foreach { Add-MailboxPermission -Identity $_.Identity -user $_.user -AccessRights $_.AccessRights | Out-File $LogACLImport -append }

其中$ ACLExportFile是我之前使用

导出的权限文件
Get-Mailbox -identity $OldUser | Get-MailboxPermission | Select {$_.AccessRights}, Deny, InheritanceType, User, Identity, IsInherited, IsValid | Export-Csv $ACLExportFile

我得到的示例文件是 Uploaded to Google Drive here

1 个答案:

答案 0 :(得分:0)

不确定理解这个问题。 看看Select-Object CmdLet,您可以提供一个可以作为新计算属性的属性参数。要创建计算的属性,请使用哈希表。有效密钥是: - 名称(或标签) - 表达或

-Property @{Name="AccessRights";Expression={$_.AccessRights}}

编辑: 在您的情况下,导出时应使用:

Get-Mailbox -identity $OldUser | Get-MailboxPermission | Select @{Name="AccessRights"; Expression={$_.AccessRights}}, Deny, InheritanceType, User, Identity, IsInherited, IsValid | Export-Csv $ACLExportFile

这样你就可以像这样导入:

Import-Csv $ACLExportFile | foreach { Add-MailboxPermission -Identity $_.Identity -user $_.user -AccessRights $_.AccessRights | Out-File $LogACLImport -append }