【问题标题】:Verify domain credentials at command line在命令行验证域凭据
【发布时间】:2011-03-21 14:58:55
【问题描述】:

是否有允许我验证域帐户/密码的 windows 命令?

【问题讨论】:

  • 有没有办法使用内置命令来做到这一点?还是有必要为此创建一个程序?
  • 您可能希望为 windows 添加一个标签,以便通过标签监视新问题的人会看到您的问题。
  • 身份验证失败的原因有很多,例如 ERROR_ACCOUNT_LOCKED_OUT、ERROR_INVALID_LOGON_HOURS 或 ERROR_PASSWORD_MUST_CHANGE。在返回错误之前,它可能根本不会验证您的凭据。

标签: windows command-line login dns credentials


【解决方案1】:

您可以使用命令RUNAS,从技术上讲,它不是验证凭据的命令行,但可以用于此。

runas /noprofile /user:mycomputer\administrator "notepad"

如果失败则返回:

RUNAS ERROR: Unable to run - notepad
1326: Logon failure: unknown user name or bad password.

【讨论】:

  • 当你按下回车键时,它会提示你输入用户的密码。只是在这里提到,因为它让我感到困惑:)
【解决方案2】:

RUNAS 在本地系统上运行良好。

为了验证远程计算机上的凭据,我使用了 SysInternals 的 PSExec 工具。我指定用户名,然后它提示我输入密码。这是我的命令的示例:

psexec \\RemoteComputer -u DOMAIN\USER cmd.exe

如果我输入了正确的密码,我会看到一个命令提示符。如果我输入了错误的密码,我会得到:

PsExec could not start cmd.exe on RemoteComputer:
The user name or password is incorrect.

