передать текст из буфера обмена на приглашение в Powershell - PullRequest
1 голос
/ 13 марта 2019

Я хочу открыть экземпляр PS с повышенными правами из уже открытого экземпляра PS, а затем направить команду из буфера обмена в запрос, а не только в окно.

1 Ответ

0 голосов
/ 13 марта 2019

1) Копирование и вставка из буфера обмена из PowerShell ;
2) Запуск с повышенными правами доступа .
Объединение первого со вторым даст желаемый результат.
Следующий скрипт копирует строку с одной строкой в ​​буфер обмена, получает одну строку из буфера обмена и передает ее для выполнения в powershell.exe, который запускается с повышенными правами.
Предупреждение: будьте осторожныс двойными кавычками.

$re = '^\S+\s+\S+\s+S-1-5-32-544'
"whoami.exe /groups | Select-String \""${re}\""" | clip.exe
Add-Type -AssemblyName System.Windows.Forms
$dummy = New-Object System.Windows.Forms.TextBox
$dummy.Multiline = $true
$dummy.Paste()
$command = $dummy.Text
$args = '-NoLogo', '-NoProfile', '-NoExit', "-Command ${command}"
Start-Process -FilePath powershell.exe -Verb runas -ArgumentList $args

Следующий скрипт демонстрирует, что можно передавать блоки многострочных скриптов.
Скрипт запускается сам три раза и останавливается.

& ($b = {
Write-Host $b
$re = '^\S+\s+\S+\s+S-1-5-32-544'
whoami.exe /groups | Select-String $re
if( $b -match 'return\s\}###' ) { return }
'&($b = {' + ($b -replace 'return\s\}', '$0#') + '})' | clip.exe
Add-Type -AssemblyName System.Windows.Forms
$dummy = New-Object System.Windows.Forms.TextBox
$dummy.Multiline = $true
$dummy.Paste()
$command = $dummy.Text
$args = '-NoLogo', '-NoProfile', '-NoExit'
$args += '-Command {0}' -f $command
Start-Process -FilePath powershell.exe -Verb runas -ArgumentList $args
})
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...