我有一个要求。作为其中的一部分,我尝试将Exchange邮箱上的ACL导出为CSV并稍后导入它。 Exchange邮箱权限的一个属性是一个数组,因此我们的CSV标头有$_.AccessRights
作为数组的标头,因为我们使用Select {$_.AccessRights}
来导出此数组。
导入时出现问题,因为Import-Csv
不会这样。我试图找到一种方法只为该属性编辑标题中的$_.
,并在再次导入之前重新编写该文件。到目前为止,我已经Import-Csv -Header
和Get-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
答案 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 }