Можно ли использовать PowerShell в среде восстановления Windows?

10

Я попытался получить доступ к PowerShell из командной строки в среде восстановления Windows, но безуспешно. Я могу запускать там VBScripts без проблем, и теперь мне интересно, есть ли какой-нибудь способ запустить мои команды PowerShell оттуда.

Можно ли использовать PowerShell в WinRE или я в лучшем случае застрял с поддержкой VBScript / JScript?

Обратите внимание, что речь идет о WinRE, а не о WinPE!

РЕДАКТИРОВАТЬ

EBGreen прокомментировал добавление в WinPE дополнительных компонентов , которые позволят использовать PowerShell в этой среде. Можно ли использовать тот же подход с WinRE?

Riaan
источник
Вы можете запустить powershell из командной строки с start powershellпомощью командной строки. Это работает в WinRE?
Джордж Дакетт
Я пробовал оба start powershellи powershellиз командной строки WinRE безуспешно - говорит, что это неизвестные команды. Они прекрасно работают в Windows, хотя. Интересно, это как-то связано с зависимостью PowerShell от .Net
Riaan
Хорошо, последнее предложение, попробуйте перейти к файлу PowerShell и запустить его. Отсюда, Path to Powershell.exe (v 2.0) Я думаю, это будет что-то вроде, C:\Windows\System32\WindowsPowerShell\v1.0но вам, возможно, придется сначала поискать в Windows.
Джордж Дакетт
Сначала я попытался запустить powershellкоманду из ее каталога, но безуспешно. У меня был тот же результат, что и у Джорджа Дакетта ниже.
Риан

Ответы:

7

Вы можете сделать это, но вам понадобится установить Windows 8 и Windows 8 ADK с Windows PE (это довольно большая загрузка). Я вполне уверен, что вы можете использовать этот образ Win RE при установке Windows 7, как только вы его запустите, но я не уверен на 100%.

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

Найди свой WinRE.wim

Я использовал Все, чтобы найти свое. Это случилось, чтобы скрыться C:\Recovery\67c45205-df4a-11e1-8fd9-9103ad6af7ef. Это может быть верно и для вас. Чтобы посмотреть, вам придется отключить Hide Protected System Files. Этот параметр скрывается в проводнике подView, Options, Change Folder and Search Options, View tab.

Показать вкусности

Изменить разрешения

Вам придется возиться с разрешениями, чтобы даже увидеть разрешения для этой папки. Неразбериха с разрешениями всегда заставляет немного нервничать, но, если вы решитесь, продвигайтесь вперед. Я просто добавил свое имя пользователя в разрешения безопасности с полным контролем.

Щелкните правой кнопкой мыши Recovery, выберите свойства

Открытые свойства

Откройте вкладку «Безопасность»

Нажмите вкладку безопасности

Нажмите Дополнительно

Знаешь, если тебе нужна такая большая помощь, тебе, вероятно, не стоит делать это на самом деле ...

Нажмите Добавить

Возиться с разрешениями безопасности может вызвать серьезную боль

Выберите принципала

Но скриншоты веселые и дают мне всю информацию

Добавьте свое имя пользователя (или администратора, если вы хотите работать с ним как администратор)

Теперь ты знаешь мое супер секретное настоящее имя, зомг!

Копировать WinRE.wim

Я решил скопировать .wim, чтобы я мог работать с ним, но, полагаю, вы могли бы работать и с ним напрямую. Если вы решили работать с ним напрямую, измените команду соответствующим образом. Я скопировал мой в C:\winre\.

Добавьте PowerShell к изображению

Теперь, когда у нас есть .wim для работы, мы можем добавить необходимые компоненты для PowerShell. Вам понадобятся соответствующие компоненты Windows ADK, включая Windows PE.

Смонтировать изображение

Найдите Deployment and Imaging Tools, щелкните правой кнопкой мыши и запустите от имени администратора.

Серьезно, если вы не можете найти это по своему усмотрению сейчас

Создайте папку для монтирования образа

По крайней мере, я не позволяю людям копировать и вставлять эти вещи

Запустите эту команду, чтобы смонтировать образ: Скриншоты отлично подходят для предотвращения копирования и вставки!

Добавьте необходимые пакеты

Там немного вперед и назад участвуют в следующих командах, и все должно быть сделано по порядку. Нам нужно установить следующие пакеты:

  • WinPE-WMI
  • WinPE-NetFX4
  • WinPE-Scripting
  • WinPE-PowerShell3
  • WinPE-DismCmdlets
  • WinPE-StorageWMI
  • WinPE-HTA

Мы также должны будем установить пакеты en-us (заменяющие предпочитаемый вами язык) для каждого из вышеуказанных пакетов.

Начните с этого:

dism /image:C:\winre\mount /add-package /packagepath:"C:\Program Files (x86)\Windows Kits\8.0\Assessment and Deployment Kit\Windows Preinstallation Environment\amd64\WinPE_OCs\WinPE-WMI.cab

