【问题标题】:how to add users into a specific group in active directory based on the user selection type powershell如何根据用户选择类型powershell将用户添加到活动目录中的特定组
【发布时间】:2014-08-08 10:04:28
【问题描述】:

当用户被创建为普通域用户时,我正在编写一个脚本来将用户添加到特定组,但我不确定如何将用户添加到测试组的管理员组。还有如何检查用户是否不输入名字我应该提示用户输入名字我正在使用以下脚本

$NewUser = Read-Host "New Username"
$firstname = Read-Host "First Name"
$Lastname = Read-Host "Last Name"
$NewName = "$firstname $lastname"


New-ADUser -SamAccountName $NewUser -Name $NewName -GivenName $firstname -Surname  
$lastname -displayname  $Newname -UserPrincipalName $firstname@handmade.local -Path   
"CN=Users,DC=mydomain,DC=local" -AccountPassword (ConvertTo-SecureString -AsPlainText 
"Password" -Force)  -Enabled $true

write-host "!!!New User"$NewUser "Created!!!"

我收到以下错误: 当我运行这个脚本时

New-ADUser -SamAccountName $NewUser -Name $NewName -GivenName $FirstName -Surname   
$LastName -displayname  $NewName -UserPrincipalName $FirstName@mydomain.local -Path 
"CN=Users,DC=mydomain,DC=local" -AccountPassword (ConvertTo-SecureString -AsPlainText 
"password" -Force)  -Enabled $true 


$h = @{1="Dev";2="Admins"}
 Write-Host "Please select:"
 $h.getEnumerator() |sort | % {
Write-Host ([string]$_.Name +". " + $_.Value)
} 
Write-Host
[string]$g = Read-Host -Prompt "Select group number or numbers, coma separated"

$groups = $g -split ","

foreach($group in $groups){
Add-ADGroupMember -Identity $h[$group] -Members $NewUser
} 


write-host "!!!New User"$NewUser "Created!!!"
exit 0
 }

}

错误: Add-ADGroupMember:无法验证参数“身份”上的参数。参数为空。提供非空参数 并再次尝试该命令。 在 C:\Users\Administrator\Desktop\add 用户到 AD.ps1:60 char:33 + 添加-ADGroupMember -Identity $h[$group] -Members $NewUser

我选择组为 1,2

【问题讨论】:

  • 你说的“tester group的admin group”是什么意思?您可以使用Add-ADGroupMember -Identity GroupName -Members $NewUser 将新用户添加到给定组。
  • 嘿 Raf 感谢您的回复,我的意思是说如果我有两个组,分别是 Admin 组和 Tester 组,我该如何修改我的脚本,所以我应该可以选择组并根据输入新用户保存在该组中
  • @Raf 通过使用上面的代码我可以指定管理员组并且用户确实在管理员组中创建,但是如果我有 3 到 4 个组并且我想显示这些组并且我希望用户输入组名,以便在该组中创建新用户

标签: powershell active-directory


【解决方案1】:

试试这个 - 组及其对应的数字选择映射在$h 中定义。提示时输入逗号分隔值,即。 12,3

$h = @{1="group1";2="group2";3="group"}
Write-Host "Please select:"
$h.getEnumerator() |sort | % {
    Write-Host ([string]$_.Name +". " + $_.Value)
} 
Write-Host
[string]$g = Read-Host -Prompt "Select group number or numbers, coma separated"

$groups = $g -split ","

foreach($group in $groups){
    $group_to_add = [string]($h[$group])
    Write-Host "Adding $NewUser to $group_to_add"
    Add-ADGroupMember -Identity $group_to_add -Members $NewUser
}

【讨论】:

  • 嗨 Raf,我使用了上面的脚本,但是遇到了一些验证错误,我已经修改了问题
  • 修改了答案,将哈希元素转换为字符串。
  • 现在我收到此错误 Add-ADGroupMember : 找不到具有身份的对象: '' under: 'DC=mydomain,DC=local'。
  • 嗨 raf,一旦我选择组选项,例如 1 或 1,2,我就会收到此错误,现在我收到此错误 Add-ADGroupMember:找不到具有身份的对象:'' 在: 'DC=mydomain,DC=local'
  • 添加了小调试,看看现在会发生什么。我认为你可以运行Add-ADGroupMember -Identity Dev -Members $NewUser 好吗?你用的是哪个 PS 版本?(适用于 4)
【解决方案2】:

这已经为我完成了这项工作。

$h = @{1="Dev";2="Admins"}
Write-Host "Please select:"
$h.getEnumerator() |sort | % {
Write-Host ([string]$_.Name +". " + $_.Value)
} 
Write-Host
[string] $g = Read-Host -Prompt "Select group number or numbers, coma separated"

$groups = $g -split ","

foreach($group in $groups){
[int32] $no = $group

Add-ADGroupMember -Identity $h.item($no) -Members $NewUser
} 

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-06-21
    • 1970-01-01
    • 2018-07-25
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多