Відповіді:
$^
- це змінна, яка розширюється до останньої виконаної команди Powershell.
Ви можете запустити команду як інший користувач, використовуючи runas
наступні дії:
runas /user:domain\administrator $^
Щоб трохи скоротити це, ви можете зробити магію псевдонімами. Погляньте на цю статтю Technet, щоб отримати додаткову інформацію.
EDIT: Один застереження - $^
виконує лише першу команду в конвеєрі або багатокомандному рядку. Якщо вам потрібно повторити цілу команду, засипану трубами або крапками з комою, використовуйте Invoke-History
натомість (яка за замовчуванням виконує останню повну команду в повному обсязі).
Я завжди хотів JEA (Just Enough Administration) як спробу наблизити частину функціональності sudo. Про це можна прочитати тут:
https://docs.microsoft.com/en-us/powershell/jea/overview
Відмінність полягає в тому, що він використовує видалення PS, а не звернення до локальної машини. Це може бути досить критичною різницею, достатньою, щоб відсунути його занадто далеко від судо.
Підвищення на облік для контролю облікових записів користувачів, використання рун або чогось іншого, мені не дуже підходить. Це більше схоже на паралель su -
.
$^
це перший маркер попередньої команди. Якщо я дот-джерелом сценарій з. ./foo.ps1
тоді$^
є.
. Це також означає, що аргументи не містяться. Робити що-небудь, що перевищує один маркер, це не вийде.