如果我尝试从 Cygwin 内部使用 Windows runas 命令,输入密码行将打印到标准输出,但它不会等待我将密码输入 System.in
有没有解决的办法?
我想我可以使用 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)
您可以启动“ Cygwin 控制台” ,而不是启动“Cygwin 终端” 。你可以通过执行来做到这一点
c:\cygwin\bin\bash.exe --Login
然后,您应该能够运行本机 Windows 命令,例如runas
.
(但是,您会失去一些 POSIX 兼容性,因为 shell 将在 Windows 控制台窗口中运行,而不是在 MinTTY 终端中。)