简体   繁体   English

Powershell脚本组合

[英]Powershell script combine

How can I combine these PowerShell cmdlets instead of running them separately? 如何合并这些PowerShell cmdlet,而不是分别运行它们? These commands are ran on our Exchange server for on premise and Office 365. 这些命令在内部和Office 365的Exchange服务器上运行。

# General
New-DistributionGroup -Name dis_its3 -DisplayName dis_its3 -Alias dis_its3 -PrimarySmtpAddress dis_its3@jackson.k12.ms.us 

# 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

In the picture shown is what the PowerShell script is automating: 在显示的图片中,PowerShell脚本正在自动化:

O365屏幕截图

You could create a function like below and throw it into a .psm1 and it import it as a module or into a .ps1 and dot source it to your session. 您可以创建如下所示的函数,然后将其放入.psm1中,然后将其作为模块导入,或者导入到.ps1中,并将其点源到会话中。 Then you can call this function like I have also shown below. 然后,您可以像下面也显示的那样调用此函数。 Mind you that you will probably want to add some error handling. 请注意,您可能需要添加一些错误处理。

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

And Then Call it like this: 然后像这样调用它:

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

However I Would be careful with this call because you are not specifying what to get. 但是,我会谨慎处理此调用,因为您没有指定获取的内容。 A lot of powershell cmdlets will just return everything and the net effect will be that you update all of them. 许多powershell cmdlet只会返回所有内容,最终结果是您将所有这些cmdlet更新。

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

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM