|
Компьютерный форум OSzone.net » Программирование, базы данных и автоматизация действий » Скриптовые языки администрирования Windows » CMD/BAT - Запуск ps скрипта из bat скрита |
|
|
CMD/BAT - Запуск ps скрипта из bat скрита
|
Старожил Сообщения: 208 |
Доброго времени суток.
Подскажите пожалуйста, как можно из bat файла, вызвать ps скрпит с повышенными привилегиями? Вариант приведенный ниже, через runas не работает( Если подскажите, как можно спрятать пароль, будет вообще замечательно. |
|
Отправлено: 15:07, 11-04-2016 |
Ветеран Сообщения: 1758
|
pogo, Пароль можно вводить только в интерактивном режиме. runas не принимает параметров в виде пароля, в том числе через пайп.
|
Отправлено: 15:20, 11-04-2016 | #2 |
Для отключения данного рекламного блока вам необходимо зарегистрироваться или войти с учетной записью социальной сети. Если же вы забыли свой пароль на форуме, то воспользуйтесь данной ссылкой для восстановления пароля. |
Старожил Сообщения: 208
|
Профиль | Отправить PM | Цитировать Foreigner,
Тогда это не подходит(( Интерактивный режим не подходит. Есть ещё какие-то варианты? |
Отправлено: 15:23, 11-04-2016 | #3 |
Ветеран Сообщения: 27449
|
Профиль | Отправить PM | Цитировать Цитата pogo:
|
|
Отправлено: 15:41, 11-04-2016 | #4 |
Старожил Сообщения: 208
|
Профиль | Отправить PM | Цитировать Iska,
То что скрипт будет запускаться gsm модемом по смс. |
|
Отправлено: 15:54, 11-04-2016 | #5 |
Ветеран Сообщения: 1259
|
Профиль | Отправить PM | Цитировать Несколько вариантов:
1) Использовать psexec , где можно указать пароль и логин. -u Specifies optional user name for login to remote computer. -p Specifies optional password for user name. If you omit this you will be prompted to enter a hidden password. -h If the target system is Vista or higher, has the process run with the account's elevated token, if available. 2) Создать задачу в task scheduler и выполнить скрипт, лучший вариант 3) Пароль можно указать, но пользователю явно придеться нажать Да/Yes ,т.к. UAC не даст запустить, только отключение. Сохраняем скрипт и выполняем его, а из него будет уже вызваться основной: $pass = ConvertTo-SecureString 'P@$$w0rd1' -AsPlainText -Force $creds = New-Object System.Management.Automation.PSCredential ("domain\user", $pass) $ScriptName = 'C:\Scripts\test.ps1' $arg = "Start-Process powershell -Verb RunAs -ArgumentList '-ExecutionPolicy ByPass -File $ScriptName'" Start-Process powershell -Credential $creds -ArgumentList $arg |
Отправлено: 15:56, 11-04-2016 | #6 |
Старожил Сообщения: 208
|
Профиль | Отправить PM | Цитировать Kazun,
Большое спасибо! Тоже думал по поводу таска в планировщике, но почему то показалось что решение костыль, и есть лучше. Но что-то погуглив прихожу к мнению что это самый меньший костыль из имеющихся. Дабы не разводить ещё тем, подскажите, в bat-скриптах, можно как-то скрыть пароль, аналогично posh? Когда пасс конвертируется в SecureString выгружается в файл и оттуда уже берется? Вариант конечно тоже так себе по надежности, но хоть бы не в plaintext |
Отправлено: 16:01, 11-04-2016 | #7 |
Ветеран Сообщения: 27449
|
Профиль | Отправить PM | Цитировать pogo, никак. А зачем Вам там пароль? Вы же его введёте один раз «ручками» в Диспетчере задач.
|
Отправлено: 16:09, 11-04-2016 | #8 |
Старожил Сообщения: 208
|
Профиль | Отправить PM | Цитировать Iska,
Там всё намного костыльнее получается( в батнике запускается ещё один exe с указание login\pass для другого доступа. |
Отправлено: 16:28, 11-04-2016 | #9 |
Забанен Сообщения: 793
|
Цитата pogo:
<# : @echo off setlocal set "self=%~f0" % rem : полный путь до командного сценария 2>nul powershell /noprofile /executionpolicy bypass^ "&{[ScriptBlock]::Create((gc '%self%') -join [Char]10).Invoke(@(&{$args}'%self%'))}"||( echo:PowerShell has not been found. ) endlocal exit /b #> if (!(New-Object Security.Principal.WindowsPrincipal( [Security.Principal.WindowsIdentity]::GetCurrent() )).IsInRole( [Security.Principal.WindowsBuiltInRole]::Administrator )) { $proc = New-Object Diagnostics.Process $proc.StartInfo.FileName = $args[0] $proc.StartInfo.LoadUserProfile = $false $proc.StartInfo.Domain = [Environment]::UserDomainName $proc.StartInfo.UserName = $(Read-Host 'Имя пользователя') $proc.StartInfo.Password = $(Read-Host 'Пароль' -as) $proc.StartInfo.UseShellExecute = $false $proc.Start() } else { Write-Host Здесь мог бы быть Ваш код -for green Write-Host Нажмите любую клавишу для продолжения... -NoNewline $host.UI.RawUI.ReadKey('NoEcho, IncludeKeyDown') | Out-Null '' } |
|
Отправлено: 18:34, 11-04-2016 | #10 |
|
![]() |
Участник сейчас на форуме |
![]() |
Участник вне форума |
![]() |
Автор темы |
![]() |
Сообщение прикреплено |
| |||||
Название темы | Автор | Информация о форуме | Ответов | Последнее сообщение | |
VBS/WSH/JS - Запуск скрипта при выходе из системы. | datafile4 | Скриптовые языки администрирования Windows | 11 | 13-04-2014 23:43 | |
Запуск скрипта из текущей директории | lampich | Программирование и базы данных | 0 | 28-12-2012 23:56 | |
2008 R2 - Запуск скрипта vbs из GP | teleonomic | Windows Server 2008/2008 R2 | 0 | 06-12-2011 11:32 | |
VBS/WSH/JS - [решено] Как запустить bat'ник из скрипта напрямую? | vivera864864 | Скриптовые языки администрирования Windows | 1 | 28-05-2011 14:26 | |
FreeBSD - Запуск .sh скрипта из-под apache | fantik | Общий по FreeBSD | 0 | 30-06-2009 10:28 |
|