Затем запустите это:

dism /image:C:\winre\mount /add-package /packagepath:"C:\Program Files (x86)\Windows Kits\8.0\Assessment and Deployment Kit\Windows Preinstallation Environment\amd64\WinPE_OCs\en-us\WinPE-WMI_en-us.cab

Теперь Upдважды нажмите для вызова первой команды и замените WMI на NetFX4. Повторяйте это, пока не установите все необходимые компоненты вместе с нужным языком. Не забудьте сделать это по порядку.

Готово изображение

Теперь, когда все пакеты готовы, нам нужно зафиксировать наши изменения и завершить наш WinRE.wim. Оттуда мы можем создать .iso, протестировать его в Hyper-V и скопировать WinRE.wim в наш файл восстановления, чтобы у нас был доступ к PowerShell при следующем сбое системы.

Размонтировать и зафиксировать

Запустите следующую команду, чтобы отключить образ и зафиксировать изменения: Вышеприведенная команда не подходит для ввода, поэтому я позволю C + P скользить по ней ...

Несколько вещей могут пойти не так, как надо, и сообщения об ошибках ужасно вводят в заблуждение. Убедитесь, что нет опечаток, и у вас ничего не открыто, связанных с этими файлами, даже Explorer.

Замените оригинальный WinRE.wim и протестируйте

Сделайте резервную копию вашего оригинального WinRE.wim и замените его новым. Теперь запустите msconfig и откройте вкладку Boot. Проверьте Safe Bootи выберите Alternate Shell. Перезагрузитесь и попробуйте.

Трололол Вы застряли в безопасном ботинке сейчас!  Я перезапустил три раза, прежде чем понял, что эта настройка палки ...

Boom! PowerShell в Windows RE

Start PowerShell и наслаждаться!

Ааа, красивый синий PowerShell ... Сладкая победа.

Чтобы выйти из безопасного режима, вам нужно запустить msconfig из командной строки и снять флажок Safe Boot.

Таннер Фолкнер
источник
1
медленно ... хлоп
Уильям Джексон
Спасибо за исчерпывающий ответ, Таннер! Это именно то, что мне было нужно.
Риан
1
В случае, если ваш образ WinRE находится в одном из этих разделов восстановления OEM, вы можете использовать Visual BCD Editor, чтобы взглянуть на загрузочную запись Recovery и найти путь к образу.
Боб
1
Спустя 7 лет на «PE for win10» это все еще вполне допустимо, но пакеты были переименованы, пропуская номера. Используйте WinPE-PowerShellвместо WinPE-PowerShell3и WinPE-NetFXвместо WinPE-NetFX4. На WinPE-HTAсамом деле никогда не было необходимости, и это даже не связано с PS. Не добавляйте его, если вы не запускаете приложения HTA. StorageWMI и DismCmdlets - это модули для PS, они вам не нужны, если они вам не нужны. Они заменяют diskpart и dism.
Официальный
2
  1. Windows PowerShell требует Microsoft .NET Framework. [ источник ]
  2. Среда восстановления Windows основана на Windows PE. [ источник ]
  3. Windows PE не поддерживает .NET Framework. [ источник ]

Следовательно, PowerShell нельзя использовать в WinRE.

Уильям Джексон
источник
Да, я думал, что это, вероятно, из-за этих зависимостей MS.Net. Этот ответ определенно действителен для неизмененных установок по умолчанию. Спасибо, Уильям!
Риан
0

Да, я много чего перепробовал и пришел к выводу, что это не сработает. Ответ Уильяма предоставляет доказательства, подтверждающие это.


Я отметил, где PowerShell. На моей машине это в c:\windows\system32\windowspowershell\v1.0\powershell.exeи в c:\windows\syswow64\windowspowershell\v1.0\powershell.exe.

Ярлык в административных инструментах указывает на syswow64.

Затем я перезапустился в режиме восстановления и попал в командную строку.

Первое, что я заметил, это то, что я не могу добраться до дороги c.

Итак, я побежал, diskpartзатем ввел команду, list volчтобы получить список доступных дисков. На моей машине мой диск C назывался моим диском D в консоли восстановления.

Поэтому я вышел diskpart, набрав exit, затем в командной консоли набрал d:, а затем cd\windows\syswow64\windowspowershell\v1.0.

Обратите внимание, что если вы делаете это поэтапно, то при использовании dirдля подтверждения имен папок отображается не все (а именно v1.0папка).

Оказавшись там, я скрестил пальцы и набрал powershell, только чтобы получить сообщение:

The subsystem needed to support the image type is not present

Я немного погуглил сообщение об ошибке выше, но не смог найти ничего, что указывало бы на то, что powershell может работать.


Я также попробовал другой powershell.exe в system32, но не получил никакого сообщения (нет didn't recognise the commandили что-то еще.

введите описание изображения здесь

Джордж Дакетт
источник
Это не работает Спасибо, Джордж.
Риан