Powershell:如何获取完整的通讯组列表

时间:2011-07-28 16:15:28

标签: powershell exchange-server

我是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(<<<<<< $ temp)中的$ group       + CategoryInfo:ParserError :( in:String)[],   ParseException的       + FullyQualifiedErrorId:UnexpectedToken

2 个答案:

答案 0 :(得分:2)

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

正在发生的事情是,由于您拥有|,因此将foreach视为foreach-object

答案 1 :(得分:1)

试试这个(未经测试)。使用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)
}