2013-09-16 2 views
3

Если я пытаюсь использовать команду Windows runas из Cygwin, строка ввода пароля выводится на стандартную версию, но я не могу дождаться ввода пароля в System.inКак выполнить команду windows runas изнутри cygwin

Есть ли способ обойти это?

+1

Не удается запустить оболочка cygwin как администратор вместо этого? – devnull

+0

Мне не нужно запускать оболочку Windows в качестве администратора, мне нужно выполнить ее как отдельную учетную запись с разными привилегиями. –

+0

Тогда вы не можете запускать оболочку cygwin в качестве этой конкретной учетной записи? – anishsane

ответ

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) 
Смежные вопросы