Loops 使用输入变量的PowerShell循环

Loops 使用输入变量的PowerShell循环,loops,powershell,exchange-server,Loops,Powershell,Exchange Server,首先,对于PowerShell/编码,我是一个十足的白痴,如果这是一个过于简单的问题,我道歉 我有一个脚本,用于通过PowerShell在exchange中创建通讯组列表: param($name,$user=$(throw "You must specify the name of the group")) New-DistributionGroup -Name $name -OrganizationalUnit "XXX.com/Distribution Lists" Add-Distrib

首先,对于PowerShell/编码,我是一个十足的白痴,如果这是一个过于简单的问题,我道歉

我有一个脚本,用于通过PowerShell在exchange中创建通讯组列表:

param($name,$user=$(throw "You must specify the name of the group"))
New-DistributionGroup -Name $name -OrganizationalUnit "XXX.com/Distribution Lists"
Add-DistributionGroupMember -Identity "$name" -Member "$user"
第一个变量$name是组的名称,第二个变量$user是要添加到组中的用户的名称

理想情况下,我希望循环添加用户,以便有人可以使用
/script GROUPNAME User1 User2 User3 User4 User5
调用脚本


有人能给我提供一些见解或给我指出正确的方向吗?

你可以将
$user
,或者更确切地说
$users
,视为一个数组:

$users | %{ Add-DistributionGroupMember -Identity "$name" -Member $_ }
(可能有更好的方法添加多个用户,但以上内容应该可以帮助您开始。)

该脚本的调用方式如下:

.\script GROUPNAME User1,User2,User3

试着这样做:

-- script --
param($name, [string[]]$users=$(throw "You must specify the name of the user(s)"))

New-DistributionGroup -Name $name -OrganizationalUnit "XXX.com/Distribution Lists" 
foreach($user in $users)
{
    Add-DistributionGroupMember -Identity $name -Member $user
} 

您可以更改Name参数的类型以接受多个名称,并将这些名称传递到
Add DistributionGroupMember
cmdlet:

param($name, [string[]]$users=$(throw "You must specify the name of the user(s)"))

$dg = New-DistributionGroup -Name $name -OrganizationalUnit "XXX.com/Distribution Lists" 
$users | Add-DistributionGroupMember -Identity $dg

你不想为每个用户创建组。谢谢你,我刚刚尝试过,但它只选择了作为变量输入的名字。例如,./script组User1 User2。它拾取组和用户1,但忽略用户2必须指定以逗号分隔的用户,例如
User1、user2、user3
。这就是为PowerShell函数指定数组参数的方式。@manojlds Thx指出了这一点。不太注意脚本的实际内容。:-)谢谢你们的意见,我很感激。所以它现在似乎正在收集变量:用户是:泰勒·艾伦。唯一的问题是,它只是将第一个用户添加到组中。越来越近了。它现在将$user变量拾取为“User1 User2”,但现在无法验证参数“Member”上的参数。参数为空。提供一个非空参数。