我是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
答案 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)
}