Отладка сценариев в интегрированной среде сценариев windows powershell

Содержание:

Как установить PowerShell в Linux

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

  • в скрипте используются команды, которые отсутствуют в Linux версии PowerShell (например, из-за того, что связаны с настройками Windows или неприменимы для Linux по другим причинам)
  • скрипт обращается к переменным окружения Windows
  • в скрипте используются утилиты Windows, отсутствующие в Linux

Могут быть и другие причины проблем, но много всё равно работает.

Многие дистрибутивы Linux поддерживаются официально и простые инструкции по установке PowerShell в свой дистрибутив, а также установочные файлы вы найдёте здесь: Как установить PowerShell в Linux.

Установка PowerShell в Kali Linux

PowerShell добавлен в стандартные репозитории Kali Linux, поэтому установка очень простая:

sudo apt install powershell

Установка PowerShell в Arch Linux, BlackArch

git clone https://aur.archlinux.org/powershell-bin.git
cd powershell
makepkg -si

Чтобы узнать версию PowerShell выполните команду:

Get-Host | Select-Object Version

Запуск PowerShell скрипта в автозагрузке сервера

Открываем оснастку «Управление групповой политикой» и создаем на нужном уровне вашей иерархии организационных подразделений, новую политику, в моем примере, это будет «Добавление баз 1С». Переходим к ее редактированию.

Для того, чтобы при загрузке вашего сервера или компьютера, к нему применялся нужный вам сценарий PowerShell вам необходимо перейти в раздел:

