Не могу проверить это сам, но из документов :
Чтобы добавить или удалить одно или несколько значений без влияния на существующие записи , используйте следующий синтаксис:
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
на самом деле, прежде чем делать что-нибудь с этими значениями ..