2017-03-22 34 views
0

目前,我有一个批处理文件,其中我有一个用户输入他们的用户名和密码,但我想在继续之前认证他们是正确的凭据。下面是相关的摘录:命令批量身份验证不起作用

SET /p USERID="Enter user id: " 
SET /p USERPASSWORD="Enter password: " 
ECHO %USERPASSWORD% | RUNAS /noprofile /user:%userid% "notepad" 

这将返回一个错误,指出用户名未知或密码不正确,即使提供的凭据是正确的。在没有自动输入的情况下运行RUNAS命令并为提示符提供密码。为什么这是失败的?是否有插入的尾部空间或什么?有没有更好的方法来验证Windows凭据或另一个什么也不做,并且立即关闭而不是记事本的程序?

编辑:“用户ID”还应包含您开始时的任何域。我还发现运行“cmd.exe/C”是一个更好的选择,因为它立即自动关闭,所以问题的一部分已被回答。

双编辑:根据此问题here,runas命令行输入被禁用。这很奇怪,因为它实际上起作用,直到我更改密码,然后失败。因此,认证用户凭证的更好方法是什么?

+2

的([自动从批处理文件运行方式回应]可能的复制http://stackoverflow.com/问题/ 22866137 /自动抢答到运行方式 - 从 - 批处理文件) – Compo

回答

0

我找到了解决办法。

NET USE \\localhost\c$ %USERPASSWORD% /user:%USERID% 
NET USE /delete \\localhost\c$ 

这会尝试将本地C驱动器添加为网络位置,而不指定目标驱动器。这避免了网络驱动器已经映射到该位置的问题。之后,它将取消链接映射的位置,以便随后再次使用。

要检查是否成功,只需检查%ERRORLEVEL%类似下面的内容:

IF %errorlevel% == 0 GOTO authenticationgood 
GOTO authenticationbad