我想要做的是从已经打开的PS实例中打开提升的PS实例,然后将命令从剪贴板通过管道传递给提示符,而不仅仅是窗口。
答案 0 :(得分:0)
1)Copy and Paste with Clipboard from PowerShell;
2)Run with elevated permissions。
将第一个与第二个相结合将获得预期的结果。
以下脚本将带有单线的字符串复制到剪贴板,从剪贴板接收单线并将其传递给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
})