Windows期望命令等效

时间:2015-01-06 22:43:42

标签: powershell batch-file

linux中对windows的期望是什么?当前一个命令提示时,脚本是否有办法发送密码?

runas /user:admin net user username /add

尝试echo XYZ | runas ...我得到1326 Logon failure: unknown user name or bad password。该命令在没有管道回声的情况下工作。

3 个答案:

答案 0 :(得分:3)

PowerShell内置了任何内容。但是,有一个模块可以执行此操作,称为Await - https://msconfiggallery.cloudapp.net/packages/Await/

有关如何在此处使用Await的PowerShell Summit会议 - https://www.youtube.com/watch?v=tKyAVm7bXcQ

答案 1 :(得分:3)

我知道Windows中没有直接等同于expect,尽管你无疑可以毫不费力地写一个。幸运的是,对于在PowerShell中提供凭据的特殊情况,有一种更好的方法,即使在脚本中以明文形式存储密码也是如此。 This answer to Batch scripting, Powershell, and not triggering the UAC in Windows *首先将用户密码保存为某个安全字符串**:

$pass = Read-Host -AsSecureString
ConvertFrom-SecureString $pass | Out-File pass.txt

然后以管理员身份使用存储的密码运行程序:

function Invoke-ElevatedCommand([String]$FileName, [String]$Arguments) {
    $pass = Import-SecureString (Get-Content pass.txt)
    $startinfo = New-Object System.Diagnostics.ProcessStartInfo
    $startinfo.UserName = "administrator"
    $startinfo.Password = $pass
    $startinfo.FileName = $FileName
    $startinfo.Arguments = $Arguments
    [System.Diagnostics.Process]::Start($startinfo)
}
Invoke-ElevatedCommand "net" "user username /add"   # Or whatever you need

* 请注意,这几乎是一种欺骗,但并不完全,因为接受的答案与此问题并不特别相关。链接的答案轻轻地适应了这个目的,并相应地进行了投票。
** 进一步注意,虽然pass.txt不是明文,但只要有人可以抓住它,就不安全。坚持一些限制性的NTFS权限,可能是EFS等。

答案 2 :(得分:1)

抱歉,我不知道linux的预期是如何工作的......但是,在this post,有一个批处理文件解决方案可以解决与您类似的问题,标题为“自动响应批处理文件中的runas”:

@if (@CodeSection == @Batch) @then

@echo off

start "" runas /user:testuser c:/path/to/my/program.exe
CScript //nologo //E:JScript "%~F0"
goto :EOF

@end

WScript.CreateObject("WScript.Shell").SendKeys("password{ENTER}");