Шаг 3: установка файлов помощи
Команды вроде cd и dir не являются активными командами оболочки PowerShell. Это так называемые псевдонимы (aliases) — замены настоящих команд PowerShell. Псевдонимы удобны для тех, кто имеет большой опыт работы с командной строкой. Однако они не затрагивают глубин PowerShell.
Чтобы начать знакомиться с возможностями PowerShell, наберите help и нужную вам команду. На скриншоте показана команда help dir.
Команда help говорит, что dir является псевдонимом команды PowerShell Get-ChildItem. Если набрать get-childitem в PS C:\>, увидите то же самое, что и при использовании команды dir.
Как указано внизу скриншота, файлы помощи для PowerShell не устанавливаются автоматически. Для их получения запустите PowerShell от имени администратора и наберите update-help. Установка файлов помощи займёт несколько минут, ряд модулей могут отсутствовать — например, в данном случае не установились Help for NetWNV и SecureBoot. Когда всё готово, полная система помощи всегда будет давать нужные подсказки.
Теперь наберите команду get-help и любую интересующую вас команду («cmdlet» на языке PowerShell, по-русски командлеты), будет показано её описание. Например, get-help get-childitem выдаёт список опций get-childitem. Также можно вывести разные возможные варианты. Например
get-help get-childitem -examples
выдает семь подробных примеров использования get-childitem. Команда
get-help get-childitem -detailed
включает в себя эти семь примеров и подробные разъяснения каждого параметра в командлете get-childitem.
Примеры
Пример 1. Запуск процесса, использующего значения по умолчанию
В этом примере запускается процесс, использующий файл в текущей папке. Команда использует все значения по умолчанию, включая стиль окна по умолчанию, рабочую папку и учетные данные.
Пример 3. Запуск процесса сортировки элементов в новый файл
В этом примере запускается процесс, который сортирует элементы в файле и возвращает отсортированные элементы в файлах . Все ошибки записываются в файл. Параметр UseNewEnvironment указывает, что процесс выполняется с собственными переменными среды.
В этом примере используется сплаттинг для передачи параметров командлету . Дополнительные сведения см. в разделе about_Splatting.
Пример 6. Использование разных команд для запуска процесса
В этом примере показано, как найти команды, которые можно использовать при запуске процесса. Доступные команды определяются расширением имени файла, который запускается в процессе.
В примере используется для создания объекта System.Diagnostics.ProcessStartInfo для , файла, который выполняется в процессе PowerShell. Свойство Verbs объекта ProcessStartInfo показывает, что команды Open и можно использовать с или с любым процессом, выполняющим файл.
Пример 7. Указание аргументов для процесса
Обе команды запускают интерпретатор команд Windows, выдавая команду в папке
Так как это имя папки содержит пробел, значение должно быть заключено в экранированные кавычки.
Обратите внимание, что первая команда указывает строку как ArgumentList. Вторая команда представляет собой массив строк
В Windows можно запустить , чтобы запустить процесс с повышенными разрешениями.
Это повышает уровень контекста текущего пользователя. Параметр Credential позволяет указать альтернативное имя пользователя и пароль, что позволяет запустить процесс в другом пользовательском содержимом.
Однако параметры Credential и Verb нельзя использовать вместе.
Чтобы запустить процесс с повышенными правами, используя альтернативные учетные данные, необходимо сначала запустить PowerShell с помощью альтернативных учетных данных, а затем использовать для запуска процесса с повышенными правами.
Пример начинается с повышенных разрешений из сеанса PowerShell, который выполняется с альтернативными учетными данными.
Пример 9. Создание отсоединяемого процесса в Linux
В Windows создает независимый процесс, который продолжает выполняться независимо от запускаемой оболочки. На платформах, отличных от Windows, только что запущенный процесс присоединяется к запущенной оболочке. Если запущенная оболочка закрыта, дочерний процесс завершается.
Чтобы избежать завершения дочернего процесса на unix-подобных платформах, можно объединить с . В следующем примере запускается фоновый экземпляр PowerShell в Linux, который остается активным даже после закрытия сеанса запуска. Команда собирает выходные данные в файле в текущем каталоге.
В этом примере выполняет команду Linux , которая запускается как отсоединяемый процесс. Дополнительные сведения см. в статье nohup в Википедии.
Пример 10. Переопределение переменной среды для процесса
По умолчанию при использовании новый процесс создается с теми же переменными среды, что и текущий сеанс. Для переопределения значений этих переменных можно использовать параметр Environment .
В этом примере переменная среды добавляется в сеанс с параметром в качестве значения .
Пример выполняется три раза, каждый раз возвращая значение . Первая команда не переопределяет переменную среды. Во второй команде имеет значение . В третьей команде задается значение , которое удаляет его.
Как открыть PowerShell на Windows 10: возможные способы
Многие пользователи спрашивают, как открыть PowerShell в Windows 10. Владельцы персональных компьютеров могут открывать консоль несколькими способами:
- через стартовое меню «Пуск»;
- через утилиту «Выполнить»;
- с помощью комбинации клавиш;
- через системную папку;
- через командную строку.
Через стартовое меню «Пуск»
Инструкция:
- Необходимо на панели задач щелкнуть по кнопке стартового окна.
- Далее в поисковой строке ввести ключевой запрос.
- В завершении появится список программного обеспечения, подходящего под параметры поиска.
Второй способ:
- Нужно щелкнуть ПКМ по иконке стартового меню.
- На экране появится диалоговое окно.
- В данном списке требуется найти пункт «Windows PowerShell».
Открыть консоль можно через поисковую строку или с помощью контекстного меню параметров
С помощью утилиты «Выполнить»
Инструкция:
- Требуется открыть утилиту «Выполнить», нажав сочетание клавиш «Win + R».
- В поисковой строке нужно прописать имя программы и нажать на кнопку «Enter»
С помощью комбинации клавиш
Инструкция:
- На клавиатуре требуется нажать комбинацию клавиш «Win + X».
- На экране появится консоль отладки.
К сведению! В версиях Windows 10 1903 (и более ранние) при нажатии клавиш «Win + X» появляется окно командной строки. В билде 2004 вместо нее запускается основная консоль PowerShell.
Через системную папку
Если нужна консоль PowerShell, где находится Windows 10 она, знает далеко не каждый пользователь. Как ее открыть:
- Нужно перейти в проводник и открыть раздел «Локальные диски».
- На основном томе следует отыскать папку «Windows».
- Затем следует перейти в директорию «System32».
- В данном каталоге следует прокрутить список вниз и найти папку с наименованием «Windows PS».
- Далее необходимо найти исполняемый файл программного обеспечения, который имеет расширение *exe.
- По объекту нужно щелкнуть ПКМ и в диалоговом окне выбрать «Запуск с расширенными правами доступа».
С помощью командной строки
Инструкция:
- На клавиатуре требуется нажать сочетание клавиш «Win + R».
- В поисковой строке ввести ключевой запрос «CMD».
- После запуска командной строки следует прописать код «PowerShell».
Когда запуск консоли производится через CMD, то PowerShell будет использовать текстовый интерфейс командной строки
Удаление программы
Microsoft PowerShell системный компонент, поэтому удалить его, в принципе нельзя. Конечно, при большом желании можно воспользоваться и удалить этот системный компонент, но это может привести к неработоспособности системы, поэтому не рекомендуется
это делать.
Хотя стоит заметить, что иногда необходимо удалить Windows PowerShell 1.0, поскольку операционная система может не обновляться из-за этого элемента. Сделать это можно так:
- Запускаем системный поиск
и вводим appwiz.cpl. - В окне выбираем
– Просмотр установленных обновлений. - Ищем нужный компонент
в списке обновлений, обычно это KB928439 и удаляем его.
Windows PowerShell, даже с большой натяжкой нельзя назвать простой и доступной программой, она сложная для понимания, и освоить ее за короткий промежуток времени не получится. Но учитывая тот факт, что создавалась она отнюдь не для программистов, а для начинающих пользователей, не настолько она непостижима, как может показаться. Очевидным преимуществом оболочки является ее удобство и автоматизированный процесс, а все что потребуется – только вникнуть в тонкости.
Многие пользователи знают о командной строке, в то время как очень небольшое количество людей знают об Windows PowerShell
. Вместо командной строки вы можете работать с ОС Windows PowerShell, который обеспечивает больше силы и власти над компьютером с установленной Windows 10. Следовательно, в этой статье мы написали различные советы для разных способов запустить PowerShell от имени администратора в операционной системе Windows 10 от имени администратора. Microsoft уже создала оболочку которая называется оболочка для обработки конфигурации и выполнения задач автоматизации. В Windows PowerShell приходит вам на помощь, когда у вас есть куча административной работы, чтобы её решить.Например, вы спрашиваете PowerShell чтобы распознавать программы, которые выполняются не точно и вам необходимо убить их процессы. Также в сети вы можете задать вопрос PowerShell и выставлять все установленные USB-устройства на одном или нескольких компьютерах. С помощью PowerShell Вы действительно можете сделать много вещей. Если вы предпочитаете, чтобы работать с ней, прочитайте различные способы, чтобы запустить его в Windows 10 от имени администратора.
Как запустить PowerShell от имени администратора в Windows 10
1. Через проводник
С помощью этого метода, вы можете получить доступ к системе Windows PowerShell для расположения или мест каких-то особенных выбранных дисков или папок.
Запустите проводник, отправляетесь в раздел, где находится ваш диск или лежит папка.
Нажмите на папку который вы хотите запустить в PowerShell и п нажмите на файл в крайней левой части меню.
Из поступивших вариантов, нажмите Открыть Windows PowerShell как администратор.
2. Через Диспетчер задач
Щёлкните правой кнопкой мыши на пустом поле панели задач и нажмите 3 вариант снизу в Диспетчер задач.
Появляется окно диспетчера задач. На левом верхнем углу меню, вы найдёте файл. Нажмите на этот параметр. В выпадающем четвертом месте. выберите первый выбор вверху, который говорит выполнить новую задачу.
Создайте новую задачу в этом окне. В поле текст введите PowerShell и выберите опцию создать задачу с правами администратора.
Нажмите кнопку ОК для продолжения.
PowerShell с правами администратора будет виден на экране.
3. Через Поиск Кортана
Нажмите Кортана поиск и введите PowerShell в поле и нажмите Ввод.
Кортана будет показывать вам вариант PowerShell с его значком.
Щёлкните правой кнопкой мыши на нем и выберите запуск от имени администратора.
PowerShell будет запущен с правами администратора.
4. Через проводник, но на этот раз правой кнопкой мыши на контекстное меню.
Открыть проводник на экране и идите по пути –
C:\Windows\System32\WindowsPowerShell\v1.0
Ищите PowerShell.ехе который лежит в средней части проводника. Щёлкните правой кнопкой мыши на нем он на втором месте с верху, и запустите от имени администратора.
С этими 4 способами, вы можете запустить PowerShell от имени администратора в Windows 10.
Приветствую!
Операционная система семейства Windows издавна имеет поддержку командной строки, с соответствующей оболочкой. Однако в Microsoft посчитали, что поддерживаемый ей язык сценариев недостаточно гибкий. Вследствие чего в качестве альтернативны создали Windows PowerShell.
Данная оболочка командной строки встроена в систему, однако не все знают, как её можно открыть, дабы выполнить в ней необходимые команды. Сей пробел мы и будем восполнять, подробно рассказав и продемонстрировав на изображениях, как с лёгкостью вызвать окно Windows PowerShell в Windows 10.
Как войти в windows 10 с правами администратора
Благодаря учётной записи с правами Администратора Вы получаете максимальный контроль над операционной системой – вплоть до доступа к системный файлам и папкам, что в определённый ситуациях может пригодиться. Самое интересное здесь то, что при использовании не просто прав Администратора, а одноимённой учётной записи, контроль не производится и UAC-предупреждения просто исчезают. Это, как минимум, один из поводов заручиться правами Администратора.
При установке операционной системы windows 10 учётная запись Администратора остаётся в тени – она неактивна, но существует в недрах ОС. Притом при выборе пользователя – на сопутствующем экране, она не отображается. Прочтя данную статью и следуя описанной в ней инструкции Вы научитесь входить в Windows 10 в качестве Администратора, если возникнут потребности в данной возможности.
Что ж, давайте на деле разберёмся с тем, как активировать учётную запись с расширенными правами и без назойливых предупреждений:
- Для начала нужно запустить командную строку от имени Администратора. Сделать это можно следующими образом: кликаем правой кнопкой на «Пуск» и в выпадающем контекстном меню выбираем пункт, отмеченный на скриншоте;
- Кликнув по отмеченному пункту, Вы увидите всплывающее диалоговое окно – то самое предупреждение, о котором было сказано немножко выше. Нажмите «Да», чтобы продолжить и окно командной строки откроется;
- Теперь Вы должны ввести команду, указанную на скриншоте ниже, чтобы активировать учётную запись Администратора. Соответственно вместо имени «Владимир» необходимо ввести своё имя пользователя. Оно может быть, как на английском языке, так и на русском языке. В данном случае выбранному имени пользователя будут присвоены права Администратора. Но если Вы хотите активировать Администратора как пользователя, то вместо имени «Владимир» для русскоязычной версии ОС напишите «Администратор», для англоязычной – «Administrator»;
- Если после ввода команды и нажатия клавиши «Enter» появилась надпись: «Команда выполнена успешно», то это говорит о том, что Вы добились своего;
- Дело за малым – нужно лишь войти под соответствующей учётной записью. В нашем случае, это делается следующим образом: кликаем по кнопке «Пуск», в левом верхнем углу нажимаем на свою учётную запись и в выпадающем меню выбираем профиль «Администратор»;
- После этого система загрузится под новой учётной записью, и Вы получите неограниченный доступ ко всем системный файлам и папкам, также не будет защитных UAC-предупреждений.
Если Вы нуждаетесь в данной учётной записи лишь временно и не собираетесь использовать её постоянно, то в командной строке введите ту же команду за исключением последнего слова – замените «yes» на «no».
Заключение Напоследок хотелось бы предупредить Вас, что использовать эту учётную запись на постоянной основе не рекомендуется – неопытный пользователь рискует навредить своему компьютеру. В любом случае, на неё лучше поставить пароль, чтобы ни у кого кроме Вас не было доступа.
С учётом того факта, что Администратор в Windows 10 – это локальная учётная запись, Вы не сможете использовать новые приложения из магазина.
Наиболее распространенные проблемы с файлом powershell.exe
Существует несколько типов ошибок, связанных с файлом powershell.exe. Файл powershell.exe может находиться в неправильном каталоге файлов на вашем устройстве, может отсутствовать в системе или может быть заражен вредоносным программным обеспечением и, следовательно, работать неправильно. Ниже приведен список наиболее распространенных сообщений об ошибках, связанных с файлом powershell.exe. Если вы найдете один из перечисленных ниже (или похожих), рассмотрите следующие предложения.
- powershell.exe поврежден
- powershell.exe не может быть расположен
- Ошибка выполнения — powershell.exe
- Ошибка файла powershell.exe
- Файл powershell.exe не может быть загружен. Модуль не найден
- невозможно зарегистрировать файл powershell.exe
- Файл powershell.exe не может быть загружен
- Файл powershell.exe не существует
powershell.exe
Не удалось запустить приложение, так как отсутствует файл powershell.exe. Переустановите приложение, чтобы решить проблему. Проблемы, связанные с powershell.exe, могут решаться различными способами. Некоторые методы предназначены только для опытных пользователей. Если вы не уверены в своих силах, мы советуем обратиться к специалисту
К исправлению ошибок в файле powershell.exe следует подходить с особой осторожностью, поскольку любые ошибки могут привести к нестабильной или некорректно работающей системе. Если у вас есть необходимые навыки, пожалуйста, продолжайте
Используем 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 |
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 |
$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 |
$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.
Как разрешить выполнение неподписанного скрипта PowerShell?
1. В оболочке PowerShell , перед тем как запускать скрипт, выполнить команду, разрешающую выполнение неподписанных скриптов для текущего сеанса оболочки:
Set-ExecutionPolicy RemoteSigned -Scope Process
2. При запуске из стандартной коммандной строки использовать параметр -executionpolicy, т.е. запускать скрипт так:
powershell -executionpolicy RemoteSigned -file
Оба способа устанавливают политику только для текущего сеанса, при этом, политика безопасности выполнения скриптов PowerShell, прописанная в реестре, не будет изменена и останется прежней. Если вы хотите поменять политику безопасности выполнения скриптов “на постоянно”, то используйте такой способ:
3. Разрешить запуск навсегда : запустить оболочку PowerShell от имени “Администратора”, затем выполните команду:
Set-ExecutionPolicy RemoteSigned
Однако, я бы не рекомендовал такой способ, чтобы не подвергать ваш компьютер возможным угрозам, т.к. так вы разрешаете выполнение скриптов всем и всегда.
Примечание: Если скрипт был загружен из интернета, то чтобы избежать запроса на подтверждение запуска, нужно вместо RemoteSigned использовать Bypass – полное отключение любых запросов и предупреждений.
Как в Windows 10 запустить PowerShell — 2 способ
Еще один способ, как открыть Windows PowerShell в операционной системе Windows 10 из меню «Пуск».
Выполните необходимые действия:
- Кликните левой кнопкой мыши по меню «Пуск».
- В списке установленных программ найдите папку «Windows PowerShell», из которой можно запустить PowerShell в различных режимах:
- Windows PowerShell — запуск обычной оболочки.
- Windows PowerShell (x86) — запуск оболочки в 32-битной ОС.
- Windows PowerShell ISE — запуск интегрированной среды сценариев PowerShell (Windows PowerShell Integrated Scripting Environment).
- Windows PowerShell ISE (x86) — запуск интегрированной среды сценариев для 32-битных систем или объектов.
Windows PowerShell ISE — оболочка PowerShell с расширенными возможностями.
При необходимости, пользователь может запустить PowerShell от имени администратора Windows 10. Запуск от администратора Windows 10 проходит следующим образом:
- Нужно щелкнуть правой кнопкой мыши по значку Windows PowerShell.
- В контекстном меню «Задачи» нажмите на пункт «Запуск от имени администратора».
- На Рабочем столе компьютера откроется окно Windows PowerShell.
Видеоинструкция
Ну что же, про открытие встроенного в систему полезного инструмента под названием ПоверШелл, который создан для выполнения различных команд и скриптов на их основе, мы подробно рассказали, теперь можно и завершать данный материал. Весьма надеюсь, что оный материал ответил на все имеющиеся у вас вопросы. До встречи!
Как открыть PowerShell из меню «Win + X»
Этот способ очень удобен в Windows 10. Начиная с Windows 8, Microsoft внедрила меню «Power Users», которое содержит много полезных элементов, таких как «Панель управления», «Сетевые подключения» и т. Д. Конечно и в Windows 10 также есть такое меню. Оно содержит элемент PowerShell и PowerShell (администратор), последний именно то, что нам нужно.
Чтобы получить доступ к этому меню в Windows 10, нажмите сочетания клавиш Win + X на клавиатуре или кликните правой кнопкой мыши на меню «Пуск».
В открывшимся меню выберите пункт PowerShell (администратор)
.
Открытие PowerShell с помощью Поиска в Windows 10.
В Windows 10 вы можете использовать значок поиска на панели задач. Кликните мышкой на значок поиска и Введите PowerShell, нажмите CTRL + SHIFT + ENTER , чтобы запустить PowerShell от имени администратора.
Это также работает в меню «Пуск», просто начните печатать PowerShell
, затем кликните правой кнопкой мыши на появившемся представлении Windows PowerShell
и выберите Запуск от имени Администратора
.
Запустить экземпляр PowerShell из Проводника Windows 10
Вы можете запустить PowerShell из Проводника. Вы можете задаться вопросом, зачем вам это нужно. Позвольте мне показать вам примерный сценарий.
Всякий раз, когда вы нажимаете клавишу SHIFT и удерживаете ее, а затем кликаете правой кнопкой мыши по папке в проводнике, вы получите пункт в контекстном меню «Открыть окно PowerShell здесь»
. Это очень удобно, вы просто открыли окно PowerShell по желаемому пути.
Как открыть PowerShell из меню «Win + X»
Этот способ очень удобен в Windows 10. Начиная с Windows 8, Microsoft внедрила меню «Power Users», которое содержит много полезных элементов, таких как «Панель управления», «Сетевые подключения» и т. Д. Конечно и в Windows 10 также есть такое меню. Оно содержит элемент PowerShell и PowerShell (администратор), последний именно то, что нам нужно.
Чтобы получить доступ к этому меню в Windows 10, нажмите сочетания клавиш Win + X на клавиатуре.
В открывшимся меню кликните мышкой пункт PowerShell (администратор)
.
Открытие PowerShell с помощью Поиска в Windows 10.
В Windows 10 вы можете использовать значок поиска на панели задач. Кликните мышкой на значок поиска и Введите PowerShell, нажмите CTRL + SHIFT + ENTER , чтобы запустить PowerShell от имени администратора.
Это также работает в меню «Пуск», просто начните печатать PowerShell
, затем кликните правой кнопкой мыши на появившемся представлении Windows PowerShell
и выберите Запуск от имени Администратора
.
Запустить экземпляр PowerShell из Проводника Windows 10
Вы можете запустить PowerShell из Проводника. Вы можете задаться вопросом, зачем вам это нужно. Позвольте мне показать вам примерный сценарий.
Прежде чем пользоваться скриптами
При эксплуатации VBS возникает много проблем, от коих разработчики PowerShell избавились напрочь, если скриптовую безопасность не понижать для удовлетворения скриптовых запросов пользователя или решения задач, связанных с уровнем защищенности операционной системы.
Запуск скачанного скрипта на пользовательской машине – простой и действенный вариант распространения вредоносного программного обеспечения или кражи персональной информации злоумышленниками.
Всё происходит из-за элементарного незнания содержимого скриптового файла (ps1)
и желания побыстрее решить свои задачи за счёт труда других. Объекты, контролирующие уровень безопасности выполнения сценариев, создают окружение, в котором запустить скрипт невозможно.
Преднамеренный запуск макросов происходит после изменения уровня безопасности, если юзер даст добро, осознавая, что он делает, и зная наверняка, что в файле *.ps1 находится.
По причине неудобства конфигурации защиты для людей, нуждающихся в реализации и выполнении собственных сценариев, существует возможность изменения конфигурации.
Здесь можно как снизить защиту до минимума, так и разумно лавировать между возможность открыть дыры для проникновения и удобством в работе с PowerShell.
Оболочка обладает тремя уровнями безопасности:
-
файлы с расширением ps1 не идентифицируются системой
как исполняемые и обозначаются как неизвестные или текстовые (по двойному клику открываются в используемом на компьютере по умолчанию текстовом редакторе); -
оболочка позволяет выполнять скрипты после указания к ним полного пути
, скриптовые файлы в текущей директории не ищутся, делая невозможным выполнения макросов, расположенных в текущем каталоге; -
запуск встроенного скрипта Execution Policy
, отвечающего за добавление в перечень разрешенных скриптов требуемого.
Даже не думайте изменять конфигурацию
, понизив её хотя бы до второго уровня, не ознакомившись с основами
PowerShell
, пока не начнёте хотя бы поверхностно понимать содержимое файлов *.
ps
1.
Существует и понятие политики выполнения, созданной с целью предотвратить случайный запуск сценариев. Настроек политики запуска существует целых пять:
-
ограниченные –
установлены по умолчанию, выполняются только подписанные Microsoft сценарии, позволяющие получать информацию об аппаратной и программной оболочке компьютера; -
имеющих подпись удаленных файлов
– выполнять можно все макросы, но или присланные по почте файлы должны быть подписанными; -
имеющих цифровую подпись от надежного источника
– выполняются все подписанные сценарии; -
неограниченные
– запуск любых макросов; -
обходные
– предназначены для программистов, которые создают собственную систему безопасности, а не используют представленную в оболочке.
Проверить текущее состояние политики запуска можно командой «Get-ExecutionPolicy»
.
Какой бы ни была политика безопасности, пользователь не сможет запустить скрипт, в котором содержатся команды, на выполнение коих у него недостаточно привилегий.
Адаптация скриптов PowerShell для Linux
Я сам только начинаю знакомство с PowerShell, но хочу привести интересный пример, как можно самостоятельно решить проблему и запустить скрипт PowerShell в Linux не смотря на то, что он выдавал ошибку.
В Invoke-TheHash есть функция Invoke-SMBEnum, которая выполняет перечисление пользователей, групп, сетевых сессий и совместных ресурсов. В Windows эта функция работает отлично. Попробую использовать её в Linux.
Запускаю консоль PowerShell:
pwsh
Перехожу в папку с уже скаченными скриптами:
cd ./bin/Invoke-TheHash/
Импортирую файл с нужной функцией:
Import-Module .\Invoke-SMBEnum.ps1
Запускаю:
Invoke-SMBEnum -Target 192.168.0.53 -Action All -Username HackWare-mial\Администратор -Hash 5187b179ba87f3ad85fea3ed718e961f -verbose
И получаю ошибку «Cannot find path ‘computername’ because it does not exist.», она означает, что не получается найти путь computername (имя компьютера), т. к. путь не существует. Ошибка возникла в этой строке:
$auth_hostname = (Get-ChildItem -path env:computername).Value
Если попытаться выполнить отдельно команду из этой строки:
Get-ChildItem -path env:computername
то она вызовет эту же самую ошибку:
Get-ChildItem: Cannot find path 'computername' because it does not exist.
Можно предположить (лучше посмотреть в справке, но мне лень туда лезть), что env имеет отношение к переменным окружения, а computername — это имя переменной, которая содержит (как следует из названия) имя компьютера. Судя по всему, в Linux эта переменная окружения не существует.
Самое простое решение — прописать это имя вручную. Для этого открываю файл Invoke-SMBEnum.ps1 текстовым редактором, нахожу там строку
$auth_hostname = (Get-ChildItem -path env:computername).Value
И меняю её на такую строку:
$auth_hostname = 'hackware-mial'
То есть я просто прописал имя компьютера вместо получения его с помощью функции.
Важно помнить, что после импорта функция будет считываться не из файла, который я изменил, а из памяти. Поэтому чтобы PowerShell увидел сохранённые в файле изменения, нужно заново выполнить импорт файла — для этого пришлось закрыть (CTRL+d) и открыть заново PowerShell:
pwsh
Импортируем файл:
cd ./bin/Invoke-TheHash/ Import-Module .\Invoke-SMBEnum.ps1
И после этого вновь запускаю команду:
Invoke-SMBEnum -Target 192.168.0.53 -Action All -Username HackWare-mial\Администратор -Hash 5187b179ba87f3ad85fea3ed718e961f -verbose
В этот раз команда сработала.
Мораль:
- после внесения изменений в файл нужно заново его импортировать (возможно, даже перезайти в PowerShell)
- некоторые проблемы с запуском скриптов PowerShell в Linux достаточно просто решить самостоятельно
Особенности запуска скриптов в PowerShell
Необходимо упомянуть об особенностях запуска скриптов PowerShell. Данное средство администрирования и автоматизации обладает очень высоким потенциалом и является мощным инструментом, поэтому разработчиками было принято решение ограничить запуск скриптов по умолчанию. Существует 4-е основных политики безопасности, регулирующих запуск скриптов на целевом устройстве. Вы можете ознакомиться с ними на данном слайде. У каждой политики свои особенности, и они применимы для разных сценариев. В нашем случае, для практической работы мы разрешим выполнение неподписанных скриптов используя политику «unrestricted»