Почему powershell не выполняет команды

Windows PowerShell перестал работать: попробуйте эти 4 исправления

Испытание ошибок Windows PowerShell не является распространенной ситуацией, поэтому вам необходимо принять меры при получении сообщения Windows PowerShell перестало работать .

Эта ошибка очень раздражает, так как она остановит процессы, запущенные в вашей системе Windows 10. Более того, вы получите сообщение об ошибке без дополнительной информации, поэтому вы не можете сказать, что именно вызвало эту проблему.

Во всяком случае, вы не должны паниковать. Как всегда, существуют различные решения для устранения неполадок, которые можно применить для исправления ошибки «Windows PowerShell прекратил работу».

Действия по исправлению ошибок Windows PowerShell перестали работать

  1. Инициируйте полное сканирование системы.
  2. Сделайте чистый процесс загрузки.
  3. Отключите и снова включите Windows PowerShell.
  4. Создайте новую учетную запись Microsoft.

1. Инициируйте полное сканирование системы

В некоторых ситуациях атака вредоносного ПО может быть причиной того, что Windows PowerShell не работает должным образом. Итак, первое, что нужно сделать, это запустить сканирование безопасности.

Скорее всего, вы заразились Poweliks , вредоносной программой, которая мешает PowerShell. Файл, связанный с этим вирусом: dllhost.exe * 32 или dllhst3g.exe * 32, и его обычно можно остановить из диспетчера задач.

Теперь в этом случае вам нужно использовать антивирусную или антивирусную программу, например Malwarebytes, и сканировать систему Windows 10 на наличие возможных зараженных файлов. Программа безопасности должна автоматически находить и удалять вредоносные программы.

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

  1. Нажмите горячие клавиши Win + R и в поле RUN введите msconfig и нажмите Enter.
  2. Из окна Конфигурация системы перейдите на вкладку Загрузка .
  3. В разделе «Загрузка» выберите Безопасная загрузка .
  4. Сохраните изменения и перезагрузите компьютер.
  5. Это все.

2. Инициируйте чистую загрузку

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

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

Вот как вы можете запустить процесс чистой загрузки:

  1. Нажмите горячие клавиши Win + R на клавиатуре, чтобы запустить окно RUN.
  2. Там введите msconfig и нажмите Enter.
  3. В Конфигурация системы перейдите на вкладку Общие.
  4. С этого момента в разделе Выборочный запуск снимите флажок «Загружать элементы запуска».
  5. Затем перейдите на вкладку Услуги .
  6. Установите флажок скрыть все службы Microsoft , а затем нажмите Отключить все .
  7. Теперь перейдите на вкладку Автозагрузка и нажмите ссылку открыть диспетчер задач .
  8. Из диспетчера задач отключите все автозагрузки программ.
  9. Сохраните ваши изменения и закройте эти окна.
  10. Перезагрузите систему Windows 10.

ТАКЖЕ ПРОЧИТАЙТЕ . Microsoft PowerShell все чаще используется для распространения вредоносного ПО.

3. Отключите и снова включите Windows PowerShell

  1. Нажмите горячие клавиши Win + X и выберите Панель управления .
  2. С панели управления перейдите в категорию .
  3. А из отображаемого списка выберите Удалить – в разделе «Программы».
  4. На левой панели главного окна нажмите ссылку Включить или отключить функции Windows .
  5. Прокрутите вниз и найдите запись Windows PowerShell .
  6. Снимите флажок с PowerShell.
  7. Сохраните и примените ваши изменения.
  8. Перезагрузите компьютер с Windows 10.
  9. После этого повторите шаги, описанные выше, и снова включите функцию Windows PowerShell.

ТАКЖЕ ЧИТАЙТЕ: 10 лучших программ для удаления для пользователей ПК

4. Создайте новую учетную запись Microsoft

Ваша учетная запись может быть повреждена (по разным причинам), и поэтому вы можете получить сообщение об ошибке «Windows PowerShell прекратил работу».

Читайте также:  Autohotkey почему может не работать

Итак, попробуйте создать новую учетную запись, а затем убедитесь, что проблема все еще возникает или нет.Вот то, что вам нужно следовать:

  1. Нажмите на значок запуска Windows.
  2. Выберите Настройки и перейдите в раздел Аккаунты .
  3. Оттуда выберите Семья и другие пользователи .
  4. Нажмите Добавить кого-то еще на этот компьютер.
  5. Просто следуйте инструкциям на экране для возобновления этого процесса.
  6. Подсказка: не забудьте сделать резервную копию своих данных перед завершением этого процесса – возможно, вам придется импортировать ваши личные файлы и приложение под новой учетной записью.

Надеемся, что сообщение об ошибке «Windows PowerShell перестало работать» исчезло. Если у вас есть вопросы, связанные с решениями для устранения неполадок, описанными выше, свяжитесь с нашей командой.

Вы можете легко связаться с нами, используя поле для комментариев снизу или заполнив контактную форму, доступную на странице О нас.

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

Источник

Почему мои сценарии PowerShell не работают?

Я написал простой командный файл в виде сценария PowerShell, и при его запуске возникают ошибки.

Он находится в каталоге сценариев на моем пути. Это ошибка, которую я получаю:

Не может быть загружен, потому что выполнение сценариев отключено в этой системе. См. «Получить справку о подписании».

Я заглянул в справку, но она мне не помогла.

10 ответов

Это может быть уровень безопасности PowerShell по умолчанию, который (IIRC) будет запускать только подписанные сценарии.

Попробуйте ввести это:

Это укажет PowerShell разрешить запуск локальных (то есть на локальном диске) неподписанных сценариев.

Затем попробуйте снова выполнить свой сценарий.

Вам нужно запустить Set-ExecutionPolicy :

Всегда используйте указанную выше команду, чтобы разрешить выполнение PowerShell в текущем сеансе.

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

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

Команда set-executionpolicy unrestricted позволит любому сценарию, который вы создаете, запускаться от имени вошедшего в систему пользователя. Перед выходом из системы обязательно установите для параметра «Executionpolicy» значение «подписано» с помощью команды set-executionpolicy signed .

В Windows 10: щелкните изменить свойство безопасности myfile.ps1 и измените «разрешить доступ», щелкнув правой кнопкой мыши / свойства на myfile.ps1.

Мы можем обойти политику выполнения красивым способом (внутри командной строки):

Или внутри powershell:

Мне удалось обойти эту ошибку, вызвав PowerShell следующим образом:

То есть я добавил -executionpolicy bypass к способу вызова скрипта.

Это работало с пакетом обновления 1 для Windows 7. Я новичок в PowerShell, поэтому могут быть предостережения, о которых я не знаю.

[Edit 2017-06-26] Я без проблем продолжал использовать эту технику в других системах, включая Windows 10 и Windows 2012 R2.

Вот что я сейчас использую. Это предохраняет меня от случайного запуска скрипта, щелкнув по нему. Когда я запускаю его в планировщике, я добавляю один аргумент: «планировщик», и это обходит приглашение.

Это также приостанавливает окно в конце, чтобы я мог видеть вывод PowerShell.

Источник

Почему мои скрипты PowerShell не работают?

Я написал простой командный файл в виде скрипта PowerShell и получаю ошибки при их запуске.

Это в каталоге скриптов в моем пути. Это ошибка, которую я получаю:

Не может быть загружен, потому что выполнение сценариев отключено в этой системе. Пожалуйста, смотрите «Получить справку о подписи».

Я посмотрел в помощь, но это менее чем полезно.

ОТВЕТЫ

Ответ 1

Это может быть уровень безопасности PowerShell по умолчанию, который (IIRC) будет запускать только подписанные сценарии.

Попробуйте ввести это:

Это скажет PowerShell разрешить запуск локальных (то есть на локальном диске) неподписанных сценариев.

Затем попробуйте снова выполнить ваш скрипт.

Ответ 2

Вам нужно запустить Set-ExecutionPolicy :

Ответ 3

Всегда используйте приведенную выше команду, чтобы включить выполнение PowerShell в текущем сеансе.

