Powershell:为New-ADUser生成唯一的随机SamAccountName

时间:2016-12-23 23:16:15

标签: powershell

我在PowerShell脚本上一整天都在为Active Directory中的一些特殊客户帐户工作。这些帐户是根据特定分类法创建的,这对于AD和某些外部应用程序之间的某些用户映射至关重要。我们只关心UPN名称(例如joe.blogs@domain.com),并且不关心Windows 2000之前的版本和#2000;帐户名称已格式化。

Windows 2000之前的问题'但帐户名长度限制为20个字符。我只是想把它缩短,但这会导致重复,这是不允许的(甚至是不可能的)。

所以我想知道是否有一种方法可以生成随机的SAM帐户名称。然后脚本将检查该帐户是否已经存在,如果是,则将其再次随机化,直到它获得唯一值。然后使用已生成的SAM创建帐户。

我需要帮助的是生成随机SAM并检查是否存在具有此类SAM的帐户。其余的我可以处理:)

这一切都可能吗?请注意,我只想询问如何处理它 - 而不是整个代码。

2 个答案:

答案 0 :(得分:1)

我在不久前在SO写了一个随机数生成器。

$chars = [char[]]"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789"
[string](($chars[0..25]|Get-Random)+(($chars|Get-Random -Count 14) -join ""))

chars定义允许的字符,第二行从整个集合中获取一个随机的大写字符,其中包含14个字符。应该很容易添加前缀并测试名称是否已存在。

答案 1 :(得分:1)

我的意思是如果你不关心它是字符,你可以随便做一些随机数

示例(理论上可行)

$randomNumber = Get-Random 
New-ADUser -SamAccountName $randomNumber -etc...