Respuestas:
$^
es una variable que se expande hasta el último comando de Powershell ejecutado.
Puede ejecutar un comando como otro usuario utilizando runas
, por lo que funciona lo siguiente:
runas /user:domain\administrator $^
Para acortar eso un poco, puedes hacer algo de magia con alias. Eche un vistazo a este artículo de Technet para obtener más información.
EDITAR: Una advertencia: $^
solo ejecuta el primer comando en una tubería o línea de comandos múltiples. Si necesita rehacer un comando completo que está salpicado de tuberías o puntos y comas, use Invoke-History
en su lugar (que por defecto es el último comando completo en su totalidad).
Siempre he pensado en JEA (Just Enough Administration) como un intento de aproximar algunas de las funciones de sudo. Usted puede leer sobre ello aquí:
https://docs.microsoft.com/en-us/powershell/jea/overview
La diferencia es que usa la comunicación remota de PS en lugar de aplicarla a la máquina local. Esta puede ser una diferencia bastante crítica, suficiente para alejarla demasiado del sudo.
Elevar para tener en cuenta el Control de cuentas de usuario, usar runas u otra cosa, realmente no me queda bien. Es más como un paralelo de su -
.
$^
es el primer token del comando anterior. Si genero un script con punto,. ./foo.ps1
entonces$^
es.
. Esto también significa que los argumentos no están contenidos. Hacer cualquier cosa que exceda un solo token no funcionará de esta manera.