2015-09-11 4 views
2

У меня есть требование. В рамках этого процесса я пытаюсь экспортировать ACL в почтовый ящик Exchange в CSV и импортировать его немного позже. Одним из атрибутов разрешений почтового ящика Exchange является массив, поэтому наш заголовок CSV имеет $_.AccessRights в качестве заголовка массива, так как мы используем Select {$_.AccessRights} для экспорта этого массива.Редактирование заголовка CSV

Проблема возникает при импорте, потому что Import-Csv не понравится. Я пытаюсь найти способ редактировать только $_. из заголовка только для этого атрибута и перезаписать файл перед импортом. Попробуйте Import-Csv -Header и Get-Object с -replace, которому не повезло. Любые другие мысли?

Редактировать: Я на самом деле не просто пытаюсь сделать Import-Csv, но на самом деле пытается запустить run 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 

Sample-файл, который я получил, Uploaded to Google Drive here

+0

Вы можете оставить свой сценарий? –

+1

Невозможно воспроизвести. 'Импорт-Csv' импортирует CSV с заголовком' $ _. AccessRights' просто отлично. Просьба представить доказательства (код и полное сообщение об ошибке). –

+1

Как и образец вашего csv для тестирования! – Matt

ответ

0

Не уверен, чтобы понять вопрос. Посмотрите на Select-Object CmdLet, вы можете указать параметр свойства, который может быть новым рассчитанным свойством. Чтобы создать рассчитанное свойство, используйте хеш-таблицу. Допустимые ключи: - Имя (или Label) - Выражение или

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

Edit: В вас случае, при экспорте следует использовать:

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 } 
+0

Спасибо. @JPBlanc. Я попробовал 'Select-Object', но он сгенерировал пустой файл. – mutukrp

+0

@MuthukumarP, вы должны отредактировать свой вопрос и добавить свой код, если хотите получить дополнительную помощь. – JPBlanc

+0

Чинги @JPBlanc. Это отсортировало мой вопрос :) – mutukrp

Смежные вопросы