Ответ 4

Мне удалось обойти эту ошибку, вызвав PowerShell следующим образом:

Читайте также:  Не могу удовлетвориться руками почему

То есть я добавил -executionpolicy bypass к тому, как я вызывал скрипт.

Это работало в Windows 7 с пакетом обновления 1 (SP1). Я новичок в PowerShell, поэтому могут быть оговорки, которые я не знаю.

[Edit 2017-06-26] Я продолжал использовать эту технику в других системах, включая Windows 10 и Windows 2012 R2, без проблем.

Вот что я сейчас использую. Это удерживает меня от случайного запуска скрипта, нажав на него. Когда я запускаю его в планировщике, я добавляю один аргумент: «планировщик», который игнорирует подсказку.

Это также приостанавливает окно в конце, чтобы я мог видеть выходные данные PowerShell.

Ответ 5

Также стоит знать, что вам может потребоваться включить .\ перед именем script. Например:

Ответ 6

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

Ответ 7

Команда set-executionpolicy unrestricted позволит любому script, который вы создаете для запуска, как зарегистрированный пользователь. Просто не забудьте установить для параметра executepolicy значение, подписанное с помощью команды set-executionpolicy signed до выхода из системы.

Источник

HOW TO: Что делать, если Windows не запускает скрипты PowerShell по двойному клику

Партнер

Скорее всего, при попытке запуска ты видишь такую ошибку: «Невозможно загрузить файл C:Usersusernametest1.ps1» (File C:UsersC:Usersusernametest1.ps1 cannot be loaded because running scripts is disabled on this system).

Ошибка пошика

Xakep #218. Смотри во все глаза

Первым делом проверим настройки политики. Для этого откроем редактор PowerShell и выполним команду Get-ExecutionPolicy . В ответ ты получишь один из вариантов:

  • Restricted — запрет запуска сценариев;
  • AllSigned — могут быть запущены только сценарии, подписанные доверенным издателем. Будет запрашивать подтверждение перед каждым выполнением;
  • RemoteSigned — разрешено выполнять созданные и скачанные сценарии, подписанные доверенным издателем;
  • Unrestricted — самый опасный вариант, никаких ограничений. Все скрипты могут быть запущены.

Чтобы выполнять сценарии, понизим бдительность системы и установим RemoteSigned:

Попробуй снова запустить скрипт — теперь должно получиться.

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

Здесь есть еще интересный нюанс. Если ты скачал скрипт из интернета и совершенно точно хочешь его запустить, то его потребуется сначала разблокировать. Для этого зайди в свойства файла и ищи внизу кнопку «Разблокировать».

Снимаем блокировку с файла

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

Источник

Обработка ошибок в PowerShell (часть 1)

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

В PowerShell ошибки делятся на два типа: прерывающие (Terminating) и непрерывающие (Non-Terminating). Как следует из названия, непрерывающие ошибки позволяют продолжить выполнение команды, тогда как при возникновении прерывающей ошибки дальнейшее продолжение выполнения команды невозможно. К примеру, у нас есть файл со списком служб, которые необходимо перезапустить следующей командой:

Get-Content -Path C:\Files\services.txt | Restart-Service

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

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

PowerShell позволяет обрабатывать оба эти типа ошибок. Большинство ошибок в PowerShell непрерывающие, и сегодня речь пойдет о том, как их обрабатывать.

Обработка непрерывающих ошибок

Для получения ошибки возьмем службу с ″оригинальным″ названием Service. Поскольку службы этой на сервере нет, то обращение к ней стабильно будет генерировать ошибку. Запросим данные о нескольких службах командой:

Читайте также:  Почему контакт не выходит со страницы

Как видно из примера, PowerShell не нашел службу Service, о чем выдал ошибку и затем продолжил выполнение команды. Давайте разберемся, почему команда повела себя именно так и как это поведение изменить.

За поведение команды при возникновении ошибки отвечает параметр ErrorAction, который может принимать одно из пяти значений:

• Continue;
• SilentlyContinue;
• Stop;
• Ignore;
• Inquire.

