Respostas:
$^
é uma variável que se expande para o último comando do PowerShell executado.
Você pode executar um comando como outro usuário usando runas
, para que o seguinte funcione:
runas /user:domain\administrator $^
Para encurtar um pouco, você pode fazer alguma mágica com aliases. Dê uma olhada neste artigo da Technet para obter mais informações.
EDIT: Uma ressalva - $^
apenas executa o primeiro comando em um pipeline ou linha de multi-comando. Se você precisar refazer um comando inteiro Invoke-History
repleto de pipes ou ponto e vírgula, use-o (o padrão é o último comando completo na sua totalidade).
Eu sempre pensei no JEA (Just Enough Administration) como uma tentativa de aproximar algumas das funcionalidades do sudo. Você pode ler sobre isso aqui:
https://docs.microsoft.com/en-us/powershell/jea/overview
A diferença é que ele usa o sistema de comunicação remota PS em vez de aplicar à máquina local. Essa pode ser uma diferença bastante crítica, o suficiente para afastá-la do sudo.
Elevar para dar conta do Controle de Conta de Usuário, usando runas ou outra coisa, não se encaixa muito bem para mim. É mais como um paralelo de su -
.
$^
é o primeiro token do comando anterior. Se eu fornecer um script com ponto,. ./foo.ps1
então$^
é.
. Isso também significa que os argumentos não estão contidos. Fazer qualquer coisa que exceda um único token não funcionará dessa maneira.