Powershell 创建新AdUser IsValid参数

Powershell 创建新AdUser IsValid参数,powershell,Powershell,我有一个功能,在尝试“选择”用户名之前检查广告;首先假设首字母+姓氏,看看这是否已经出现在广告中 如果是,它将从名字开始添加字母,直到找到未使用的用户名。如果它用尽了名字中的所有字母,它会在末尾加上递增的数字(即jdoe、jodoe、johdee、johndoe、johndoe、johndoe1、johndoe2等): 注意:这假设您的名字为$FirstName,姓氏为$LastName 尝试运行脚本时,我收到以下错误消息: Get ADUser:在下面找不到标识为“JDoe”的对象:>'DC=

我有一个功能,在尝试“选择”用户名之前检查广告;首先假设首字母+姓氏,看看这是否已经出现在广告中

如果是,它将从名字开始添加字母,直到找到未使用的用户名。如果它用尽了名字中的所有字母,它会在末尾加上递增的数字(即jdoe、jodoe、johdee、johndoe、johndoe、johndoe1、johndoe2等):

注意:这假设您的名字为
$FirstName
,姓氏为
$LastName

尝试运行脚本时,我收到以下错误消息:

Get ADUser:在下面找不到标识为“JDoe”的对象:>'DC=contoso,DC=com'。 第18行字符:31 +$usernameExists=Get ADUser位于:>'DC=contoso,DC=com',Microsoft.ActiveDirectory.Management.Commands.GetADUser下 将用户名设置为JDoe

我假设存在与
IsValid
参数相关的问题

$firstname_auto = $firstname.ToLower()
$lastname_auto = $lastname.ToLower()

$FirstNameLength = ($firstname_auto | Measure-Object -Character).Characters
$letterCount = 0
$username = ''

#Try to spell out the entire first name until we can get a unique username
do {
    $letterCount++
    $usernameExists = $false
    $username = "$($firstname_auto.Substring(0,$letterCount))$($lastname_auto)"
    $usernameExists = Get-ADUser $username -ErrorAction SilentlyContinue | format-wide IsValid
    if ($usernameExists -eq $true) {
        Write-Verbose "$username exists in AD. Trying again."
    }
} until (($usernameExists -eq $false) -OR ($letterCount -eq $FirstNameLength))

#If we've used all the letters in the first name, and the username still isn't unique,
#start counting until we find one that is.
if ($usernameExists -eq $true) {
    $usernameNumber = 0
    Write-Verbose "Exhausted all non-numeric options! Trying with numbers."
    do {
        $usernameNumber++
        $usernameExists = $false
        $username = "$($firstname_auto.Substring(0,$letterCount))$lastname_auto$usernameNumber"
        $usernameExists = Get-ADUser $username -ErrorAction SilentlyContinue | format-wide IsValid
        if ($usernameExists -eq $true) {
            Write-Verbose "$username already exists in AD. Trying again."
        }
    } until ($usernameExists -eq $false)
}

Write-host "Setting username as $username" -foregroundcolor Green

由于脚本在任何有效模块中都找不到get
get ADUser
命令,因此AD PowerShell工具似乎未安装或加载。尝试运行
导入模块activedirectory
,如果出现错误,则需要更新我的错误消息。顺便说一句,已安装ActiveDirectory模块。AD cmdlet即使使用
-ErrorAction SilentlyContinue
,仍会显示错误,请参阅详细信息。这个错误消息可以忽略,它只是意味着
JDoe
不存在。我明白了。所以我假设我必须使用try/catch块来避免这个错误消息。你能给我提供样品线吗?再次感谢
try{$usernameExists=Get ADUser$username}catch{Write Verbose“username:$username not found in AD”}
看起来没有安装或加载AD PowerShell工具,因为脚本在任何有效模块中都找不到Get
Get ADUser
命令。尝试运行
导入模块activedirectory
,如果出现错误,则需要更新我的错误消息。顺便说一句,已安装ActiveDirectory模块。AD cmdlet即使使用
-ErrorAction SilentlyContinue
,仍会显示错误,请参阅详细信息。这个错误消息可以忽略,它只是意味着
JDoe
不存在。我明白了。所以我假设我必须使用try/catch块来避免这个错误消息。你能给我提供样品线吗?再次感谢
尝试{$usernameExists=Get ADUser$username}捕获{Write Verbose“username:$username未在广告中找到”}