Примечание. Еще у ErrorAction может быть значение Suspend. Но это значение может применяться только к рабочим процессам (workflows), поэтому в рамках данной статьи речь о нем не пойдет.

Значение Continue означает, что при возникновении ошибки информация об этом будет выведена на экран (отправлена в поток вывода Error) и добавлена в автоматическую переменную $Error, после чего выполнение команды будет продолжено. Надо сказать, что Continue — это действие, определенное в сеансе по умолчанию, поэтому его можно не указывать явно.

При значении SilentlyContinue информация об ошибке добавляется в переменную $Error, но не выводится на экран. При этом команда продолжает выполняться дальше, также как и в предыдущем случае.

Значение Stop останавливает дальнейшее выполнение команды при возникновении ошибки. И наоборот, значение Ignore полностью игнорирует возникновение ошибки, при этом не выводится сообщение на экран и не производится запись в $Error. Это значение появилось в PowerShell 3.0.

Inquire — наиболее интересное значение ErrorAction. Если задать это значение, то при возникновении ошибки предлагается на выбор несколько действий: продолжить (Yes), продолжить не смотря на эту и все последующие ошибки (Yes to All), остановить (Halt) или приостановить (Suspend) выполнение команды.

Самый необычный эффект дает Suspend, при выборе которого открывается параллельный сеанс (Nested Namespace). Определить его можно по значку >>. Nested Namespace представляет из себя дочерний процесс, в котором можно полноценно работать — выполнять команды, запускать скрипты и т.п. Этот режим удобно использовать для отладки скриптов, например можно по быстрому исправить причину ошибки и продолжить выполнение. Для выхода из Nested Namespace достаточно набрать exit и выбрать необходимое действие.

Примечание. У параметра ErrorAction есть алиас — EA. Кроме того, вместо названия параметра можно указывать числовые значения: 0 (SilentlyContinue), 1 (Stop), 2 (Continue), 3 (Inquire). Так например, вместо:

Get-Service service,spooler -ErrorAction SilentlyContinue

можно написать так:

Get-Service service,spooler -EA 0

Переменные для обработки ошибок

Как я уже говорил, если не указывать параметр ErrorAction, то для команды действует режим обработки ошибок, определенный в сеансе. Этот режим задается переменной $ErrorActionPreference, которая по умолчанию имеет значение Continue. При желании можно переопределить режим для всего сеанса, задав переменной $ErrorActionPreference нужное значение.

Все ошибки PowerShell сохраняет в автоматическую переменную $Error. Это глобальная переменная, которая представляет из себя массив строк, содержащий записи обо всех ошибках в текущем сеансе. Каждая новая ошибка добавляется в начало массива, соответственно для просмотра последней ошибки надо обратиться к самому первому элементу массива $Error[0].

$Error имеет свои свойства и методы, которые можно использовать. Например, посмотреть общее количество ошибок в текущем сеансе можно командой $Error.Count, а очистить список — командой $Error.Clear().

Переменная $Error не безразмерна, по умолчанию она хранит не более 256 ошибок. При превышении этого количества наиболее старые ошибки будут затираться. При необходимости количество записей в переменной $Error можно увеличить, изменив значение другой переменной $MaximumErrorCount.

Кроме $Error для хранения ошибок допускается задавать собственные переменные. Сделать это можно с помощью параметра ErrorVariable, например так:

Get-Service service,spooler -ErrorAction SilentlyContinue -ErrorVariable var

Обратите внимание, что имя переменной в команде задается без знака $, хотя в дальнейшем к ней обращаемся как к обычной переменной $var.

В отличие от глобальной переменной $Error заданные вручную переменные хранят только ошибки той команды, в которой они определены. Кроме того, по умолчанию эти переменные каждый раз перезаписываются и поэтому хранят только последнюю ошибку. Если вы хотите, чтобы новые ошибки добавлялись в переменную, не перезаписывая ее содержимое, то перед именем переменной надо поставить знак +, например +var.

Пока все, а в следующей части пойдет о способах обработки прерывающих ошибок.

Источник

Поделиться с друзьями
Ответ и точка