Конфигурация компьютера — Политики — Конфигурация Windows — Сценарий (запуск/завершение) (Computer Configuration — Policies — Windows Settings — Scripts (Startup/Shutdown)

Тут вы увидите два возможных варианта «Автозагрузка» и «Завершение работы»

Далее вы открываете пункт «Автозагрузка», переходите на вкладку «Сценарий PowerShell» и нажимаете кнопку «Добавить». Через окно «добавление сценария» откройте папку «Startup» и скопируйте туда ваш скрипт. Теперь данный файл будет частью папки Sysvol и располагаться в конкретном GPO объекте.

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

Еще есть ряд нюансов при использовании выполнения скриптов PowerShell средствами групповой политики:

  1. Во первых по умолчанию в Windows есть 5-ти минутная задержка выполнения скриптом, как ее отключать я рассказывал можете почитать вот тут.
  2. Если у вас в локальной сети присутствуют операционные системы по типу Windows Server 2008 или ниже, то там есть подводные камни в виде выполнения неподписанных скриптов и во вторых в старой версии PowerShell

Хочу отметить, что начиная с Windows Server 2012 R2, Windows 8.1 и выше, все запускаемые сценарии PowerShell через GPO работают в режиме Bypass, что подразумевает игнорирование политики Set-ExecutionPolicy. Но если у вас есть более старые клиенты, то вы можете пойти вот таким путем:

Вы можете явно указать исполняемый файл PowerShell, для этого в политике откройте вкладку «Сценарии», нажмите добавить. В имя сценария введите путь до файла powerShell, это:

%windir%\System32\WindowsPowerShell\v1.0\powershell.exe

В параметрах сценария введите вот такие ключи и сетевой путь до скрипта PowerShell.

-Noninteractive -ExecutionPolicy Bypass –Noprofile -file \\root.pyatilistnik.org\SysVol\root.pyatilistnik.org\ Policies\{2B79FA3E-CB2F-4D15-A446-3DBBF887CD40}\ Machine\Scripts\Startup\Add-Base-1C.ps1

Еще для подстраховки вы можете включить параметр GPO

Конфигурация компьютера — Административные шаблоны — Компоненты Windows — Windows Powershell (Computer Configuration — Administrative Templates — Windows Components — Windows PowerShell)

Активируем настройку «Включить выполнение сценариев (Turn On Script Execution)», выставим значение «Разрешать все сценарии».

Небольшой совет, я бы вам рекомендовал включать выполнение всех сценариев исключительно для старых ОС, для этого вы можете сделать отдельную политику и применить ее только к старым операционным системам, через WMI фильтр

Проверяем применение вашей GPO, если все настроили правильно она отработает если нет, то начинается траблшутинг, проверяете фильтры GPO и общий алгоритм поиска проблем.

Как обновить PowerShell

Инструкция:

  1. В первую очередь необходимо скачать пакет прикладных программ Windows Management Framework. Версия утилиты должна быть 5.1.
  2. Также потребуется установить клиент NET Framework 4.5.2.
  3. После этого нужно запустить Повер Шелл с расширенными правами доступа.
  4. Далее потребуется ввести исполняемый код «msiexec.exe /package PowerShell-7.0.0-win-x64.msi /quiet ADD_EXPLORER_CONTEXT_MENU_OPENPOWERSHELL=1 ENABLE_PSREMOTING=1 REGISTER_MANIFEST=1».
  5. Затем нужно выполнить перезагрузку системы. После рестарта консоль будет обновлена до последней версии.

Обратите внимание! Если обновления для PowerShell не могут установиться, необходимо скачать MSI-файл последней версии программного обеспечения и самостоятельно выполнить инсталляцию

конфигурация ведения журнала без Windows

Важно!

Параметры конфигурации в этом разделе применимы только к macOS и Linux.
ведение журнала для Windows управляется Просмотр событийом Windows.

Ведение журнала PowerShell в macOS и Linux можно настроить в файле конфигурации PowerShell. полное описание ведения журнала PowerShell для систем, не относящихся к Windows, см. в статье о ведении журнала.

логидентити

Важно!

Этот параметр можно использовать только в macOS и Linux.

Задает имя удостоверения, используемое для записи в системный журнал. Значение по умолчанию — «PowerShell».

Где:

— Это строковое удостоверение, которое PowerShell должно использовать для записи в системный журнал.

Примечание

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

В этом примере мы настроим логидентити для предварительной версии PowerShell.

LogLevel

Важно!

Этот параметр можно использовать только в macOS и Linux.

Задает минимальный уровень серьезности, при котором PowerShell должен вести журнал.

Где:

может принимать одно из следующих значений:
Всегда
Критически важно
Ошибка
Предупреждение
Informational
Подробный
Отладка

Примечание

Задание уровня ведения журнала включает все уровни журнала, расположенные выше.

При выборе значения по умолчанию для этого параметра будет использоваться значение по умолчанию.
Значение по умолчанию — информационное.

В следующем примере задается значение verbose.

логчаннелс

Важно!

Этот параметр можно использовать только в macOS и Linux.

Определяет, какие каналы ведения журнала включены.

Где:

  • может принимать одно из следующих значений:

    • Операционные — записывает основные сведения о действиях PowerShell
    • Аналитическая — журналы более подробные диагностические сведения

Значение по умолчанию — » работает». Чтобы включить оба канала, включите оба значения в одну строку с разделителями-запятыми. Пример.

логкэйвордс

Важно!

Этот параметр можно использовать только в macOS и Linux.

Определяет, какие части PowerShell регистрируются в журнале. По умолчанию все ключевые слова журнала включены. Чтобы включить несколько ключевых слов, перечислите значения в одной строке с разделителями-запятыми.

Где:

  • может принимать одно из следующих значений:

    • Пространство выполнения — управление пространством выполнения
    • Конвейер — операции конвейера
    • Обработка протокола связи с протоколом, например PSRP
    • Транспорт — поддержка транспортного уровня, например SSH
    • Хост-функции узла PowerShell, например взаимодействие с консолью
    • Командлеты — встроенные командлеты PowerShell
    • Сериализатор — логика сериализации
    • Сеанс — состояние сеанса PowerShell
    • Манажедплугин — подключаемый модуль WSMan

Примечание

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

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

Выполнение PowerShell скриптов запрещено для данной системы

При попытке выполнить PowerShell скрипт (файл с расширением PS1) на чистой Windows 10, появляется ошибка:

Текущее значение политики выполнения скриптов PowerShell на компьютере можно получить командой:

Доступны следующие значения PowerShell Execution Policy:

  • Restricted – запрещен запуск скриптов PowerShell, можно выполнять только интерактивные команды в консоли;
  • AllSigned – разрешено выполнять только подписанные PS скрипты с цифровой подписью от доверенного издателя (можно подписать скрипт самоподписанным сертификатом и добавить его в доверенные). При запуске недоверенных скриптов появляется предупреждение:

Анализ выполнения и завершения, а так же сравнение

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

Часть этих кодов имеет следующую расшифровку (был использован автоматический переводчик):

  • 0 — операция успешно завершена.
  • 1 — Вызывается неправильная функция или неизвестная функция. 2 Файл не найден.
  • 10 — Неправильная среда.
  • 267008 — Задача готова к запуску в следующее запланированное время.
  • 267009 — В данный момент идет выполнение.
  • 267010 — Задача не будет запущена в запланированное время, потому что она отключена.
  • 267011 — Запуск еще не был выполнен.
  • 267012 — Для этой задачи больше нет запланированных запусков.
  • 267013 — Одно или несколько свойств, необходимых для запуска этой задачи по расписанию, не были установлены.
  • 267014 — Последний запуск задачи был прерван пользователем.
  • 267015 — Либо у задачи нет триггеров, либо существующие триггеры отключены или не установлены.
  • 2147750671 — Учетные данные повреждены.
  • 2147750687 — Экземпляр этой задачи уже запущен.
  • 2147943645 — Служба недоступна (установлен ли флажок «Запускать только при входе пользователя в систему»?).
  • 3221225786 — Приложение было закрыто в результате нажатия CTRL + C.
  • 3228369022 — Неизвестное программное исключение.

Альтернативное — вы можете открыть интерфейс планировщика и посмотреть какая ошибка отображается там (она будет текстом). 

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

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

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

Рекомендую

Как запустить скрипт PowerShell в Windows

Для запуска скрипта с расширением .ps1 нужно открыть консоль PowerShell и затем указать полный путь до файла. Вы также можете перейти в папку со скриптом либо с помощью команды cd, либо, если вы хотите полностью окунуться в стиль PowerShell, то можете использовать Set-Location.

Например, мне нужно перейти в папку C:\Users\Администратор\Downloads\WinPwn-master\:

Set-Location C:\Users\Администратор\Downloads\WinPwn-master\

Если вы просто попытаетесь запустить скрипт, то почти наверняка столкнётесь с ошибкой, что запуск скриптов запрещён. Для исправления ошибки выполните команду:

Set-ExecutionPolicy unrestricted

Подробности смотрите в статье «Ошибка «Невозможно загрузить файл ….ps1, так как выполнение сценариев отключено в этой системе» (РЕШЕНО)»

Запуск скрипта с помощью Import-Module

При запуске некоторых скриптов может ничего не происходить. Дело в том, что скрипт может содержать в себе функцию, которую нужно импортировать, а затем запустить. Поищите в документации по интересующей вас программе примеры со строкой Import-Module.

Например для запуска WinPwn нужно вначале импортировать файл с функциями:

Import-Module .\WinPwn.ps1

А после этого можно вызывать содержащиеся в файле функции:

WinPwn

Копирование файлов между сессиями

Copy-Item — копирование файлов на удаленный ПК. На целевой машине должна работать служба удаленного управления WinRM, которая конфигурируется одной командой:

Enable-PSRemoting

Для подключения к машине в доверенном домене больше ничего не требуется.

В рабочей группе надо на своем ПК добавить целевой компьютер в доверенные узлы по имени ПК или IP-адресу:

#добавить ПК в доверенные узлы
Set-Item wsman:localhost\client\trustedhosts -value "192.168.1.113"
#убрать ПК из доверенных узлов
#Set-Item wsman:localhost\client\trustedhosts -value ""

Дальше вы создаете новую сессию, указывая имя пользователя для подключения к удаленному ПК, и вводите учетные данные. В созданную сессию можно копировать файлы.

$rs = New-PSSession -ComputerName 192.168.1.113 -Credential test-pc\vadim
Copy-Item -Path "C:\temp\my.csv" -Destination "C:\temp\" -ToSession $rs

Стандартные способ запуска

Пожалуй, самый простой способ запустить программу Windows PowerShell это воспользоваться меню «Выполнить». Как в Windows 7, так и в случае Windows 10, меню «Выполнить» можно вызвать при помощи комбинации клавиш Win-R. После нажатия данной комбинации клавиш появляется небольшое окно с текстовым полем для ввода команды. Чтобы запустить данную программу введите команду «powershell» и нажмите на клавишу ввода.

Еще один простой способ запуска Windows PowerShell – это поиск в меню «Пуск». Чтобы воспользоваться данным вариантом просто откройте меню «Пуск» и введите в поиск название программы. После этого операционная система найдет нужную программу и предложит ее открыть.

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

Способы, как стать администратором в ОС Windows 10

Если вас интересует вопрос, как получить права администратора в Windows 10, стоит воспользоваться несколькими способами.

Способ №1. Использование командной строки

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

Жмём правой кнопкой мыши на значке «Пуск» и выбираем «Командная строка (Администратор)».

Откроется консоль. Вводим команду «net user администратор /active:yes». Если вы используете англоязычную версию Windows 10, вводим «net user administrator /active:yes».

После этого закрываем командную строку, жмём «Пуск» и нажимаем на иконку пользователя. Из всплывающего окна увидим новую строчку «Администратор». Если на неё нажать, компьютер перезагрузится и появится стандартное окно входа в систему, только уже будет добавлен пункт «Администратор».

Способ №2. Использование инструмента Управление компьютером

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

Жмём «Win+R» и вводим «».

Откроется встроенная утилита «Управление компьютером». В левом меню разворачиваем список «Служебные программы», затем выбираем «Локальные пользователи» и нажимаем на папку «Пользователи». Из списка выбираем «Администратор» и нажимаем на нём правой кнопкой мыши. Выбираем «Свойства».

Здесь нужно убрать отметку «Отключить учетную запись».

Права администратора теперь ваши. Чтобы восстановить запись пользователя, необходимо выполнить все те же действия и поставить отметку «Отключить учетную запись».

Способ №3. Использование редактора локальных групповых политик

Настроить учетную запись администратора в ОС Виндовс 10 можно с помощью Редактора локальных групповых политик. Для этого нужно выполнить следующее:

Жмём «Win+R» и вводим «».

Откроется редактор. Переходим по ветке: «Конфигурация компьютера», «Конфигурация Windows», «Параметры безопасности», ветка «Локальные политики» и вновь «Параметры безопасности». В списке необходимо найти «Учётные записи: Состояние учетной записи «Администратор».

Двойным щелчком открываем параметр. Здесь нужно поменять значение «Отключено» на «Включена».

Чтобы вернуть всё на свои места, стоит вновь поставить отметку «Отключено».

Способ №4. С использованием инструмента Учетные записи

Чтобы изменить локальную запись пользователя на запись администратора, стоит воспользоваться инструментом «Учётные записи».

  • Жмём «Win+R» и вводим «control userpassword2».
  • Откроется новое окно. Чтобы стать владельцем учетной записи администратора, переходим во вкладку «Дополнительно».

Здесь также нужно нажать на кнопку «Дополнительно».

Может открыться такое окно. Выполняем указанные там рекомендации.

Жмём «Пуск», «Панель управления», «Учетные записи», «Изменение типа своей учетной записи».

Чтобы изменить тип учетной записи обратно, стоит выполнить те же действия и поставит отметку «Стандартная».

Как удалить и восстановить учетную запись администратора в ОС Windows 10?

Чтобы удалить учётную запись администратора в операционной системе Windows 10, стоит выполнить следующее:

Жмём «Пуск», «Параметры» и выбираем «Учетные записи».

В левом меню выбираем «Семья и другие пользователи». Из списка выбираем запись администратора и нажимаем «Удалить».

Стоит отметить, что если вы удалили случайно запись администратора, восстановить её можно только со среды восстановления системы. Для этого понадобится Live CD или установочный диск той же версии и разрядности системы, что у вас установлена.

Запуск и получение дополнительной информации

Для запуска задачи, не зависимо от триггеров, используется команда ‘Start-ScheduledTask’:

У нас так же есть 2 команды, которые возвращают информацию о задачах.

Первая команда просто возвращает список задач, которые есть в каталогах планировщика их статус и путь:

У команды запуска и получения задач из планировщика можно использовать параметры:

  • TaskName — имя объекта;
  • TaskPath — путь до объекта.

Более полезная команда следующая, так как вернет немного больше информации:

Само собой все эти команды можно использовать в конвейере:

Если задача занимает много времени и ее нужно остановить — можно выполнить следующие действия:

Вам так же будет интересно:

Используем Invoke-Command для параллельного запуска команд на нескольких компьютерах

Командлет Invoke-Command можно использовать для параллельного выполнения команд на нескольких удаленных компьютерах.

В самом просто случае имена компьютеров, на которых нужно выполнить команды указываются через запятую:

Invoke-Command server1, server2, server3 -ScriptBlock {get-date}

1 Invoke-Command server1,server2,server3-ScriptBlock{get-date}

Список компьютеров можно поместить в переменную (массив):

$servers = @(″server1″,″server2″,″server3″)
Invoke-Command -ScriptBlock { get-date} -ComputerName $servers

1
2

$servers=@(″server1″,″server2″,″server3″)

Invoke-Command-ScriptBlock{get-date}-ComputerName$servers

Или получить из текстового файла:

Invoke-Command -ScriptBlock {Restart-Service spooler} -ComputerName(Get-Content c:\ps\servers.txt)

1 Invoke-Command-ScriptBlock{Restart-Service spooler}-ComputerName(Get-Contentc\ps\servers.txt)

Также можно получить список компьютеров в ADс помощью командлета Get-ADComputer из модуля AD PowerShell:

Чтобы выполнить команду на всех Windows Server в домене, исопльзуйте такой код:

$computers = (Get-ADComputer -Filter ‘operatingsystem -like «*Windows server*» -and enabled -eq «true»‘).Name
Invoke-Command -ComputerName $computers -ScriptBlock {get-date} -ErrorAction SilentlyContinue

1
2

$computers=(Get-ADComputer-Filter’operatingsystem -like «*Windows server*» -and enabled -eq «true»‘).Name

Invoke-Command-ComputerName$computers-ScriptBlock{get-date}-ErrorAction SilentlyContinue

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

Чтобы понять с какого компьютера получены результаты, нужно использовать специальную переменную окружения PSComputerName.

$results = Invoke-Command server1, server2, server3 -ScriptBlock {get-date}
$results | Select-Object PSComputerName, DateTime

1
2

$results=Invoke-Command server1,server2,server3-ScriptBlock{get-date}

$results|Select-ObjectPSComputerName,DateTime

При запуске команды через Invoke-Command на нескольких компьютерах она выполняется параллельно. В Invoke-Command есть ограничение на максимальное количество компьютеров, которыми можно управлять одновременно (ограничение на количество одновременных PSSession). Оно определяется параметром ThrottleLimit (по умолчанию 32). Если вам нужно выполнить команду одновременно более чем на 32 компьютерах (например, на 128), используйте параметр –ThrottleLimit 128 (но это вызывает повышенную нагрузку на ваш компьютер).

Для запуска команд на удаленных компьютерах через Invoke-Command в фоновом режиме используется специальный атрибут 
–AsJob. В этом случае результат выполнения команды не возвращается в консоль. Чтобы получить результаты нужно использовать командлет 
Receive-Job.

[Исправлено] Windows Script Host Access отключен на этом компьютере

Если сообщение «Доступ к скриптовому хосту Windows отключен» появляется при каждом запуске или через регулярные промежутки времени, когда вы ничего не делаете, тогда вредоносный скрипт (.vbs, .js или .wsf) может пытаться запускаться в фоновом режиме, и это предотвращается. по Windows Script Host действует ограничение в вашей системе, что очень хорошо. В таких случаях ваша цель должна состоять в том, чтобы полностью удалить вредоносное ПО из системы, а не исправить сообщение об ошибке хоста скрипта.

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

Выясните, какой сценарий пытается выполнить, что вызывает ошибку?

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

Используйте диспетчер задач, чтобы найти имя файла скрипта

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

  1. Пусть окно ошибки скрипта будет на экране. Пока не отклоняйте это.
  2. Отключите ваш компьютер от интернета.
  3. Откройте диспетчер задач (Ctrl + Shift + Esc) и перейдите на вкладку Подробности.
  4. Щелкните правой кнопкой мыши заголовок столбца, выберите «Выбрать столбцы».

  5. Включить Командная строка установите флажок и нажмите ОК.

    СВЯЗАННЫЙ: Ознакомьтесь с информацией о настройке диспетчера задач для отображения полного пути запущенных процессов для получения дополнительной информации и снимков экрана.

    Это показывает полный путь и имя файла скрипта, который пытается работать без вывода сообщений. В этом примере файл скрипта с именем protect.vbs пытается запустить его из папки% TEMP% в профиле пользователя.

    Связанный: Process Explorer из Windows SysInternals можно использовать для поиска имени процесса, пути и полных аргументов. Проверьте сообщение Как найти, какая программа вызвала неизвестное сообщение об ошибке? для деталей.

Используйте расширенные средства устранения неполадок

Кроме того, вы можете использовать Autoruns, еще один отличный инструмент от Microsoft Windows SysInternals, чтобы найти точку запуска при запуске (Startup или Task Scheduler), используемую этим вредоносным скриптом.

Начните свое расследование оттуда. Если вы опытный пользователь, вы можете даже отредактировать файл скрипта с помощью Блокнота и посмотреть, какой код выполняется. Ransomware обычно использует файлы .vbs, .js, .wsh или .hta для загрузки полезных данных крипто-вымогателей с удаленного сервера, запуска их в локальной системе и шифрования данных или их полного удаления.

Прежде всего, если кто-то может удалить вредоносный скрипт в вашем каталоге TEMP и запустить его, то в вашей системе существует действительно серьезная уязвимость. Защита от вирусов и вредоносных программ не всегда помогает, если ваша система уязвима для эксплойтов. Вы должны убедиться, что ваша система обновлена ​​с точки зрения исправлений Центра обновления Windows, а также обновлений для программ, которые вы используете в своей системе.

Выполните тщательную проверку с использованием известного средства защиты от вредоносных программ, такого как Malwarebytes.

Как мне включить доступ к Windows Script Host?

Если ваша система не подключена к домену, выполните действия по устранению ошибки «Доступ к хосту сценариев Windows отключен». Эта процедура включит запуск сценариев Windows (.vbs или .js) в вашей системе.

Разрешить доступ к Windows Script Host с помощью редактора реестра

  1. Нажмите WinKey + R, чтобы вызвать диалог Run.
  2. Тип
  3. Удалить значение с именем Включено в следующих ключах:
    HKEY_CURRENT_USER\SOFTWARE\Microsoft\Windows Script Host\Settings
    HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows Script Host\Settings

    Если ключ не существует, проигнорируйте и проверьте следующий ключ.

  4. Выйдите из редактора реестра.

Разрешить доступ к Windows Script Host с помощью командной строки

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

REG DELETE "HKCU\SOFTWARE\Microsoft\Windows Script Host\Settings" /v Enabled /f
REG DELETE "HKLM\SOFTWARE\Microsoft\Windows Script Host\Settings" /v Enabled /f

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

Это оно! Это позволяет Windows Scripting host на вашем компьютере.

Похожие команды для различных действий

Следующие похожие команды представляют различные действия.

New и Присвойте параметру

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

Get и Чтение

Используйте команду для получения сведений о ресурсе (например, файле) или объекта, с помощью которого можно получить доступ к ресурсу в будущем. Используйте команду, чтобы открыть ресурс и извлечь сведения, содержащиеся в.

Invoke и Запуск

Используйте команду для выполнения синхронных операций, таких как выполнение команды и ожидание ее завершения. Используйте команду для запуска асинхронных операций, таких как Запуск автономного процесса.

Управление подписанными и неподписанными скриптами

в Windows такие программы, как Internet Explorer и Microsoft Edge, добавляют альтернативный поток данных к загруженным файлам. Этот файл помечается как «поступающий из Интернета». Если политика выполнения PowerShell — RemoteSigned, PowerShell не будет запускать неподписанные сценарии, которые загружаются из Интернета, в том числе программы электронной почты и обмена мгновенными сообщениями.

Вы можете подписать сценарий или выбрать Запуск неподписанного скрипта без изменения политики выполнения.

Начиная с версии PowerShell 3,0 можно использовать параметр Stream командлета для обнаружения заблокированных файлов, так как они были загружены из Интернета. Используйте командлет, чтобы разблокировать скрипты, чтобы их можно было запускать в PowerShell.

Дополнительные сведения см. в разделе about_Signing, Get-Itemи Unblock-File.

Примечание

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

Ошибки при запуске скрипта PowerShell

Как запустить скрипт PowerShell в Windows-02

Так же вы можете увидеть ошибку после запуска установленного PowerCLI:

Import-Module : Невозможно загрузить файл C:\Program Files\WindowsPowerShell\Modules\VMware.VimAutomation.Sdk\12.2.0.17 531155\VMware.VimAutomation.Sdk.psm1, так как выполнение сценариев отключено в этой системе. Для получения дополнительных сведений см. about_Execution_Policies по адресу https:/go.microsoft.com/fwlink/?LinkID=135170. строка:1 знак:1 + Import-Module VMware.PowerCLI + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + CategoryInfo : Ошибка безопасности: (:) , PSSecurityException + FullyQualifiedErrorId : UnauthorizedAccess,Microsoft.PowerShell.Commands.ImportModuleCommand

PowerShell обладает рядом режимов исполнения, которые определяют, какой тип кода разрешается выполнять. Все это управляется ключом реестра, живущим в HKLM. Существует 4 различных режима исполнения:

  • Ограниченный (Restricted): Политика исполнения по умолчанию, не допускает работу скриптов и разрешает работу лишь интерактивных команд.
  • Все подписанные (All Signed): Допускает работу всех скриптов. Правда, все скрипты и файлы конфигурации должны быть подписаны издателем, которому вы доверяете; данный режим подвергает вас риску работы подписанных (но вредоносных) скриптов, после получения подтверждения доверия издателю.
  • Удаленные подписанные (Remote Signed): Локальные скрипты работают без подписи. Все скачанные скрипты должны иметь цифровую подпись.
  • Неограниченный (Unrestricted): Все скрипты и файлы конфигурации, полученные из коммуникационных приложений, вроде Microsoft Outlook, Internet Explorer, Outlook Express и Windows Messenger работают после подтверждения, что вы понимаете, что файл исходит из Интернета; никакие цифровые подписи не требуются; данный режим подвергает вас риску работу неподписанных, вредоносных скриптов.

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

SSH через Powershell

Пример того, как можно работать через SSH:

#устанавливаем модуль SSH, один раз
Find-Module Posh-SSH | Install-Module

#Создаем SSH сессию:
Import-Module Posh-SSH
$ComputerName = "1.2.3.4"
$UserName = "ubuntu"
$KeyFile = "C:\SSH\key.pem"
$nopasswd = new-object System.Security.SecureString
$Crendtial = New-Object System.Management.Automation.PSCredential ($UserName, $nopasswd)
$SSHSession = New-SSHSession -ComputerName $ComputerName -Credential $Crendtial -KeyFile $KeyFile

#Создаем шелл:
$SSH = $SSHSession | New-SSHShellStream

# отправляет команду
$SSH.WriteLine("ifconfig")

# считываем ответ
$SSH.read()

#закрываем сессию:
$sshSession | Remove-SSHSession

Команды:

  • Get-SSHTrustedHost — посмотреть доверенные хосты
  • Get-SSHSession — посмотреть список открытых сессий
  • Remove-SSHSession — закрыть сессию

Ссылки:

  • habrahabr.ru: Модуль Posh-SSH простой доступ к SSH и SCP из PowerShell
  • Официальная страничка от создателя модуля — там еще можно посмотреть пример работы sftp

Настройка PowerShell Execution Policy с помощью групповых политик

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

  1. С помощью редактора доменных GPO (gpmc.msc) создайте новую GPO (или отредактируйте) существующую и назначьте ее на OU с компьютерами, к которым нужно применить политику запуска PowerShell скриптов;
  2. В редакторе политики перейдите в раздел Computer Configuration -> Policies -> Administrative Templates -> Windows Components -> Windows PowerShell и найдите политику Turn on Script Execution (Включить выполнение сценариев);

После настройки политики выполнения через GPO вы не сможете изменить настройки политики выполнения скриптов вручную. При попытке изменить настройки Execution Policy на компьютере, на который применяется такая GPO, появится ошибка:

Команды диагностики

PowerShell использует класс System.Management.Automation.VerbsDiagnostic для определения действий, которые применяются к обработке данных. В следующей таблице перечислено большинство определенных команд.

Команда (псевдоним) Действие Неподходящие синонимы
Debug (db) Изучает ресурс для диагностики проблем в работе. Диагностика
Measure (ms) Определяет ресурсы, используемые указанной операцией, или получает статистику по ресурсу. Calculate, Determine, Analyze
Repair (rp) Восстанавливает ресурс в пригодном для использования состоянии. Fix, Restore
Resolve (rv) Сопоставляет сокращенное представление ресурса с более полным представлением. Expand, Determine
Test (t) Проверяет операцию или согласованность ресурса. Diagnose, Analyze, Salvage, Verify
Trace (tr) Отслеживает действия ресурса. Track, Follow, Inspect, Dig
Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *

Adblock
detector