【讨论】:

    【解决方案3】:

    您可以使用这个 powershell 脚本进行一些额外的测试(域可访问、用户名存在、帐户启用、帐户解锁)。 从this post 得到这个脚本。将其放入记事本中,另存为 .ps1 并执行。它将提示输入凭据并提供反馈。完美满足我的需求。

    <#  
            .SYNOPSIS  
                Test domain username/password combination are correct 
            .DESCRIPTION  
                This script will check if the password for a given username is correct. If the authentication failed using the provided Domain\Username and Password. 
                The script will do some checks and provide some clues why the authentication failed. 
                The checks are: 
                    * Domain is reachable. 
                    * User Name exists in the domain. 
                    * The account is Enabled. 
                    * The account is Unlocked. 
            .EXAMPLE  
                .\Test-UserCredentials.ps1 
                or 
                Right click the script and select "Run with PowerShell" 
            .Notes 
                Created by: Ibrahim Soliman 
                Version: 1.6 (Enhanced error handling, and authentication failure root cause analysis.) 
     #>  
    
     #Import Active Directory Module 
     Import-Module Activedirectory 
    
     #Clear User Info Function 
        Function ClearUserInfo 
        { 
            $Cred = $Null 
            $DomainNetBIOS = $Null 
            $UserName  = $Null 
            $Password = $Null 
        } 
    
    #Rerun The Script Function 
     Function Rerun 
        { 
            $Title = "Test Another Credentials?" 
            $Message = "Do you want to Test Another Credentials?" 
            $Yes = New-Object System.Management.Automation.Host.ChoiceDescription "&Yes", "Test Another Credentials." 
            $No = New-Object System.Management.Automation.Host.ChoiceDescription "&No", "End Script." 
            $Options = [System.Management.Automation.Host.ChoiceDescription[]]($Yes, $No) 
            $Result = $host.ui.PromptForChoice($Title, $Message, $Options, 0)  
    
            Switch ($Result) 
            { 
                0 {TestUserCredentials} 
                1 {"End Script."} 
            } 
        } 
    
    #Test User Credentials Function 
    Function TestUserCredentials 
    { 
        ClearUserInfo    
        #Get user credentials 
        $Cred = Get-Credential -Message "Enter Your Credentials (Domain\Username)" 
        if ($Cred -eq $Null) 
                            { 
                                Write-Host "Please enter your username in the form of Domain\UserName and try again" -BackgroundColor Black -ForegroundColor Yellow 
                                Rerun 
                                Break                           
                            } 
    
        #Parse provided user credentials 
        $DomainNetBIOS = $Cred.username.Split("{\}")[0] 
        $UserName = $Cred.username.Split("{\}")[1] 
        $Password = $Cred.GetNetworkCredential().password 
    
        Write-Host "`n" 
        Write-Host "Checking Credentials for $DomainNetBIOS\$UserName" -BackgroundColor Black -ForegroundColor White 
        Write-Host "***************************************" 
    
        If ($DomainNetBIOS -eq $Null -or $UserName -eq $Null)  
                            { 
                                Write-Host "Please enter your username in the form of Domain\UserName and try again" -BackgroundColor Black -ForegroundColor Yellow 
                                Rerun 
                                Break 
                            } 
        #    Checks if the domain in question is reachable, and get the domain FQDN. 
        Try 
        { 
            $DomainFQDN = (Get-ADDomain $DomainNetBIOS).DNSRoot 
        } 
        Catch 
        { 
            Write-Host "Error: Domain was not found: " $_.Exception.Message -BackgroundColor Black -ForegroundColor Red 
            Write-Host "Please make sure the domain NetBios name is correct, and is reachable from this computer" -BackgroundColor Black -ForegroundColor Red 
            Rerun 
            Break 
        } 
    
        #Checks user credentials against the domain 
        $DomainObj = "LDAP://" + $DomainFQDN 
        $DomainBind = New-Object System.DirectoryServices.DirectoryEntry($DomainObj,$UserName,$Password) 
        $DomainName = $DomainBind.distinguishedName 
    
        If ($DomainName -eq $Null) 
            { 
                Write-Host "Domain $DomainFQDN was found: True" -BackgroundColor Black -ForegroundColor Green 
    
                $UserExist = Get-ADUser -Server $DomainFQDN -Properties LockedOut -Filter {sAMAccountName -eq $UserName} 
                If ($UserExist -eq $Null)  
                            { 
                                Write-Host "Error: Username $Username does not exist in $DomainFQDN Domain." -BackgroundColor Black -ForegroundColor Red 
                                Rerun 
                                Break 
                            } 
                Else  
                            {    
                                Write-Host "User exists in the domain: True" -BackgroundColor Black -ForegroundColor Green 
    
    
                                If ($UserExist.Enabled -eq "True") 
                                        { 
                                            Write-Host "User Enabled: "$UserExist.Enabled -BackgroundColor Black -ForegroundColor Green 
                                        } 
    
                                Else 
                                        { 
                                            Write-Host "User Enabled: "$UserExist.Enabled -BackgroundColor Black -ForegroundColor RED 
                                            Write-Host "Enable the user account in Active Directory, Then check again" -BackgroundColor Black -ForegroundColor RED 
                                            Rerun 
                                            Break 
                                        } 
    
                                If ($UserExist.LockedOut -eq "True") 
                                        { 
                                            Write-Host "User Locked: " $UserExist.LockedOut -BackgroundColor Black -ForegroundColor Red 
                                            Write-Host "Unlock the User Account in Active Directory, Then check again..." -BackgroundColor Black -ForegroundColor RED 
                                            Rerun 
                                            Break 
                                        } 
                                Else 
                                        { 
                                            Write-Host "User Locked: " $UserExist.LockedOut -BackgroundColor Black -ForegroundColor Green 
                                        } 
                            } 
    
                Write-Host "Authentication failed for $DomainNetBIOS\$UserName with the provided password." -BackgroundColor Black -ForegroundColor Red 
                Write-Host "Please confirm the password, and try again..." -BackgroundColor Black -ForegroundColor Red 
                Rerun 
                Break 
            } 
    
        Else 
            { 
            Write-Host "SUCCESS: The account $Username successfully authenticated against the domain: $DomainFQDN" -BackgroundColor Black -ForegroundColor Green 
            Rerun 
            Break 
            } 
    }     
    
    TestUserCredentials 
    ClearUserInfo
    

    【讨论】:

      猜你喜欢
      • 2010-09-24
      • 1970-01-01
      • 2021-08-10
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-03-26
      • 1970-01-01
      相关资源
      最近更新 更多