命令批次凭据身份验证无效

时间:2017-03-22 18:12:18

标签: windows batch-file authentication runas

目前,我有一个批处理文件,其中我有一个用户输入他们的用户名和密码,但我想在继续操作之前验证他们是否更正了凭据。这是相关的摘录:

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禁用了命令行输入。这很奇怪,因为它实际上起作用,直到我更改了密码,然后失败了。因此,验证用户凭据的更好方法是什么?

1 个答案:

答案 0 :(得分:0)

我找到了解决方案。

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

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

要检查它是否成功,只需使用类似于以下内容的方法检查%errorlevel%:

IF %errorlevel% == 0 GOTO authenticationgood
GOTO authenticationbad