Я могу начать процесс с runas /netonly
и runas /savecred
но я не могу использовать оба флага одновременно.
Есть ли способ запустить процесс от имени другого пользователя удаленно, не вводя пароль каждый раз?
Боюсь, что это неподдерживаемый вариант, вы можете указать / netonly или / savecred, но не оба сразу:
runas [{/ profile | / noprofile}] [/ env] [{/ netonly | / savecred}] [/ smartcard] [/ showtrustlevels] [/ trustlevel] / user: ""
больше информации: https://technet.microsoft.com/en-us/library/cc771525.aspx
В другой ответ здесь Джейсон справедливо отмечает который runas /netonly
не поддерживает сохранение учетных данных, а Microsoft намеренно усложнил использовать runas
с жестко заданным паролем (из пакетного скрипта).
В предложение использовать диспетчер учетных данных Windows что Стефано указал в своем комментарии, полезно, когда вы хотите всегда подключиться к данной услуге (т.е. myserver.mycompany.com:XXX
) с использованием указанных учетных данных.
Для решения командной строки с поведением, аналогичным runas.exe, но без необходимости вводить пароль, я обнаружил Модуль RunAs powershell (который, кажется, реализует этот совет) очень полезно:
Установите из PowerShell Gallery, выполнив следующую команду в командной строке PowerShell с повышенными привилегиями (требуется Powershell v5 или Windows 10):
Install-Module RunAs
Зашифруйте пароль, запустив:
# change `domain\username` as needed:
ConvertFrom-SecureString (Get-Credential 'domain\username').Password
Вам будет предложено ввести логин и пароль, а также напечатать длинное шестнадцатеричное число, которое вам нужно будет скопировать.
Теперь вы можете сделать эквивалент runas /netonly
с помощью:
Import-Module RunAs
# replace xxxx below with the encrypted password from step 2 (and `domain\username` too)
# you might want to put this into your profile: https://docs.microsoft.com/en-us/powershell/module/microsoft.powershell.core/about/about_profiles?view=powershell-7
$mycreds = New-Object Management.Automation.PSCredential('domain\username', (ConvertTo-SecureString 'xxxx'))
runas -netonly $mycreds "c:\Program Files (x86)\Microsoft Office\Office16\EXCEL.EXE"
P.S. многие ресурсы в сети предлагают использовать psexec для запуска от имени другого пользователя. Посмотрев вверх как это работает под капотом, Я не считаю это жизнеспособной альтернативой runas /netonly