【Powershell】AD 新用户账号验证脚本

这段脚本的用途是验证最近一天内创建的新员工在AD(Active Directory)中的账号是否能够成功通过验证,以确定他们的用户名和密码是否正确。在具体操作上,脚本会检索包含新员工账号信息的Excel文件中的密码,并使用该密码尝试验证AD用户的凭据是否有效。如果验证成功,则输出成功消息;如果验证失败,则输出警告消息。
该脚本主要目的是加快处理新员工账号请求的速度,并在保证账号信息准确性的前提下提高处理效率和质量。通过该脚本,管理员可快速而准确地确认每个新员工账号的凭据是否有效,并且不需要手动验证每个用户的账号。

以下是全部代码:

# 配置 AD 域控制器的域名或 IP 地址、管理员帐户和密码
$Server = "***********"
$Admin_Username = "***********"
$Admin_Password = ConvertTo-SecureString "***********" -AsPlainText -Force 

# 获取昨天的日期
$Yesterday = (Get-Date).AddDays(-1).Date

# 创建的凭证对象
$Credential = New-Object System.Management.Automation.PSCredential ($Admin_Username, $Admin_Password)

# 从环境变量中获取 Excel 文件路径
$pathEnv = "OneDriveCommercial"
if (-not([System.Environment]::GetEnvironmentVariable($pathEnv))) {
    Write-Error "$pathEnv 环境变量未定义."
    # 如果未定义环境变量,则返回并显示错误消息
    return
}
$path = Join-Path ([System.Environment]::GetEnvironmentVariable($pathEnv)) "新员工账号信息.xlsx"
if (-not (Test-Path $path)) {
    Write-Error "$path 路径未找到."
    # 如果文件不存在,则返回并显示错误消息
    return
}

# 创建 Excel 应用程序对象
$excel = New-Object -ComObject "Excel.Application"

# 获取最近一天内创建的启用的所有 AD 用户
$New_AD_Users = Get-ADUser -Filter {(whenCreated -gt $Yesterday) -and (Enabled -eq $true)} -Server $Server -Credential $Credential

# 检查 AD 用户是否为空
if ($New_AD_Users -eq $null) {
    Write-Host "There is no new AD user created in the last day." -ForegroundColor Yellow
    # 如果 AD 用户为空,则返回并显示警告消息
} else {
    # 遍历每个新的 AD 用户
    foreach ($New_AD_User in $New_AD_Users) {
        # 获取用户的用户名
        $username = $New_AD_User.UserPrincipalName

        # 查找密码
        $password = $null
        $workbook = $null
        try {
            # 打开 Excel 文件
            $workbook = $excel.Workbooks.Open($path)
            $worksheet = $workbook.Worksheets.Item(1)

            # 统计表格使用范围中的行数和列数
            $rowCount = $worksheet.UsedRange.Rows.Count
            $colCount = $worksheet.UsedRange.Columns.Count

            # 使用 for 循环查找所需的信息
            for ($i = 2; $i -le $rowCount; $i++) {
                $cell = $worksheet.Cells.Item($i, 13)
                if ($cell.Value2 -eq $username) {
                    $password = $worksheet.Cells.Item($i, 14).Value2
                    # 如果找到密码,则退出循环
                    break
                }
            }

            # 关闭 Excel 文件
            $workbook.Close($false)
        } catch {
            Write-Warning "在查找 $username 的密码时出现错误:$($_.Exception.Message)"
            # 如果在查找密码时发生错误,则显示警告消息
        } finally {
            $excel.Quit()
            # 退出 Excel 应用程序
        }

        if ($password -ne $null) {
            # 从电子邮件地址中提取用户名
            $identity = $username.Split('@')[0]

            # 创建 PSCredential 对象
            $creds = New-Object System.Management.Automation.PSCredential ($username, (ConvertTo-SecureString $password -AsPlainText -Force))

            # 尝试验证用户的凭据是否有效
            try {
                $null = Get-ADUser -Credential $creds -Identity $identity -Server $Server -Properties *
                Write-Host "AD用户名 $username 的密码有效。" -ForegroundColor Green
                # 如果 AD 用户的凭据有效,则输出成功消息
            } catch {
                Write-Warning "在测试 AD用户名 $username 时,密码时出现错误:$($_.Exception.Message)"
                # 如果尝试验证用户的凭据时出错,则显示警告消息
            }
        }
    }
}

文末冷笑话:

为什么程序员总是喜欢冷笑话?因为只有程序员知道 
01001001 00100000 01101100 01101111 01110110 01100101 00100000 01111001 01101111 01110101 的含义。


01001001 00100000 01101100 01101111 01110110 01100101 00100000 01111001 01101111 01110101 的含义是"我爱你"
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值