Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/powershell/12.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
PowerShell-将新用户添加到广告组的选择中_Powershell_Active Directory_Powershell 2.0 - Fatal编程技术网

PowerShell-将新用户添加到广告组的选择中

PowerShell-将新用户添加到广告组的选择中,powershell,active-directory,powershell-2.0,Powershell,Active Directory,Powershell 2.0,我已经创建了一个表单来创建新的广告帐户。脚本的一部分根据新用户的角色(医生、护士、管理员或其他)确定新用户将添加到哪些组,这些角色以下拉选择框的形式在以下代码中捕获: Write-Host "Based on this information" $FFN "has been added to the following Active Directory Groups:" Write-Host $ADGroup01 = Get-ADGroup "_XA_App_XenApp" |select

我已经创建了一个表单来创建新的广告帐户。脚本的一部分根据新用户的角色(医生、护士、管理员或其他)确定新用户将添加到哪些组,这些角色以下拉选择框的形式在以下代码中捕获:

Write-Host "Based on this information" $FFN "has been added to the following Active Directory Groups:"
Write-Host 

$ADGroup01 = Get-ADGroup "_XA_App_XenApp" |select -expandproperty name -first 1
Write-Host $ADGroup01
$ADGroup02 = Get-ADGroup "Web Proxy Users" |select -expandproperty name -first 1
Write-Host $ADGroup02
if($RadioButton1.Checked -eq $true)
    {
    $ADGroup03 = Get-ADGroup "allrot" |select -expandproperty name -first 1
    Write-Host $ADGroup03
    }
Else
    {
    $ADGroup03 = Get-ADGroup "alltpo" |select -expandproperty name -first 1
    Write-Host $ADGroup03
    }
if ($Role -eq "Doctor" -Or $Role -eq "Nurse")
    {
    $ADGroup04 = Get-ADGroup "PACS Web Access" |select -expandproperty name -first 1
    Write-Host $ADGroup04
    }
if ($Role -eq "Doctor")
    {
    $ADGroup05 = Get-ADGroup "CH-MFD" |select -expandproperty name -first 1
    Write-Host $ADGroup05
    $ADGroup06 = Get-ADGroup "ED-MFP" |select -expandproperty name -first 1
    Write-Host $ADGroup06
    $ADGroup07 = Get-ADGroup "SU-MFD" |select -expandproperty name -first 1
    Write-Host $ADGroup07
    }
Write-Host 
在脚本中,这段代码在实际帐户创建过程中被调用:

Add-ADPrincipalGroupMembership -Identity $UN -memberof $ADGroup01, $ADGroup02, $ADGroup03, $ADGroup04, $ADGroup05, $ADGroup06, $ADGroup07
我面临的问题是,如果用户选择护士、管理员或其他,我会出现以下错误:

添加ADPrincipalGroupMembership:无法验证参数'MemberO'上的参数 参数为null、空或参数集合conta的元素 ins为空值。请提供不包含任何空值的集合,并且 然后重试该命令。“

我知道这是因为在最后一个$ADGroup[x]中没有捕获值,并且没有创建一组if语句来检查每个$ADGroup是否包含数据,我想知道是否有更优雅的解决方案

一如既往,感谢您抽出时间进行回顾,并乐意在需要时提供更多信息

更新-根据@Martin的建议,我在脚本中实现了以下代码

$UN = "zooz"
$Role = "Nurse"
$Department = "Surgical"

If ($Role -eq "Doctor" -and $Department -eq "Surgical")
{
$ADGroups = @(
"PACS Web Access"
"CH-MFD"
"ED-MFP"
"SU-MFD"
)
}

If ($Role -eq "Nurse" -and $Department -eq "Surgical")
{
$ADGroups = @(
"_XA_App_XenApp"
"Web Proxy Users"
"allrot"
)
}

for ($i=0; $i -lt $ADGroups.length; $i++) {
Add-ADPrincipalGroupMembership -Identity $UN -memberof $adgroups[$i] 
}

制作一个对象
$adgroups
,并将所需的组添加到其中

$adgroups = @()
最后使用foreach循环:

$adgroups |添加ADPrincipalGroupMembership-Identity$UN
或(cmdlet是否喜欢流水线输入)


谢谢@Martin一个非常干净整洁的解决方案
$adgroups | % { Add-ADPrincipalGroupMembership -Identity $UN -memberof $_ }