如何从cygwin内部执行windows runas命令

时间:2013-09-16 08:46:45

标签: windows bash cygwin runas

如果我尝试使用Cygwin内部的Windows runas命令,则输入密码行会打印到标准输出,但它不会等我输入我的密码进入System.in

有解决方法吗?

2 个答案:

答案 0 :(得分:2)

我想我可以使用2个嵌套的命令提示符窗口弹出窗口来运行密码更改脚本,

cygstart cmd /c "runas /user:DOMAIN\\USER \"powershell %cd%\\changepw.ps1\" & pause"

后面是changepw.ps1脚本,

# http://serverfault.com/questions/570476/how-can-a-standard-windows-user-change-their-password-from-the-command-line
# cygstart cmd /c "runas /user:DOMAIN\\USER \"powershell %cd%\\changepw.ps1\" & pause"

param (
    [string]$oldPassword = $( Read-Host "Old password"),
    [string]$newPassword = $( Read-Host "New password")
)

$ADSystemInfo = New-Object -ComObject ADSystemInfo
$type = $ADSystemInfo.GetType()
$user = [ADSI] "LDAP://$($type.InvokeMember('UserName', 'GetProperty', $null, $ADSystemInfo, $null))"
try {
    $user.ChangePassword($oldPassword, $newPassword)
} catch [Exception] {
    # echo $_.Exception.GetType().FullName, $_.Exception.Message
    echo $_.Exception | format-list -force
}
write-host "Press any key to continue..."
[void][System.Console]::ReadKey($true)

答案 1 :(得分:1)

您可以启动“ Cygwin Console”来代替启动“ Cygwin终端”。您可以通过执行

c:\cygwin\bin\bash.exe --Login

然后,您应该能够运行本机Windows命令,例如runas

(但是,您失去了一些POSIX兼容性,因为该外壳程序将在Windows控制台窗口中运行,而不是在MinTTY终端中运行。)