Комбинация скриптов Powershell

Как я могу объединить эти командлеты PowerShell вместо того, чтобы запускать их по отдельности? Эти команды выполняются на нашем сервере Exchange для локальной среды и Office 365.

# General
New-DistributionGroup -Name dis_its3 -DisplayName dis_its3 -Alias dis_its3 -PrimarySmtpAddress [email protected] 

# Ownership
Set-DistributionGroup -Identity "dis_its3" –ManagedBy Robinson Mykal -BypassSecurityGroupManagerCheck 

# Membership approval
Get-DistributionGroup | Set-DistributionGroup -MemberJoinRestriction:closed -MemberDepartRestriction:closed 

# Delivery Management
Set-DistributionGroup "dis_its3" -RequireSenderAuthenticationEnabled $False

На изображении показано, что автоматизирует скрипт PowerShell:

Снимок экрана O365


person Mykal    schedule 21.07.2016    source источник
comment
Что значит комбинировать?   -  person Ansgar Wiechers    schedule 21.07.2016
comment
Объедините, как и все сценарии, в один текст, поэтому, когда я скопирую и вставлю его в powershell, он будет выполнен. Скрипты работают, потому что я их протестировал, но мне приходится копировать и вставлять их один за другим. Я хочу иметь возможность скопировать их все сразу и вставить все, а затем выполнить.   -  person Mykal    schedule 21.07.2016
comment
Я не знаю, какие символы или параметры поставить между скриптами, чтобы они выполнялись без ошибок.   -  person Mykal    schedule 21.07.2016
comment
Что произойдет, если вы скопируете все команды в файл .ps1 и запустите его? Вы получаете какие-либо ошибки?   -  person sodawillow    schedule 21.07.2016
comment
Обычно вы просто ставите один за другим, каждый в отдельной строке. Вы получаете ошибки, когда вы делаете это? Если да, то что они говорят?   -  person Ansgar Wiechers    schedule 22.07.2016


Ответы (1)


Вы можете создать функцию, как показано ниже, и добавить ее в .psm1, а затем импортировать ее как модуль или в .ps1 и добавить ее в свой сеанс. Затем вы можете вызвать эту функцию, как показано ниже. Имейте в виду, что вы, вероятно, захотите добавить некоторую обработку ошибок.

 function Set-CustomDistributionGroup
 {
     [CmdletBinding()]
     param
     (
         [Parameter(
             Position = 0,
             Mandatory = $true
         )]
         [ValidateNotNullorEmpty()]
         [Alias('DistributionGroupName')]
         [String] $Name,

         [Parameter(
             Position = 1,
             Mandatory = $true
         )]
         [ValidateNotNullorEmpty()]
         [Alias('DistributionGroupDisplayName')]
         [String] $DisplayName,

         [Parameter(
             Position = 2,
             Mandatory = $true
         )]
         [ValidateNotNullorEmpty()]
         [Alias('DistributionGroupAlias')]
         [String] $Alias,

         [Parameter(
             Position = 3,
             Mandatory = $true
         )]
         [ValidateNotNullorEmpty()]
         [Alias('DistributionGroupPrimarySmtpAddress')]
         [String] $PrimarySmtpAddress,

         [Parameter(
             Position = 4,
             Mandatory = $true
         )]
         [ValidateNotNullorEmpty()]
         [Alias('DistributionGroupManagedBy')]
         [String] $ManagedBy        
     )
     process
     {
         # General
         New-DistributionGroup -Name $Name -DisplayName $DisplayName -Alias $Alias -PrimarySmtpAddress $PrimarySmtpAddress

         # Ownership
         Set-DistributionGroup -Identity $Name –ManagedBy $ManagedBy -BypassSecurityGroupManagerCheck 

         # Membership approval
         Get-DistributionGroup | Set-DistributionGroup -MemberJoinRestriction:closed -MemberDepartRestriction:closed 

         # Delivery Management
         Set-DistributionGroup -Identity $Name -RequireSenderAuthenticationEnabled $False
     }
 }

И затем назовите это так:

 Set-CustomDistributionGroup -Name 'dis_its3' -DisplayName 'dis_its3' -Alias 'dis_its3' -PrimarySmtpAddress 'jackson.k12.ms.us' -ManagedBy 'Robinson Mykal'

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

 # Membership approval
 Get-DistributionGroup | Set-DistributionGroup -MemberJoinRestriction:closed -MemberDepartRestriction:closed
person jkdba    schedule 21.07.2016