【问题标题】:Powershell script combinePowershell 脚本组合
【发布时间】:2016-11-25 09:22:19
【问题描述】:

如何组合这些 PowerShell cmdlet 而不是单独运行它们?这些命令在我们的 Exchange 服务器上运行,用于内部部署和 Office 365。

# 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

图中显示的是 PowerShell 脚本正在自动化的内容:

【问题讨论】:

  • 什么是“结合”?
  • 合并,因为将所有脚本放入一个文本正文中,因此当我将其复制并粘贴到 powershell 中时,它将执行。这些脚本可以正常工作,因为我已经对其进行了测试,但是我必须一一复制并粘贴它们。我希望能够一次复制所有这些并粘贴它们然后执行。
  • 我不知道在脚本之间放置什么字符或参数,以便它们执行时不会出错。
  • 如果您复制 .ps1 文件中的所有命令并运行它会发生什么?你有什么错误吗?
  • 通常你只是一个接一个地放置,每一个在一个单独的行中。当你这样做时,你会得到错误吗?如果是这样,他们怎么说?

标签: powershell exchange-server office365 cmdlets exchange-management-shell


【解决方案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 cmdlet 只会返回所有内容,最终效果是您更新所有这些。

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-06-03
    • 2023-03-18
    • 1970-01-01
    相关资源
    最近更新 更多