Судо !! эквивалент в PowerShell

Ответы:

13

$^ переменная, которая раскрывается до последней выполненной команды Powershell.

Вы можете запустить команду, используя другого пользователя runas, поэтому работает следующее:

runas /user:domain\administrator $^

Чтобы сократить это немного, вы можете сделать немного магии с псевдонимами. Взгляните на эту статью Technet для получения дополнительной информации.

РЕДАКТИРОВАТЬ: Одна оговорка - $^выполняет только первую команду в конвейере или многокомпонентной строке. Если вам нужно повторить всю команду, заполненную трубами или точками с запятой, используйте Invoke-Historyвместо этого (по умолчанию используется последняя полная команда).

Hyppy
источник
3
На самом деле, $^это первый токен предыдущей команды. Если я дот-источник сценария с, . ./foo.ps1то $^есть .. Это также означает, что аргументы не содержатся. Выполнение всего, что превышает один токен, не будет работать таким образом.
Джои
хорошо, он спрашивает пароль после этого? Я пытаюсь избежать встраивания незашифрованного пароля в мой скрипт.
Старший системный инженер
Да. Если вы не запускаете сценарий от имени администратора, вам потребуется предоставить учетные данные, чтобы выполнить все, что требует прав администратора. Вы можете захотеть взглянуть на что-то вроде Kixtart, чтобы токенизировать встроенный пароль
Hyppy,
0

Я всегда думал о JEA (Just Enough Administration) как о попытке приблизить некоторые функциональные возможности sudo. Вы можете прочитать об этом здесь:

https://docs.microsoft.com/en-us/powershell/jea/overview

Отличие состоит в том, что он использует удаленное взаимодействие PS, а не применяется к локальной машине. Это может быть весьма критическим отличием, достаточным, чтобы отодвинуть его слишком далеко от sudo.

Поднятие учетной записи для контроля учетных записей пользователей, используя runas или что-то еще, не очень подходит для меня. Это больше похоже на параллель su -.

Крис Дент
источник
1
We're sorry, the page you requested cannot be found., Кажется, сейчас здесь .
GnP