Использование PowerShell через MMC для выполнения команд CMD уровня администратора

Использование PowerShell через MMC для выполнения команд CMD уровня администратора

Я новичок в PowerShell. Хочу сделать что-то вроде этого при завершении работы перед выключением компьютера. Планирую, чтобы Windows MMC/Local Group Policy Editor делал это с помощью скрипта PowerShell.

cmd as admin
echo "SOME COMMAND"
echo "exit"

По сути, после запуска события выключения или перезагрузки должно произойти следующее:

  1. Откройте CMD от имени администратора (и автоматически выберите «Да» в UAC?).

  2. Выполните КАКУЮ-НИБУДЬ КОМАНДУ (их будет много).

  3. Закройте CMD и дайте Windows 10 выключиться/перезагрузиться.

Теперь я знаю, как заставить MMC добавить скрипт PowerShell для выполнения до завершения команды shutdown. Мне просто нужно знать синтаксис для выполнения трех вышеуказанных шагов.

Но для ясности:

Моя главная цель — иметь возможность открыть CMD как администратор, ввести команду и выйти из CMD. PowerShell обычно не выполняет некоторые конкретные команды как администратор правильно, но CMD выполняет. Таким образом, самому PowerShell не нужны права администратора, только временный запуск CMD.

Я не против нажать ДА на UAC, когда это необходимо, потому что я думаю, что если дойдет до этого, я, вероятно, смогу просто использовать sendkeys {TAB}{TAB}{ENTER}или что-то в этом роде. Чего я, похоже, не могу найти в интернете, так это как запустить скрипт PowerShell, чтобы его можно было сохранить. Хотя я вижу много sendkeys в синтаксисе. В bash в Linux это просто: #!/bin/bashи presto insta-bash, но Windows кажется отсталым в этом отношении.

Если есть способ сделать это лучше, чем CMD > Echo "stuff" > exit CMD, пожалуйста, дайте мне знать. Я знаю, что я хочу набрать в каждом Echo "stuff" (или, скорее, sendkeys, если я в конечном итоге буду использовать его), я просто не знаю, как открыть CMD от имени администратора.

Спасибо.

решение1

Я действительно не понимаю, что вы ищете.

Но цели PowerShell не в том, чтобы быть инструментом GUI-автомата. Вы можете сделать что-то из этого с помощью SendKeys, как и с помощью VBScript.

Тем не менее, поскольку вы новичок, крайне важно, чтобы вы быстро освоили PowerShell, чтобы убедиться, что вы действительно понимаете его, а также когда и почему его использовать. Зайдите на YouTube и найдите «Beginning PowerShell» и выполните поиск в Интернете по PowerShell с помощью SendKeys ---пример---

Что касается вашего варианта использования:

По сути, после запуска события выключения или перезагрузки должно произойти следующее:

  1. Откройте CMD от имени администратора (и автоматически выберите «Да» в UAC?).

Запуск PowerShell — это командная строка PowerShell. Нет необходимости открывать cmd.exe, чтобы использовать его. PowerShell может заменить все, что делает cmd.exe. Принятие UAC необходимо только в том случае, если вы пытаетесь выполнить команду с повышенными привилегиями. PowerShell не пропустит UAC, поскольку вам необходимо предоставить учетные данные администратора. Windows требует этого.

  1. Выполните КАКУЮ-НИБУДЬ КОМАНДУ (их будет много).

Просто создайте скрипт с нужными вам командами.

  1. Закройте CMD и дайте Windows 10 выключиться/перезагрузиться.

PowerShell по умолчанию завершит работу после завершения скрипта. Если только вы специально не укажете ему этого не делать.

То, что вы, похоже, хотите иметь, это сценарии выхода из системы и входа в систему. Это вопрос написания их и добавления в настройки политики входа/выхода из системы или локальной машины.

Используйте PowerShell и групповую политику для вашего сценария входа

Использование групповой политики для развертывания сценария входа Windows PowerShell

*Обновление основано на последующих действиях thead ниже*

Похоже, вам нужны сценарии входа и выхода из системы. Это вопрос их написания и добавления в параметры политики группы входа/выхода из системы или локальной машины. Вы можете задать те же параметры для выключения. Помните, что перезагрузка вызовет действие входа в систему. У нее тоже есть параметр политики. Консоль PowerShell выполнит любую команду, которую может выполнить cmd.exe. Вам нужно правильно их вызывать. Если проблема в UAC, то отключите все это вместе. Хотя это означает, что вы принимаете все риски безопасности, делая это.

Принятие UAC необходимо только в том случае, если вы пытаетесь запустить команду с повышенными правами. PowerShell не пропустит UAC, поскольку вам необходимо предоставить учетные данные администратора. Windows требует этого.

Вот для чего нужен Start-Process -Verb RunAs, и у него есть переключатель учетных данных, но вам все равно придется его предоставить. Поэтому вам все равно будет предложено. Вы можете сохранить учетные данные в защищенном файле для повторного использования, но это нужно сделать до запуска любых скриптов.

Вы можете попробовать выполнить следующие действия на свой страх и риск.

https://docs.microsoft.com/en-us/previous-versions/technet-magazine/cc162321(v=msdn.10)

https://github.com/sushihangover/SushiHangover-PowerShell/tree/master/modules/PSUserTools

(в частности, скрипт с именем Start-ProcessAsAdministrator.ps1)

Связанный контент