У меня есть командный файл, который запускает скрипт powershell script_1, который вызывает еще один скрипт powershell script_2 с повышенными учетными данными.Psexec запускает командный файл без ошибок, но не имеет эффекта
Когда я вхожу в remote_server (Win Server 2012 R2, в WORKGROUP) и выполняю этот пакетный скрипт, он отлично работает.
Когда я вхожу в host_server (Win Server 2012 R2, в WORKGROUP) и выполняю этот пакетный скрипт с помощью psexec, он возвращается с кодом ошибки 0, но когда я проверяю, работает ли это, это похоже на сценарий powershell script_1 или script_2 никогда не выполнится
на host_server, я буду запускать CMD Shell, Shift-правой кнопкой мыши и выберите «Запуск от имени другого пользователя»
Тогда для пользователя я типа в «Администратор», а затем пароль.
Затем я выполнить следующее
D:\pstools\psexec.exe \\IP_of_remote_server -u username -p password -accepteula C:\share\enable.bat
И он выполняет без ошибок, и возвращает код 0
enable.bat
@echo off
powershell.exe C:\share\eLEVATE.ps1
eLEVATE.ps1
$startInfo = $NULL
$process = $NULL
<#Previously created password file in C:\share\cred.txt, read-host -assecurestring | convertfrom-securestring | out-file C:\share\cred.txt#>
$password = get-content C:\share\cred.txt | convertto-securestring
$startInfo = New-Object System.Diagnostics.ProcessStartInfo
$startInfo.FileName = "powershell.exe"
$startInfo.Arguments = "-noninteractive -windowstyle hidden -noprofile C:\share\remote_elevate.ps1 "
$startInfo.RedirectStandardOutput = $true
$startInfo.UseShellExecute = $false
$startInfo.CreateNoWindow = $false
$startInfo.Username = "Administrator"
$startInfo.Domain = "WORKGROUP"
$startInfo.Password = $password
$process = New-Object System.Diagnostics.Process
$process.StartInfo = $startInfo
$process.Start() | Out-Null
$userId = $process.StandardOutput.ReadToEnd()
$process.WaitForExit()
remote_elevate.ps1
enable-psremoting -force
Я пытался понять это все утро. Благодаря!
EDIT
Я отправляю точный скриншот ошибки я получаю, когда я вхожу
d:\pstools\psexec.exe \\remote_IP -u Administrator -p password -accepteula cmd
Затем выполнить
powershell.exe -executionpolicy bypass c:\share\eLEVATE.ps1
Что такое набор функций PowerShell 'ExecutionPolicy'? – aphoria
@aphoria - это 'RemoteSigned' – Glowie
Вы пробовали запустить CMD.exe с помощью PSExec и посмотреть, что он говорит, когда вы пытаетесь запустить ваш' powershell.exe C: \ share \ eLEVATE.ps1' таким образом? Возможно, вам нужно 'powershell.exe -executionpolicy обходить C: \ share \ eLEVATE.ps1', чтобы обойти любую политику выполнения, которая блокирует. – TheMadTechnician