Динамическое меню Powershell на основе записей разрешений почтового ящика - PullRequest
0 голосов
/ 22 ноября 2018

У меня проблемы с созданием динамического меню из записей разрешений почтовых ящиков в PowerShell.Приведенная ниже функция получает список записей разрешений для выбранного почтового ящика и выводит таблицу.

Function AuditSingleMailboxPermission($mbox) {
If ($mbox -like $null){
    Write-Host "Please select the mailbox from the list below"
    $mbox = SelectMailbox
  }

  $mboxPermissions = Get-MailboxPermission $mbox | where {$_.User -like "*@*"}
  Return $mboxPermissions
}

Следующая функция использует вывод предыдущего для построения меню.

Function SelectMailboxPermission($mbox) {
$rights = (AuditSingleMailboxPermission -mbox $mbox).User
Write-Host $rights
$menu = @{}
  for ($i=1;$i -le $rights.count; $i++) {
    Write-Host "$i. $($rights[$i-1])"
    $menu.Add($i,($rights[$i-1]))
  }
  [int]$ans = Read-Host "Enter selection"
  $selection = $menu.Item($ans)
  Return $selection
}

Строка прав доступа Write-Host $ показывает полное имя пользователя.Однако меню возвращает только первую букву имени пользователя.Это проблема, потому что выходные данные этой функции используются для удаления пользовательских разрешений в почтовом ящике.Я не могу понять это ради моей жизни.

1 Ответ

0 голосов
/ 22 ноября 2018

Если (AuditSingleMailboxPermission -mbox $mbox).User возвращает только один элемент, он вернет один объект, а не массив с длиной один.Затем, когда вы ссылаетесь на $rights[0], он не возвращает первый объект массива, но первый символ String представления объекта.

Приведение к Array должно решить проблему:

$rights = [Array](AuditSingleMailboxPermission -mbox $mbox).User

Общий пример:

PS C:\> ("FOO", "BAR", "BAZ" | Select-Object -First 1)[0]
F

PS C:\> ("FOO", "BAR", "BAZ" | Select-Object -First 2)[0]
FOO
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...