【发布时间】:2014-10-22 00:23:11
【问题描述】:
我正在尝试编写一个 PowerShell 脚本,该脚本将根据部门和职位创建一个用户,并将它们添加到特定于该职位的 AD 组中。我有一个函数可以创建新用户并尝试将用户加入到数组中的组列表中。
function CreateUser{
$sam = "$first.$last";...;$pwd = ConvertTo-SecureString "password" -AsPlainText -Force
New-ADUser -Company "MyCompany" -Department $dept -Description $desc -DisplayName $dname -EmailAddress $email -GivenName $first -Office $office -Path $path -SamAccountName $sam -Surname $last -UserPrincipalName $email
foreach ($group in $groups) { if (Get-ADGroup $group) { Add-ADGroupMember $group $sam } }
}
我还有一段代码可以创建 $groups 数组
$positions = @()
if ($dept -eq "CSR") { $positions += "CSR Rep","CSR Lead","CSR Manager" }
if ($dept -eq "IT") { $positions += "Sysadmin","Netadmin","Sqladmin" }
...
$groups = @()
if ($position -eq "CSR Rep") { $groups += "group1","group2","group3",...,"groupN" }
if ($position -eq "CSR Lead") { $groups += "group1","group2","group3","group4",...,"groupN" }
if ($position -eq "CSR Manager") { $groups += "group1","group2","group3","group4","group5",...,"groupN" }
if ($position -eq "Sysadmin") { $groups += "group6","group7",...,"groupN" }
if ($position -eq "Netadmin") { $groups += "group7","group8","group9",...,"groupN" }
if ($position -eq "Sqladmin") { $groups += "group10","group11","group12",...,"groupN" }
在我指定了创建组数组的部门和位置后,我调用了 CreateUsers 函数,但我得到了错误,就像它是一个空数组一样。
在尝试将参数传递给函数时我是否遗漏了什么,或者是否有更好的方法来完成此任务?
任何帮助将不胜感激。
【问题讨论】:
-
请告诉我们您如何调用该函数并发布错误
-
最初我只是调用像'CreateUser'这样的函数,而没有指定任何参数来配合它。像 $first 和 $last 这样的东西会自动被填充,我并没有想太多。我确实尝试将 $groups 指定为参数,但我尝试了 [array]。我得到的错误是:Get-ADGroup:无法验证参数“身份”的参数。参数为空。提供一个非空参数并再次尝试该命令。在 usermanagement.ps1:131 char:19 + if (Get-ADGroup
-
这仅在您在函数中使用的变量事先声明时才有效,如果您想安全,我建议您始终使用参数。有关如何正确声明 $groups 参数的示例,请参阅我的答案中的第一个参数声明
-
我已经添加了上面的参数,经过一些故障排除后发现,由于某种原因,我存储组的变量在运行以创建用户之前被删除。似乎我有一些错误需要修复,然后才能创建用户。
-
我能够将组放入变量中,并且一切都像魅力一样工作。感谢您对调用函数的澄清。
标签: arrays powershell active-directory