Проблемы с вводом - PullRequest
       4

Проблемы с вводом

0 голосов
/ 16 марта 2020

Я создал скрипт для добавления Send on Behalf Perms для DG on prem в гибридной среде, но у меня возникли некоторые проблемы при обработке списка имен. Если вы добавляете одно имя, это прекрасно, добавьте другое, и оно удалит старое и добавит новое. Вот как это. Таким образом, команда, которая обычно выводит список имен, разделенных запятой, затем добавляет их все и работает нормально. Скрипт позволяет мне перечислить их, однако не может найти записи. Может кто-нибудь предложить почему или редактирование, которое сделает эту работу?

#Script prompts for the required information needed to perform the required actions. 
$Distro = Read-Host 'Insert Distribution Group to check perms.'
$DGroup = Read-Host 'Insert Distribution Group Name e.g. DG-Test@test.com'
$username = Read-Host 'Insert User who needs Send On Behalf. Please include all shown in the last step seperate each name by a comma. Format is First Lastname.'

#Displys the current settings for Send on Behalf rights for the DG.

Get-DistributionGroup $Distro | FL GrantSendOnBehalfTo

Read-Host -Prompt "Press Enter to proceed to next step"

#Now script adds the required permissions input at the beginning.

Set-DistributionGroup -Identity $DGroup -GrantSendOnBehalfTo $username

Read-Host -Prompt "Press Enter to proceed to next step"

#Now the script shows the current permissions after changes

Get-DistributionGroup $Distro | FL GrantSendOnBehalfTo

Read-Host -Prompt "Press Enter to exit"

В идеале я буду выглядеть разделенным, поэтому он отображает текущие значения пермисов, а затем спрашивает, кому нужно добавить, чтобы вы могли просто добавить все имена в сценарии. Я новичок в этом, так что все еще учусь и хочу выполнить одну часть, а затем расширить ее.

Спасибо

1 Ответ

0 голосов
/ 16 марта 2020

Не могу проверить это сам, но из документов :

Чтобы добавить или удалить одно или несколько значений без влияния на существующие записи , используйте следующий синтаксис:

Set-DistributionGroup -Identity $DGroup -GrantSendOnBehalfTo @{Add="$username", "$username2"}

Поскольку вы используете Read-Host, крайне важно всегда проверять / исправлять получаемый вами ввод. В приглашении люди должны ввести First Lastname, но для однозначной идентификации пользователя или группы с включенной поддержкой почты было бы НАМНОГО лучше запросить либо SamAccountName, Emailaddress, либо UserPrincipalName.

, поскольку имена ввода могут содержать пробелы или символы, которые необходимо заключить в кавычки, я бы предложил всегда заключать в кавычки все, что вводит пользователь.

Что-то вроде:

$prompt = @"
Insert user(s) that need Send On Behalf.
You can enter multiple usernames, separated by a comma.
Allowed names are SamAccountName, EmailAddress or user full name (Firstname Lastname).

"@
# get the (string) input from the user
$username = Read-Host $prompt
# as per your latest comment and testing, simply split the input on comma
# to create an array of names. (Trim to remove unwanted whitespace)
$users = ($username -split ',').Trim()

Затем добавьте это для группы с

Set-DistributionGroup -Identity $DGroup -GrantSendOnBehalfTo @{Add=$users}

Нет необходимости говорить, что вы должны предоставить проверки для всего, что вы получаете от входов Read-Host, поэтому также проверьте, существуют ли данные $Distro и $DGroup на самом деле, прежде чем делать что-нибудь с этими значениями ..

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...