PowerShell - 将新用户添加到 AD 组选择
PowerShell - Adding New User to Selection of AD Groups
我已经创建了一个表单来创建新的 AD 帐户。脚本的一部分根据以下代码以下拉选择框的形式捕获的角色(医生、护士、管理员或其他)确定新用户将添加到哪些组:
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
我面临的问题是,如果用户选择护士、管理员或其他,我会收到以下错误:
"Add-ADPrincipalGroupMembership: 无法验证参数 'MemberO 上的参数
F'。参数为 null、空或参数集合的元素 conta
插入一个空值。提供一个不包含任何空值的集合,并且
然后再次尝试该命令。"
我知道这是因为在最后一个 $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 | Add-ADPrincipalGroupMembership -Identity $UN
或(cmdlet 是否喜欢流水线输入)
$adgroups | % { Add-ADPrincipalGroupMembership -Identity $UN -memberof $_ }
我已经创建了一个表单来创建新的 AD 帐户。脚本的一部分根据以下代码以下拉选择框的形式捕获的角色(医生、护士、管理员或其他)确定新用户将添加到哪些组:
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
我面临的问题是,如果用户选择护士、管理员或其他,我会收到以下错误:
"Add-ADPrincipalGroupMembership: 无法验证参数 'MemberO 上的参数 F'。参数为 null、空或参数集合的元素 conta 插入一个空值。提供一个不包含任何空值的集合,并且 然后再次尝试该命令。"
我知道这是因为在最后一个 $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 | Add-ADPrincipalGroupMembership -Identity $UN
或(cmdlet 是否喜欢流水线输入)
$adgroups | % { Add-ADPrincipalGroupMembership -Identity $UN -memberof $_ }