如何在Windows中以不同的用户身份运行批处理命令,而无需键入密码?
我试图在windows命令提示符下以一行程序的形式运行一个简单的windows批处理命令,而不必指定密码。用户名为“alex”,因此我正在尝试:如何在Windows中以不同的用户身份运行批处理命令,而无需键入密码?,windows,batch-file,Windows,Batch File,我试图在windows命令提示符下以一行程序的形式运行一个简单的windows批处理命令,而不必指定密码。用户名为“alex”,因此我正在尝试: >cmd /C echo PASSWD | runas /profile /user:alex "cmd /c dir" 但我得到了以下错误: Enter the password for alex: Attempting to start cmd /c dir as user "ALEX-NEU\alex" .. RUNAS ERROR: U
>cmd /C echo PASSWD | runas /profile /user:alex "cmd /c dir"
但我得到了以下错误:
Enter the password for alex:
Attempting to start cmd /c dir as user "ALEX-NEU\alex" ..
RUNAS ERROR: Unable to run - cmd /c dir
1326: Logon failure: unknown user name or bad password.
其中,
ALEX_NEU
是机器名。用户名和提供的密码是正确的-那么我为什么会出现此错误?如何正确执行此操作?在运行时为运行方式提供密码的唯一方法是使用脚本,但也不是非常优雅。这是丑陋的,它的黑客,它要求安全问题。话虽如此,我在过去使用WScript.Shell
的.run
和.SendKeys
方法做过类似的事情,如下所示:
@if (@a==@b) @end /* multiline JScript comment
:: runas.bat
:: runas with automated password entry
@echo off
setlocal enabledelayedexpansion
set "USER=username"
set "PASS=password"
set "CMD=cmd /c dir && pause"
:: delayed expansion prevents special characters from being evaluated
cscript /nologo /e:JScript "%~f0" !USER! !PASS! !CMD!
goto :EOF
:: end batch portion / begin JScript portion */
for (var i=0, args=[]; i<WSH.Arguments.length; i++)
args.push(WSH.Arguments(i).replace(/"/g, '^"')); // escape all quotes
var user = args[0],
pass = args[1],
cmd = ' "' + args.slice(2).join(' ') + '"',
oShell = new ActiveXObject("Wscript.Shell");
oShell.run('runas /noprofile /netonly /user:' + user + cmd);
WSH.Sleep(500);
oShell.SendKeys(pass + '{ENTER}');
@if(@a==@b)@end/*多行JScript注释
::runas.bat
::具有自动密码输入的运行方式
@回音
延迟扩展
设置“用户=用户名”
设置“通过=密码”
设置“CMD=CMD/c dir&&pause”
::延迟扩展阻止对特殊字符求值
cscript/nologo/e:JScript“%~f0”!用户!通过!指令!
后藤:EOF
::结束批处理部分/开始JScript部分*/
对于(var i=0,args=[];iYou无法。请参阅。您必须编写自己的程序才能按照该博客中的说明执行此操作。这看起来不太可能。如果用户密码位于凭据管理器中,您可以。但是,此问题属于。