【问题标题】:Powershell: How to obtain the complete list of distribution groupsPowershell:如何获取完整的通讯组列表
【发布时间】:2015-11-17 22:42:27
【问题描述】:

我对 powershell 完全陌生,我以前从未接触过这种脚本语言。不过,我有一些 perl 和 bash 脚本的背景。我正在尝试实现一个小脚本,它将获取 Exchange 服务器中的 DG 列表,过滤结果以仅获取具有特定字符串的组,对应于当前年份。

示例:检查年份,在本例中为 2011 年。 过滤器名称包含“P11” 仅返回最后一个 DG 名称并解析前 7 个字符。

如何使用 Exchange 服务器中的 powershell 来执行此操作?这是我得到的:

add-pssnapin Microsoft.Exchange.Management.PowerShell.E2010

# Retrieve all DGs
$temp = Get-DistributionGroup -ResultSize Unlimited | 

foreach($group in $temp) 
{ 
write-output "GroupName:$group " 
Write-output "GroupMembers:" 
Get-DistributionGroupMember $group |ft displayname,alias,primarysmtpaddress 
write-output ‘ ‘ 

}

这会导致以下错误:

表达式或语句中出现意外标记“in”。在 C:\Users\jfb\Desktop\NewGroupProject.ps1:7 char:18 + foreach($group in

【问题讨论】:

    标签: powershell exchange-server


    【解决方案1】:

    删除$temp = Get-DistributionGroup -ResultSize Unlimited | 行中的尾随|,它应该可以正常工作。

    发生的情况是,由于您拥有|,它会将foreach 视为foreach-object

    【讨论】:

      【解决方案2】:

      试试这个(未测试)。使用 Get-Date 创建一个日期对象,并将日期格式设置为包含用星号括起来的年份的最后两位数字。这将是 Get-DistributionGroup cmdlet 的通配符。选择最后一个 DG 对象并展开其名称。

      $name = Get-Date -Format *Pyy*
      $group = Get-DistributionGroup $name | Select-Object -Last 1 -ExpandProperty Name
      
      if($group)
      {
          $group.Substring(0,7)
      }
      

      【讨论】:

      • 谢谢!如果您也可以提供帮助,请查看我的其他问题,这将是很棒的!
      猜你喜欢
      • 2017-01-22
      • 2010-12-13
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-03-24
      • 1970-01-01
      • 2013-01-16
      • 2011-10-27
      相关资源
      最近更新 更多