linux中对windows的期望是什么?当前一个命令提示时,脚本是否有办法发送密码?
runas /user:admin net user username /add
尝试echo XYZ | runas ...
我得到1326 Logon failure: unknown user name or bad password
。该命令在没有管道回声的情况下工作。
答案 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}");