Вывод информации об успешном выполнении команды powershell. Как создавать команды и функции в Powershell вызывать их и передавать параметры. Кодирование с помощью PowerShell

Вывод информации об успешном выполнении команды powershell. Как создавать команды и функции в Powershell вызывать их и передавать параметры. Кодирование с помощью PowerShell

04.03.2011 Дон Джоунз

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

В PowerShell нет встроенного графического отладчика для построчной проверки сценариев, однако выручают бесплатные и коммерческие инструменты сторонних поставщиков. В таких редакторах, как PowerGUI компании Quest Software (powergui.org), Idera PowerShellPlus (powershellplus.com) и PrimalScript компании SAPIEN Technologies (www.primaltools.com) используют различные методы построчного выполнения сценариев PowerShell, чтобы видеть содержимое переменных и в целом упростить отладку. Однако для успешного применения любого из этих инструментов необходимо овладеть общими навыками отладки.

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

Первый тип ошибки: толстые пальцы

Первый тип - простая синтаксическая ошибка. Опечатка. Сбой оператора. Толстые пальцы. Выберите название, которое вам больше нравится. Обнаружить эти ошибки довольно просто, так как PowerShell выдает сообщение, в котором указывается номер строки, содержащей неверный символ. Однако сведения о номере строки мало помогут пользователям Notepad, так как в программе не показаны номера строк. По этой причине рекомендуется заменить Notepad на бесплатную программу PowerGUI или коммерческий редактор сценариев.

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

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

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

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

Function get-что-нибудь { # Исходный текст }

Это лучше, чем следующая аморфная запись:

Function get-что-нибудь {# Исходный текст}

Второй тип ошибки: расхождения желаемого и действительного

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

Логическая ошибка. Иногда программисты допускают простые логические ошибки. Например, составлен сценарий, который должен посчитать от 1 до 10:

For ($i=0; $i -lt 10; $i++) { Write-host $i }

Сценарий выполняется успешно, но отображаются числа от 0 до 9. Результат близок, но не совсем соответствует намерениям программиста. В этом случае полезно остановиться и вспомнить принципы выполнения сценариев. Представьте, как программа PowerShell прочитывает сценарий, отметьте содержимое переменных на каждом шаге и результаты каждого шага. Для приведенного сценария ход рассуждений может быть следующим.

Сначала нужно назначить переменной $i значение 0 (записываем $i=0). 0 меньше 10? Да, поэтому используем Write-Host для отображения значения 0 (записывается результат 0) и увеличиваем значение переменной $i на единицу. На данном этапе $i содержит 1 (записываем $i=1). 1 меньше 10? Да, поэтому отображается значение 1 (записывается результат 0) и переменная $i увеличивается на единицу. Теперь $i содержит 2 (записываем $i=2). Это число меньше 10, поэтому оно выводится на экран (записывается результат 2) и т. д.

Так будет продолжаться, пока значение $i не достигнет 10. В результате сравнения оказывается, что 10 не меньше 10, поэтому PowerShell не отображает это число. Как показано в примере, элементарные логические ошибки становятся очевидными, если уделить время простому анализу алгоритма.

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

Существует два основных метода формирования в PowerShell списка, соответствующего создаваемому в процессе мысленной проверки алгоритма. Эти методы основаны на использовании команд Write-Debug и Set-PSDebug. Существует и третий способ с использованием интерактивного отладчика в редакторе сценариев. В сущности, этот метод представляет собой комбинацию двух базовых методов, которые будут рассмотрены в данной статье. Полезно освоить базовые приемы, прежде чем воспользоваться более удобным способом интерактивного отладчика в редакторе.

Метод 1: Write-Debug

В первом методе используется команда Write-Debug. По умолчанию вывод этой команды подавляется. Чтобы разрешить вывод, необходимо добавить в начало сценария строку

$DebugPreference = "Continue"

Затем следует ввести инструкции Write-Debug непосредственно после каждой инструкции, в которой изменяется содержимое переменной, например:

$var = get-service Write-Debug "`$var contains $var"

Обратите внимание на небольшую хитрость: вывод команды Write-Debug заключен в двойные кавычки. В результате переменные заменяются их содержимым. Для первой переменной используется обратный апостроф (экранирующий символ в PowerShell), поэтому символ $ экранирован. Это приводит к тому, что первый элемент $var отображается как есть, а имя переменной выводится на экран. Второй элемент $var заменяется его содержимым.

Затем нужно ввести инструкцию Write-Debug в каждый цикл и конструкцию принятия решения. В листинге показано, как применить метод для цикла for и конструкции if. В инструкции Write-Debug во фрагменте A используется тот же прием с двойными кавычками и обратным апострофом, чтобы выяснить содержимое $i при каждом повторении цикла for. В конструкции if используются две функции Write-Debug, в том числе и в конструкции else (фрагмент B). Таким образом удается собрать данные для диагностики независимо от ветвления, несмотря на отсутствие программного кода, который бы исполнялся, когда значение $i не больше 2. Обратите внимание, что для вывода инструкций Write-Debug используется одинарная кавычка, чтобы не заменять переменную $i ее содержимым.

После добавления всех инструкций Write-Debug нужно запустить сценарий и сравнить вывод с записанными ожидаемыми значениями. Отметьте любые различия. Возможно, придется пересмотреть ожидания, но любое различие следует рассматривать как указатель на потенциальную ошибку.

Если сценарий выполняется, как ожидалось, просто замените $DebugPreference в начале сценария на

$DebugPreference = "SilentlyContinue"

и диагностический вывод будет подавлен. Удалять инструкции Write-Debug не обязательно. Оставив их на месте, можно облегчить отладку сценария в будущем.

Метод 2: Set-PSDebug

Второй метод основан на использовании встроенного пошагового отладчика Set-PSDebug для построчного выполнения сценария. В длинных сценариях процедура может показаться утомительной, но в PowerShell 1.0 приходится довольствоваться этим. В PowerShell 2.0 появились контрольные точки, о которых будет рассказано в следующей статье. С их помощью можно задать момент перехода сценария в режим ожидания, не выполняя его построчно.

Для запуска отладчика выполните команду

Set-PsDebug -step

Позднее его можно отключить командой

Set-PsDebug -off

Включенный отладчик действует на все сценарии (а также на команды, введенные в командной строке). Нужно просто запустить сценарий и приступить к отладке. Каждый раз, обнаруживая строку сценария, PowerShell отображает ее и просит подтверждения, чтобы продолжить выполнение. Полезно иметь распечатку с пронумерованными строками, чтобы точно видеть, какое место сценария выполняет PowerShell. Чтобы выполнить строку, нажмите клавишу Enter. В процессе выполнения можно сравнивать ожидаемые результаты с реально полученными.

Не нажимайте клавишу Enter всякий раз, когда сценарий изменяет переменную или готовится обратиться к свойству переменной или объекта. Вместо этого введите S и нажмите Enter. При этом выполнение сценария приостанавливается, и на экране появляется особое приглашение. С его помощью можно:

  • обращаться к переменным, чтобы увидеть их содержимое;
  • запускать команды, чтобы увидеть их результат;
  • просматривать свойства объекта, чтобы увидеть их содержимое.

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

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

К отладке готов?

Процедура отладки не обязательно сложна при методичном и согласованном подходе. Не расстраивайтесь, получая сообщение об ошибке. Внимательно прочитайте и уясните смысл сообщения. Отнеситесь к нему как к полезной (хотя и непрошеной) подсказке.

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

Дон Джоунз (powershell@concentratedtech.com) - инструктор по PowerShell (www.windowsitpro.com/go/DonJonesPowerShell), имеет звание MVP; автор более 35 книг, выступает на таких технологических конференциях, как Microsoft TechEd и Windows Connections


Отладка в Windows PowerShell


Данная статья представляет собой текстовую версию урока из нашего бесплатного видеокурса PowerShell и Основы Active Directory (для получения полного доступа используйте секретное слово «blog»).

Данный видеокурс оказался необычайно популярным по всему миру и он проведет вас по всем ступеням для создания полного набора инструментов по управлению службой каталогов Active Directory начиная с самых азов.

Кодирование с помощью PowerShell

Вначале это может показаться сложной задачей начать работать с PowerShell, особенно если с годами вы уже привыкли работать с командной строкой cmd.exe и так называемыми «батниками» (файли с расширениями.bat и.cmd). В этой статье, написанной по материалам 2-го урока нашего видеокурса, мы расскажем, как и почему вам стоит обновить свои навыки работы с PowerShell, а также разберем основы запуска редактора PowerShell, освоим авто-завершение команд и как в любой затруднительной ситуации получить актуальную помощь и примеры.

Выполнение Команд

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

Если вы сейчас работаете в какой-либо организации, которая при этом существует не один день, то у вас уже наверняка есть несколько маленьких скриптов на каждый день, которые вы запускаете из командной строки cmd.exe. И это отличная новость! Значит вы так же легко сможете выполнять все это и из PowerShell. Это было поистине мудрое дизайнерское решение со стороны Microsoft, так они сделали переход на новое решение более легким для администораторов.

По внешнему виду, редактор PowerShell выглядит и функционирует точно также, как и окружение командной строки cmd.exe. Приемы и навыки, которыми вы уже владеете, будут работать без изменений и в PowerShell. А если вы к тому же хотите повысить свою квалификацию и работаете над переходом от выполнения одноразовых задач, к тому чтобы обеспечивать более автоматизированное администрирование, то привычка запускать PowerShell, а не командную строку является отличным способом для начала.

Все ваши часто используемые утилиты, такие как ping, ipconfig, nslookup, и т. п. будут работать именно так, как вы ожидаете.

Как найти команды PowerShell

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

К счастью, прямо в редакторе встроено несколько инструментов, чтобы помочь вам справиться с этим.

Авто-завершение команд по нажатию Tab

Нет необходимости запоминать различные команды или точное написание команды. Наберите

Get-c
Теперь нажимая на клавишу Tab – вы сможете перебрать все доступные команды, начинающиеся с тех символов, что вы уже ввели. Причем это работает в любой части тела команды, на которую вы пытаетесь сослаться: в именах и флагах команд и даже при автозавершении полных путей на файловой системе.

Команда Get-Command

Несмотря на то, что автодополнение по Tab работает превосходно, что произойдет, если Вы не знаете правильное имя команды, которая вам нужна? В этом случае можно использовать команду чтобы найти другие доступные команды: Get-Command.

В поиске имени команды, важно иметь в виду, что есть синтаксис для них: Глагол-Существительное. Как правило, Глаголы такие как – Get (Получить), Set (Установить), Add (Добавить), Clear (Очистить), Read (Читать) и Write (Писать) и Существительные – файлы, серверы или другими сущности в вашей сети и приложениях.

Get-Command – это инструмент для поиска и изучения команд, доступных на вашем компьютере.

Синтаксис команд в PowerShell

Кто-то когда-то описал язык скриптов Perl, как “шум из исполняемых строк кода” (ориг. “executable line noise”) – невероятно полезный инструмент, с дико непрозрачным синтаксисом и соответственно с высоким порогом входа для его изучения.

Хотя если разобраться то и традиционная командная строка в Windows не так уж далеко от этого ушла. Рассмотрим общую задачу как найти все файлы в каталоге, имена которых начинаются с ‘foo’.

CMD: FOR /D /R %G IN (“Foo*”) DO @ECHO %G
FOR и DO указывают на то, что это цикл.
Флаг /D указывает, что это цикл по всем папкам
Флаг /R указывает, что нужно включать все файлы и папки, включая подкаталоги
Шаблон поиска, который определяет интересующий нас набор файлов, обозначается с помощью “IN”
ECHO указывает, что сценарий должен вывести на экран результат каждого цикла и, наконец,
%G – это “вынужденный параметр” и выбран потому, что ранее программисты Microsoft уже использовали при разработке буквы A, D, F, N, P, S, T, и X. Поэтому, начинать с G, является хорошим тоном, т.к. это дает вам самый большой набор неиспользованных букв для форматов путей возвращенных переменных (G, H, I, J, K, L, M) – другими словами, это лайфхак.

Сравните теперь эквивалент на PowerShell:

PowerShell: Get-ChildItem -Path C:\ -Filter ‘Foo*’
Результат – тот же, но даже на таком достаточно тривиальном примере, будет намного легче понять, что происходит. Сразу становится очевидно, что делает каждый элемент в команде и как можно их изменить. Ну разве что подстановочный знак ‘*’ используемый в обоих примерах, но я думаю что вы и так прекрасно знаете, что он означает – что все элементы должны начинаться с ‘Foo’ и в конце еще что-нибудь.

Чувствуете как ваше настроение постепенно улучшается? А теперь, что если вы захотите узнать, как выбрать только файлы (а не папки) в пути? Вы можете покопаться в мануалах, или ваш лучший друг Google вам в помощь или может попытаться разобраться из командной строки? Маленькая подсказка: если вы находитесь в PowerShell, введите “-” и нажмите клавишу Tab, пройдитесь по нужным флагам, пока очевидное решение не появится.

Одна Длинная Строка против Объекта

Сайты никому не нужны, если они не в онлайне. Именно поэтому люди тратят огромное количество времени, притворяясь, что они операторы сонара на подводной лодке и «пингуют» доступность своих серверов (да-да, именно поэтому он так называется).

Несмотря на то что вывод команды Ping полезен (и вы можете использовать ping с тем же успехом и в консоли PowerShell), в конце концов это просто большая и длинная строка – ряд букв и цифр с некоторыми перерывами между ними.

В PowerShell есть команда, которая похожа на Ping, но возвращает данные в структурированном виде. Это команда Test-Connection.

Ниже приведен результат работы этой команды по обмену пакетами с сервером ‘DC’ в совершенно ином полностью структурированном виде:

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

Встроенная помощь

До этого момента мы были сосредоточены на выполнении определенных команд, используя дополнение по Tab, но как только вы начнете работать с PowerShell все больше и больше команды становятся все более сложными c еще более сложными параметрами. В то время как синтаксис Глагол-Существительное (Verb-Noun) помогает, но еще больше помогает наличие под рукой:

1. Актуальной документации
2. Обилие примеров

Помочь по Командлетам

На практике, следует комбинировать команду Get-Command (чтобы найти то, что следует использовать), а затем использовать Get-Help чтобы узнать, как пользоваться этой конкретной командой.

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

Для начала можно поискать команды для взаимодействия со службами:

Get-Command service
Которая сообщит вам сразу, что вы на правильном пути. Обдумывая вернуться в стандартный синтаксис команд PowerShell Глагол-Существительное, вы бы хотели выяснить, как правильно использовать команду ‘Get-Service’.

Документация Microsoft по команде Get-Service
Для этого стоит использовать команду ‘Get-Help’. Начните печатать
“Get-Help -” и затем нажмите клавишу Tab
Вы быстро обнаружите доступные опции, наиболее явно подходит один “Name”, так что стоит попробовать:

Get-Help -Name Get-Service
Тут же вы получите полный синтаксис команды (и что из опций вы можете включить или исключить на базе фильтров).

Если вы захотите исследовать команду глубже и детализировать ее вплоть до каждого параметра, то наберите:

Get-Help -Name Get-Service - Parameter Name

Помощь с примерами на PowerShell

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

Введя “-examples” или добавив флаг “-detail” к команде “Get-Help”, вам будет предоставлен набор примеров для использования команды.
Вот, к примеру, вывод для команды:

Get-Help -Name Get-Service -Examples

Оставаясь в курсе

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

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

Update-help
и начнется процесс загрузки обновленной контекстной помощи.

Вы можете помочь и перевести немного средств на развитие сайта

Закончим работу с выводом данных.

В том случае, если нам не нужен вывод информации на экран консоли (допустим, она просто для нас лишняя, и нам просто нужно, чтобы определенные команды отработали без вывода результатов на экран), мы можем воспользоваться командлетом Out-Null .

Что будет, если к хорошо известному командлету Get-Process добавить Out-Null ?

Get-Process | Out-Null
Пример действия Out-Null в PowerShell

Как видим, не произошло ровным счетом ничего. А, точнее будет сказать, ничего видимого для наших глаз. Командлет Get-Process отработал, но мы не захотели ознакомиться с результатами его работы. Конечно, данное действие было бессмысленным.

Можно привести пример более осмысленного действия. Перейдем в корень диска C и создадим там каталог primer.

cd c:\ mkdir primer

Как видим, PowerShell вывел нам содержимое только что созданного каталога. Если нам это не нужно, можно использовать Out-Null .

mkdir primer | Out-Null

Итак, Out-Null это полезный инструмент для совершения тех действий, которые должны выполняться что называется «под капотом».

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

Самый простой способ вывести окошко с произвольным тестом через подсистему сценариев Windows – Wscript.

Следующий код выведет обычное текстовое окно с необходимым текстом и кнопкой OK.

$wshell = New-Object -ComObject Wscript.Shell
$Output = $wshell.Popup("Скрипт формирования отчета выполнен")

С помощью различных свойств метода Popup вы можете настроить вид модального окна сообщения. В том числе можно вернуть в скрипт результаты ответа пользователя на вопрос (Да / Нет).

$Output = $wshell.Popup("Скрипт формирования отчета завершен! Хотите вывести его на экран?",0,"Отчет готов",4+32)

Общий синтаксис и параметры метода Popup:

Popup(,,,<Type>) </b></p><p>Параметры:</p><ul><li><Text> — строка, текст сообщения.</li><li><SecondsToWait> — необязательный, число. Количество секунд, по истечении которого окно будет автоматически закрыто.</li><li><Title> — необязательный, строка. Текст заголовка окна сообщения.</li><li><Type> — необязательный, число. Комбинация флагов, определяет тип кнопок и значка. Возможные значения флагов:<ul><li>0 — кнопка ОК.</li><li>1 — кнопки ОК и Отмена.</li><li>2 — кнопки Стоп, Повтор, Пропустить.</li><li>3 — кнопки Да, Нет, Отмена.</li><li>4 — кнопки Да и Нет.</li><li>5 — кнопки Повтор и Отмена.</li><li>16 — значок Stop.</li><li>32 — значок Question.</li><li>48 — значок Exclamation.</li><li>64 — значок Information.</li> </ul></li> </ul><p>Описание: возвращает целое значение, с помощью которого можно узнать, какая кнопка была нажата пользователем. Возможные значения:</p><ul><li>-1 — таймаут.</li><li>1 — кнопка ОК.</li><li>2 — кнопка Отмена.</li><li>3 — кнопка Стоп.</li><li>4 — кнопка Повтор.</li><li>5 — кнопка Пропустить.</li><li>6 — кнопка Да.</li><li>7 — кнопка Нет.</li> </ul><p>Более привлекательные и приятные взгляду всплывающие сообщения (ballons) можно вывести в Windows 7, 8.1 и 10 через <a href="/programmirovanie-pod-windows-s-ispolzovaniem-win-api-otkrytye-kody-windows-sila-zakona/">API Windows</a> Forms. Следующий PowerShell код выведет всплывающее сообщение рядом с панелью уведомлений Windows 10, которое автоматически исчезнет через 10 секунд.</p><p>Add-Type -AssemblyName System.Windows.Forms<br>$global:balmsg = New-Object System.Windows.Forms.NotifyIcon<br>$path = (Get-Process -id $pid).Path<br>$balmsg.Icon = ::ExtractAssociatedIcon($path)<br>$balmsg.BalloonTipIcon = ::Warning<br>$balmsg.BalloonTipText = "Это текст всплывающего сообщения для <a href="/audit-deistvii-polzovatelya-windows-primenenie-audita-windows-dlya/">пользователя Windows</a> 10"<br>$balmsg.BalloonTipTitle = "Внимание $Env:USERNAME"<br>$balmsg.Visible = $true<br>$balmsg.ShowBalloonTip(10000)</p><p><img src='https://i0.wp.com/winitpro.ru/wp-content/uploads/2018/10/vsplyvayushee-uvedomlenie-v-powershell.png' width="100%" loading=lazy></p><p>Кроме того для создания красочных всплывающих сообщений в Windows 10 (PowerShell 5.0+)можно использовать отдельный PowerShell модуль BurntToast из галереи PowerShell.</p><p>Модуль устанавливается из онлайн репозитория с помощью :<br> Install-Module -Name BurntToast</p><p>Теперь, например, в ранее рассматриваемый можно добавить красочное уведомление:</p><p>New-BurntToastNotification -Text "Отключение от <a href="/programma-dlya-zashchity-wifi-seti-na-russkom-softperfect-wifi-guard-besplatnaya/">Wi-Fi сети</a>", "Вы были отключены от Wi-Fi сети, т.к. Вше устройство было подключено к скоростному Ethernet подключению." -AppLogo C:\PS\changenetwork.png</p><p>Итак, теперь вы знаете как вывести уведомление пользователя через PowerShell. Если у пользователя есть динамики, можно даже сыграть ему мелодию:</p><p>::beep(440,500)<br>::beep(440,500)<br>::beep(440,500)<br>::beep(349,350)<br>::beep(523,150)<br>::beep(440,500)<br>::beep(349,350)<br>::beep(523,150)<br>::beep(440,1000)<br>::beep(659,500)<br>::beep(659,500)<br>::beep(659,500)<br>::beep(698,350)<br>::beep(523,150)<br>::beep(415,500)<br>::beep(349,350)<br>::beep(523,150)<br>::beep(440,1000)<br>::beep(880,500)<br>::beep(440,350)<br>::beep(440,150)<br>::beep(880,500)<br>::beep(830,250)<br>::beep(784,250)<br>::beep(740,125)<br>::beep(698,125)<br>::beep(740,250)<br>::beep(455,250)<br>::beep(622,500)<br>::beep(587,250)<br>::beep(554,250)<br>::beep(523,125)<br>::beep(466,125)<br>::beep(523,250)<br>::beep(349,125)<br>::beep(415,500)<br>::beep(349,375)<br>::beep(440,125)<br>::beep(523,500)<br>::beep(440,375)<br>::beep(523,125)<br>::beep(659,1000)<br>::beep(880,500)<br>::beep(440,350)<br>::beep(440,150)<br>::beep(880,500)<br>::beep(830,250)<br>::beep(784,250)<br>::beep(740,125)<br>::beep(698,125)<br>::beep(740,250)<br>::beep(455,250)<br>::beep(622,500)<br>::beep(587,250)<br>::beep(554,250)<br>::beep(523,125)<br>::beep(466,125)<br>::beep(523,250)<br>::beep(349,250)<br>::beep(415,500)<br>::beep(349,375)<br>::beep(523,125)<br>::beep(440,500)<br>::beep(349,375)<br>::beep(261,125)<br>::beep(440,1000)</p> <p><b>PowerShell </b> - это объектно-ориентированный программный движок и скриптовый язык с интерфейсом командной строки, предоставляющий IT-профессионалам более <a href="/picsart-programma-dlya-redaktirovaniya-foto-na-mobilnyh/">широкие возможности</a> для конфигурирования <a href="/kak-pereustanovit-operacionnuyu-sistemu-na-kompe-pereustanovit-windows-s/">операционных систем</a> семейства MS Windows. Проще говоря, это своего рода универсальный инструмент администрирования. В данной статье будут рассмотрены базовые приёмы написания скриптов на PowerShell, позволяющие простым путём автоматизировать управление Windows-окружением.</p> <p>PowerShell предлагает как чисто консольный интерфейс, так и полноценную среду разработки <b>PowerShell ISE </b> (Integrated Scripting Environment, встроенное скриптовое окружение) для скриптов. Для запуска интерфейса командной строки введите powershell в меню «Выполнить» (WinKey + R). PowerShell ISE запускается с помощью команды «PowerShell ISE» в том же меню.</p> <p>ISE более предпочтительно, так как предоставляет более широкие возможности разработчику благодаря подсветке синтаксиса, функции автозаполнения кода и другим особенностям, присущим многим «большим» IDE.</p> <h2>Написание и запуск скриптов</h2> <p>Скрипты сохраняются в виде файлов с расширением.ps1 . Несмотря на то, что PowerShell уже давно является нативной частью ОС Windows, вы не сможете запустить его скрипты простым двойным щелчком. Для этого надо кликнуть правой кнопкой по скрипту и выбрать «Запустить в PowerShell».</p><p>Также существуют системные политики, ограничивающие выполнение скриптов. Можно проверить текущие параметры политики, введя команду Get-ExecutionPolicy . Результатом будет одно из следующих значений:</p> <ul><li><b>Restricted </b> - выполнение скриптов запрещено. Стандартная конфигурация;</li> <li><b>AllSigned </b> - можно запускать скрипты, подписанные <a href="/programma-dlya-sozdaniya-sistem-konstruktory-programm-pisat/">доверенным разработчиком</a>; перед запуском скрипта PowerShell запросит у вас подтверждение;</li> <li><b>RemoteSigned </b> - можно запускать <a href="/zapusk-sobstvennyh-skriptov-systemd-systemd-ochen-bystryi-start-interval-mezhdu/">собственные скрипты</a> или те, что подписаны доверенным разработчиком;</li> <li><b>Unrestricted </b> - можно запускать любые скрипты.</li> </ul><p>Для начала работы необходимо изменить настройку политики запуска на RemoteSigned, используя команду Set-ExecutionPolicy:</p> <h3></h3> <h3>Командлеты</h3> <p>Командлеты - это команды с предопределённой функцией, подобные условным операторам в языках программирования. У них есть несколько ключевых особенностей:</p> <ul><li>существуют системные, пользовательские и опциональные командлеты;</li> <li>результатом выполнения командлета будет объект или массив объектов;</li> <li>командлеты могут обрабатывать данные и передавать их другим командлетам с помощью конвейеров;</li> <li>командлеты нечувствительны к регистру, так что нет никакой разницы между Get-ADUser , get-aduser и gEt-AdUsEr ;</li> <li>в качестве разделителя используется символ; .</li> </ul><p>Каждый командлет содержит в себе глагол и существительное, разделяемые дефисом. Например:</p> <ul><li><b>Get-Process </b> - отобразить текущие процессы, запущенные на компьютере;</li> <li><b>Get-Service </b> - отобразить список служб и их статус;</li> <li><b>Get-Content </b> - отобразить содержимое <a href="/kak-otkryt-fail-cmk-chto-takoe-rasshirenie-faila-cmk-eto-vozmozhno-chto/">указанного файла</a>, например Get-Content C:\Windows\System32\drivers\etc\hosts .</li> </ul><p>При необходимости список всех доступных командлетов можно вывести с помощью Get-Help-Category:</p> <p><img src='https://i2.wp.com/cdn.tproger.ru/wp-content/uploads/2018/10/PS7.png' width="100%" loading=lazy></p> <p>Также можно создавать и свои собственные командлеты.</p> <h3>Параметры</h3> <p>У каждого командлета есть несколько параметров, определяющих его работу. PowerShell ISE автоматически предлагает все доступные параметры с отображением их типа. Например, Get-Service-NameW* выводит список служб, у которых имя начинается с W . Если вы забыли, какие параметры у введённого командлета, воспользуйтесь Get-Member . Например, Get-Process | Get-Member:</p> <p><img src='https://i0.wp.com/cdn.tproger.ru/wp-content/uploads/2018/10/PS9-768x682.jpg' width="100%" loading=lazy></p> <p>Если вы не нашли того, что нужно, или не уверены в том, как правильно задаются параметры, можно даже запросить примеры с помощью параметра -Examples:</p> <p><img src='https://i2.wp.com/cdn.tproger.ru/wp-content/uploads/2018/10/PS10-768x563.jpg' width="100%" loading=lazy></p> <p>Некоторые командлеты также могут вызываться с помощью алиасов, например вместо Get-Help можно просто написать Help .</p> <p>При написании больших скриптов или коллективной разработке можно пользоваться комментариями. Каждый комментарий начинается с символа # , а блок комментариев ограничивается комбинациями символов <# и #> в начале и в конце соответственно.</p> <h3>Конвейер</h3> <p><b>PowerShell </b> позволяет осуществлять обмен данными между командлетами с помощью конвейера. Например:</p> <ul><li>GetService | SortObject -property Status - сортировка запущенных служб по статусу;</li> <li>“Hello World!” | Out-File C:\ps\test.txt - запись текста в файл.</li> </ul><p>Можно использовать несколько конвейеров. Например, следующий скрипт выводит список имён всех служб за исключением остановленных:</p> <p>Get-Service | WHERE {$_.status -eq “Running”} | SELECT displayname</p> <h2>Заключение</h2> <p>Итак, благодаря этому руководству у новичков появилось представление о том, что из себя представляет PowerShell. Также мы рассмотрели варианты изменения политики выполнения скриптов, что такое командлет, как они обмениваются данными с помощью конвейера и как получить свойства нужного объекта. Помните, что в случае затруднений можно воспользоваться командлетом Get-Help.</p> <script type="text/javascript"> <!-- var _acic={dataProvider:10};(function(){var e=document.createElement("script");e.type="text/javascript";e.async=true;e.src="https://www.acint.net/aci.js";var t=document.getElementsByTagName("script")[0];t.parentNode.insertBefore(e,t)})() //--> </script><br> <br> <script>document.write("<img style='display:none;' src='//counter.yadro.ru/hit;artfast_after?t44.1;r"+ escape(document.referrer)+((typeof(screen)=="undefined")?"": ";s"+screen.width+"*"+screen.height+"*"+(screen.colorDepth? screen.colorDepth:screen.pixelDepth))+";u"+escape(document.URL)+";h"+escape(document.title.substring(0,150))+ ";"+Math.random()+ "border='0' width='1' height='1' loading=lazy>");</script> <div style="font-size: 12px; color: #888888;"> просмотров</div> </div> <style> .share { -moz-border-radius: 5px; -webkit-border-radius: 5px; border-radius: 10px; display: inline-block; padding: 10px 15px; margin: 5px; } .share.ok { background: #eb722e; color: #fff; } .share.vk { background: #6287ae; color: #fff; } .share.fb { background: #3b5998; color: #fff; } </style> <br> <div align="center"> <a class="share fb" href="https://www.facebook.com/sharer.php?u=https%3A%2F%2Frub-mining.ru%2Fvyvod-informacii-ob-uspeshnom-vypolnenii-komandy-powershell-kak%2F" target="_blank">Сохранить в Facebook</a> <a class="share ok" href="http://www.odnoklassniki.ru/dk?st.cmd=addShare&st.s=1&st._surl=https%3A%2F%2Frub-mining.ru%2Fvyvod-informacii-ob-uspeshnom-vypolnenii-komandy-powershell-kak%2F" target="_blank">Сохранить в Одноклассники</a> Сохранить ВКонтакте </div> <br> </div> </article> </div> <ul class="default-wp-page clearfix"> <li class="previous"><a href="/podklyuchenie-interneta-na-kompyuter-po-wifi-cherez-adapter-po-usb-kakimi/" rel="prev"><span class="meta-nav">Какими способами можно сделать и подключить USB-вход к штатной магнитоле Как это работает</span> Привет всем! Раньше я уже писал статью о том, как подключить ide жесткий диск к материнской...</a></li> <li class="next"><a href="/gde-nahoditsya-arhiv-v-instagrame-na-telefone-i-kompyutere-chto-znachit/" rel="next">Что значит архивировать в инстаграме Как заархивировать публикацию в инстаграме <span class="meta-nav">→</span></a></li> </ul> <h4 class="related-posts-main-title"><i class="fa fa-thumbs-up"></i><span>Вам также может понравиться</span></h4> <div class="related-posts clearfix"> <div class="single-related-posts"> <div class="related-posts-thumbnail"> <a href="/prilozhenie-dlya-skachivaniya-oboev-avtomaticheskaya-smena-oboev-rabochego/" title="Автоматическая смена обоев рабочего стола"> <img width="390" height="205" src="/uploads/84121ec2755bea61b13882b0e7f98537.jpg" class="attachment-colormag-featured-post-medium size-colormag-featured-post-medium wp-post-image" alt="Автоматическая смена обоев рабочего стола" / loading=lazy> </a> </div> <div class="article-content"> <h3 class="entry-title"> <a href="/prilozhenie-dlya-skachivaniya-oboev-avtomaticheskaya-smena-oboev-rabochego/" rel="bookmark" title="Автоматическая смена обоев рабочего стола">Автоматическая смена обоев рабочего стола</a> </h3> <div class="below-entry-meta"> <span class="posted-on"><a href="/prilozhenie-dlya-skachivaniya-oboev-avtomaticheskaya-smena-oboev-rabochego/" title="Автоматическая смена обоев рабочего стола" rel="bookmark"><i class="fa fa-calendar-o"></i> <time class="entry-date published" datetime="">2024-01-27 08:50:00</time></a></span> <span class="byline"><span class="author vcard"></span></span> <span class="comments"><i class="fa fa-comment"></i><a href="/prilozhenie-dlya-skachivaniya-oboev-avtomaticheskaya-smena-oboev-rabochego/">0</a></span> </div> </div> </div> <div class="single-related-posts"> <div class="related-posts-thumbnail"> <a href="/chto-takoe-vidzhet-na-android-i-kak-ego-dobavit-na-rabochii-stol-ustanovka-i/" title="Установка и удаление виджетов на Android"> <img width="390" height="205" src="/uploads/66e7cd905d5c08a96f3d742b097e3f16.jpg" class="attachment-colormag-featured-post-medium size-colormag-featured-post-medium wp-post-image" alt="Установка и удаление виджетов на Android" / loading=lazy> </a> </div> <div class="article-content"> <h3 class="entry-title"> <a href="/chto-takoe-vidzhet-na-android-i-kak-ego-dobavit-na-rabochii-stol-ustanovka-i/" rel="bookmark" title="Установка и удаление виджетов на Android">Установка и удаление виджетов на Android</a> </h3> <div class="below-entry-meta"> <span class="posted-on"><a href="/chto-takoe-vidzhet-na-android-i-kak-ego-dobavit-na-rabochii-stol-ustanovka-i/" title="Установка и удаление виджетов на Android" rel="bookmark"><i class="fa fa-calendar-o"></i> <time class="entry-date published" datetime="">2024-01-27 08:50:00</time></a></span> <span class="byline"><span class="author vcard"></span></span> <span class="comments"><i class="fa fa-comment"></i><a href="/chto-takoe-vidzhet-na-android-i-kak-ego-dobavit-na-rabochii-stol-ustanovka-i/">0</a></span> </div> </div> </div> <div class="single-related-posts"> <div class="related-posts-thumbnail"> <a href="/delovaya-perepiska-po-elektronnoi-pochte-pravila-vedeniya/" title="Правила ведения деловой переписки"> <img width="390" height="205" src="/uploads/ec33c44ec9088dc28d695d6873fc32e8.jpg" class="attachment-colormag-featured-post-medium size-colormag-featured-post-medium wp-post-image" alt="Правила ведения деловой переписки" / loading=lazy> </a> </div> <div class="article-content"> <h3 class="entry-title"> <a href="/delovaya-perepiska-po-elektronnoi-pochte-pravila-vedeniya/" rel="bookmark" title="Правила ведения деловой переписки">Правила ведения деловой переписки</a> </h3> <div class="below-entry-meta"> <span class="posted-on"><a href="/delovaya-perepiska-po-elektronnoi-pochte-pravila-vedeniya/" title="Правила ведения деловой переписки" rel="bookmark"><i class="fa fa-calendar-o"></i> <time class="entry-date published" datetime="">2024-01-27 08:50:00</time></a></span> <span class="byline"><span class="author vcard"></span></span> <span class="comments"><i class="fa fa-comment"></i><a href="/delovaya-perepiska-po-elektronnoi-pochte-pravila-vedeniya/">0</a></span> </div> </div> </div> </div> </div> <div id="secondary"> <aside id="colormag_featured_posts_vertical_widget-2" class="widget widget_featured_posts widget_featured_posts_vertical widget_featured_meta clearfix"> <div class="first-post"> <div class="single-article clearfix"> <figure><a href="/pochemu-yaponskie-telefony-zhivut-tolko-v-yaponii-chem-tak-unikalny-yaponskie/" title="Чем так уникальны японские смартфоны?"><img width="390" height="205" src="/uploads/7c58574a4acfd3808b7913c9a2154cfd.jpg" class="attachment-colormag-featured-post-medium size-colormag-featured-post-medium wp-post-image" alt="Чем так уникальны японские смартфоны?" title="Чем так уникальны японские смартфоны?" / loading=lazy></a></figure> <div class="article-content"> <div class="above-entry-meta"><span class="cat-links"><a href="/category/novosti/" rel="category tag">Новости</a> </span></div> <h3 class="entry-title"> <a href="/pochemu-yaponskie-telefony-zhivut-tolko-v-yaponii-chem-tak-unikalny-yaponskie/" title="Чем так уникальны японские смартфоны?">Чем так уникальны японские смартфоны?</a> </h3> <div class="below-entry-meta"> <span class="posted-on"><a href="/pochemu-yaponskie-telefony-zhivut-tolko-v-yaponii-chem-tak-unikalny-yaponskie/" title="Чем так уникальны японские смартфоны?" rel="bookmark"><i class="fa fa-calendar-o"></i> <time class="entry-date published">2024-01-26 07:27:05</time></a></span> <span class="byline"> </span> <span class="comments"><i class="fa fa-comment"></i><a href="/pochemu-yaponskie-telefony-zhivut-tolko-v-yaponii-chem-tak-unikalny-yaponskie/"></a></span> </div> <div class="entry-content"> <p>Япония удивительная страна со своими обычаями. Смартфоны, которые производятся и продаются в Японии, не похожи на...</p> </div> </div> </div> </div> <div class="following-post"> <div class="single-article clearfix"> <figure><a href="/kak-nastroit-melodiyu-na-zvonok-v-smartfone-kak-ustanovit-melodiyu-na/" title="Как установить мелодию на звонок или смс на Андроид?"><img width="130" height="90" src="/uploads/bc32e8404b8654c839203643a5dfd37d.jpg" class="attachment-colormag-featured-post-small size-colormag-featured-post-small wp-post-image" alt="Как установить мелодию на звонок или смс на Андроид?" title="Как установить мелодию на звонок или смс на Андроид?" sizes="(max-width: 130px) 100vw, 130px" / loading=lazy></a></figure> <div class="article-content"> <div class="above-entry-meta"><span class="cat-links"><a href="/category/hard-reset/" rel="category tag">Hard reset</a> </span></div> <h3 class="entry-title"> <a href="/kak-nastroit-melodiyu-na-zvonok-v-smartfone-kak-ustanovit-melodiyu-na/" title="Как установить мелодию на звонок или смс на Андроид?">Как установить мелодию на звонок или смс на Андроид?</a> </h3> <div class="below-entry-meta"> <span class="posted-on"><a href="/kak-nastroit-melodiyu-na-zvonok-v-smartfone-kak-ustanovit-melodiyu-na/" title="Как установить мелодию на звонок или смс на Андроид?" rel="bookmark"><i class="fa fa-calendar-o"></i> <time class="entry-date published" >2024-01-25 05:42:19</time></a></span> <span class="byline"> </span> <span class="comments"><i class="fa fa-comment"></i><a href="/kak-nastroit-melodiyu-na-zvonok-v-smartfone-kak-ustanovit-melodiyu-na/"></a></span> </div> </div> </div> <div class="single-article clearfix"> <figure><a href="/pervye-shagi-v-poiskovoi-optimizacii-simple-machines-forum-udalyaem-kopirait/" title="Автоматическое определение движка форума Ездит index php topic powered by smf"><img width="130" height="90" src="/uploads/bcda83b48078bdd7f11283031f0e21e4.jpg" class="attachment-colormag-featured-post-small size-colormag-featured-post-small wp-post-image" alt="Автоматическое определение движка форума Ездит index php topic powered by smf" title="Автоматическое определение движка форума Ездит index php topic powered by smf" sizes="(max-width: 130px) 100vw, 130px" / loading=lazy></a></figure> <div class="article-content"> <div class="above-entry-meta"><span class="cat-links"><a href="/category/hard-reset/" rel="category tag">Hard reset</a> </span></div> <h3 class="entry-title"> <a href="/pervye-shagi-v-poiskovoi-optimizacii-simple-machines-forum-udalyaem-kopirait/" title="Автоматическое определение движка форума Ездит index php topic powered by smf">Автоматическое определение движка форума Ездит index php topic powered by smf</a> </h3> <div class="below-entry-meta"> <span class="posted-on"><a href="/pervye-shagi-v-poiskovoi-optimizacii-simple-machines-forum-udalyaem-kopirait/" title="Автоматическое определение движка форума Ездит index php topic powered by smf" rel="bookmark"><i class="fa fa-calendar-o"></i> <time class="entry-date published" >2024-01-25 05:42:19</time></a></span> <span class="byline"> </span> <span class="comments"><i class="fa fa-comment"></i><a href="/pervye-shagi-v-poiskovoi-optimizacii-simple-machines-forum-udalyaem-kopirait/"></a></span> </div> </div> </div> <div class="single-article clearfix"> <figure><a href="/poshagovaya-ustanovka-windows-xp-diska-ustanovka-windows-xp-poshagovaya-instrukciya-v/" title="Пошаговая установка windows xp диска"><img width="130" height="90" src="/uploads/8497574f632d104062e487f85f57bec6.jpg" class="attachment-colormag-featured-post-small size-colormag-featured-post-small wp-post-image" alt="Пошаговая установка windows xp диска" title="Пошаговая установка windows xp диска" sizes="(max-width: 130px) 100vw, 130px" / loading=lazy></a></figure> <div class="article-content"> <div class="above-entry-meta"><span class="cat-links"><a href="/category/tehnika/" rel="category tag">Техника</a> </span></div> <h3 class="entry-title"> <a href="/poshagovaya-ustanovka-windows-xp-diska-ustanovka-windows-xp-poshagovaya-instrukciya-v/" title="Пошаговая установка windows xp диска">Пошаговая установка windows xp диска</a> </h3> <div class="below-entry-meta"> <span class="posted-on"><a href="/poshagovaya-ustanovka-windows-xp-diska-ustanovka-windows-xp-poshagovaya-instrukciya-v/" title="Пошаговая установка windows xp диска" rel="bookmark"><i class="fa fa-calendar-o"></i> <time class="entry-date published" >2024-01-25 05:42:19</time></a></span> <span class="byline"> </span> <span class="comments"><i class="fa fa-comment"></i><a href="/poshagovaya-ustanovka-windows-xp-diska-ustanovka-windows-xp-poshagovaya-instrukciya-v/"></a></span> </div> </div> </div> <div class="single-article clearfix"> <figure><a href="/stoit-li-zhdat-iphone-se-vtorogo-pokoleniya-novyi-iphone-se/" title="Новый iPhone SE представят в сентябре"><img width="130" height="90" src="/uploads/a54dea8a06d5a67369f0ed554abb5054.jpg" class="attachment-colormag-featured-post-small size-colormag-featured-post-small wp-post-image" alt="Новый iPhone SE представят в сентябре" title="Новый iPhone SE представят в сентябре" sizes="(max-width: 130px) 100vw, 130px" / loading=lazy></a></figure> <div class="article-content"> <div class="above-entry-meta"><span class="cat-links"><a href="/category/nastroit-internet/" rel="category tag">Настроить интернет</a> </span></div> <h3 class="entry-title"> <a href="/stoit-li-zhdat-iphone-se-vtorogo-pokoleniya-novyi-iphone-se/" title="Новый iPhone SE представят в сентябре">Новый iPhone SE представят в сентябре</a> </h3> <div class="below-entry-meta"> <span class="posted-on"><a href="/stoit-li-zhdat-iphone-se-vtorogo-pokoleniya-novyi-iphone-se/" title="Новый iPhone SE представят в сентябре" rel="bookmark"><i class="fa fa-calendar-o"></i> <time class="entry-date published" >2024-01-24 05:22:16</time></a></span> <span class="byline"> </span> <span class="comments"><i class="fa fa-comment"></i><a href="/stoit-li-zhdat-iphone-se-vtorogo-pokoleniya-novyi-iphone-se/"></a></span> </div> </div> </div> <div class="single-article clearfix"> <figure><a href="/iphone-x-polnyi-obzor-novinki-obzor-iphone-x-pochemu-ego-tak-vse-hotyat/" title="Обзор iPhone X: почему его так все хотят Айфон икс в настоящем размере"><img width="130" height="90" src="/uploads/7d52b90fadfbb152baba9c256cc6624e.jpg" class="attachment-colormag-featured-post-small size-colormag-featured-post-small wp-post-image" alt="Обзор iPhone X: почему его так все хотят Айфон икс в настоящем размере" title="Обзор iPhone X: почему его так все хотят Айфон икс в настоящем размере" sizes="(max-width: 130px) 100vw, 130px" / loading=lazy></a></figure> <div class="article-content"> <div class="above-entry-meta"><span class="cat-links"><a href="/category/tehnika/" rel="category tag">Техника</a> </span></div> <h3 class="entry-title"> <a href="/iphone-x-polnyi-obzor-novinki-obzor-iphone-x-pochemu-ego-tak-vse-hotyat/" title="Обзор iPhone X: почему его так все хотят Айфон икс в настоящем размере">Обзор iPhone X: почему его так все хотят Айфон икс в настоящем размере</a> </h3> <div class="below-entry-meta"> <span class="posted-on"><a href="/iphone-x-polnyi-obzor-novinki-obzor-iphone-x-pochemu-ego-tak-vse-hotyat/" title="Обзор iPhone X: почему его так все хотят Айфон икс в настоящем размере" rel="bookmark"><i class="fa fa-calendar-o"></i> <time class="entry-date published" >2024-01-24 05:22:16</time></a></span> <span class="byline"> </span> <span class="comments"><i class="fa fa-comment"></i><a href="/iphone-x-polnyi-obzor-novinki-obzor-iphone-x-pochemu-ego-tak-vse-hotyat/"></a></span> </div> </div> </div> </div> </aside> <aside id="text-2" class="widget widget_text clearfix"> <h3 class="widget-title"><span>Новости партнеров</span></h3> <div class="textwidget"> </div> </aside> <aside id="colormag_featured_posts_vertical_widget-3" class="widget widget_featured_posts widget_featured_posts_vertical widget_featured_meta clearfix"> <div class="first-post"> <div class="single-article clearfix"> <figure><a href="/kak-v-fotografiyu-vstavit-drugoe-lico-kak-v-fotoshope-vstavit-lico-v-drugoe/" title="Как в фотошопе вставить лицо в другое фото Фотошоп со вставкой лица"><img width="390" height="205" src="/uploads/079ac8fba00f3a34c65b46b41c8b20c8.jpg" class="attachment-colormag-featured-post-medium size-colormag-featured-post-medium wp-post-image" alt="Как в фотошопе вставить лицо в другое фото Фотошоп со вставкой лица" title="Как в фотошопе вставить лицо в другое фото Фотошоп со вставкой лица" / loading=lazy></a></figure> <div class="article-content"> <div class="above-entry-meta"><span class="cat-links"><a href="/category/tehnika/" rel="category tag">Техника</a> </span></div> <h3 class="entry-title"> <a href="/kak-v-fotografiyu-vstavit-drugoe-lico-kak-v-fotoshope-vstavit-lico-v-drugoe/" title="Как в фотошопе вставить лицо в другое фото Фотошоп со вставкой лица">Как в фотошопе вставить лицо в другое фото Фотошоп со вставкой лица</a> </h3> <div class="below-entry-meta"> <span class="posted-on"><a href="/kak-v-fotografiyu-vstavit-drugoe-lico-kak-v-fotoshope-vstavit-lico-v-drugoe/" title="Как в фотошопе вставить лицо в другое фото Фотошоп со вставкой лица" rel="bookmark"><i class="fa fa-calendar-o"></i> <time class="entry-date published">2024-01-22 05:25:30</time></a></span> <span class="byline"> </span> <span class="comments"><i class="fa fa-comment"></i><a href="/kak-v-fotografiyu-vstavit-drugoe-lico-kak-v-fotoshope-vstavit-lico-v-drugoe/"></a></span> </div> <div class="entry-content"> <p>29.01.2017 28.01.2018 Привет всем постоянным посетителям и гостям сайта сайт В этом уроке мы рассмотрим, как в фотошопе...</p> </div> </div> </div> </div> <div class="following-post"> <div class="single-article clearfix"> <figure><a href="/kak-otklyuchit-na-android-vibraciyu-pri-nabore-teksta-i-soedinenii-s/" title="Как настроить вибрацию на Android Как выключить вибрацию на клавиатуре хонор 6а"><img width="130" height="90" src="/uploads/455ac23c9684364a2225f125461e1d45.jpg" class="attachment-colormag-featured-post-small size-colormag-featured-post-small wp-post-image" alt="Как настроить вибрацию на Android Как выключить вибрацию на клавиатуре хонор 6а" title="Как настроить вибрацию на Android Как выключить вибрацию на клавиатуре хонор 6а" sizes="(max-width: 130px) 100vw, 130px" / loading=lazy></a></figure> <div class="article-content"> <div class="above-entry-meta"><span class="cat-links"><a href="/category/sovety/" rel="category tag">Советы</a> </span></div> <h3 class="entry-title"> <a href="/kak-otklyuchit-na-android-vibraciyu-pri-nabore-teksta-i-soedinenii-s/" title="Как настроить вибрацию на Android Как выключить вибрацию на клавиатуре хонор 6а">Как настроить вибрацию на Android Как выключить вибрацию на клавиатуре хонор 6а</a> </h3> <div class="below-entry-meta"> <span class="posted-on"><a href="/kak-otklyuchit-na-android-vibraciyu-pri-nabore-teksta-i-soedinenii-s/" title="Как настроить вибрацию на Android Как выключить вибрацию на клавиатуре хонор 6а" rel="bookmark"><i class="fa fa-calendar-o"></i> <time class="entry-date published" >2024-01-22 05:25:30</time></a></span> <span class="byline"> </span> <span class="comments"><i class="fa fa-comment"></i><a href="/kak-otklyuchit-na-android-vibraciyu-pri-nabore-teksta-i-soedinenii-s/"></a></span> </div> </div> </div> <div class="single-article clearfix"> <figure><a href="/remonta-makbuka-kak-vernut-zhizn-vashemu-lyubimomu-gadzhetu/" title="Ремонта Макбука: Как Вернуть Жизнь Вашему Любимому Гаджету"><img width="130" height="90" src="https://rub-mining.ru/wp-content/uploads/67184dcf0c5b3aba4217206cb95409abub-130x90.png" class="attachment-colormag-featured-post-small size-colormag-featured-post-small wp-post-image" alt="Ремонта Макбука: Как Вернуть Жизнь Вашему Любимому Гаджету" title="Ремонта Макбука: Как Вернуть Жизнь Вашему Любимому Гаджету" sizes="(max-width: 130px) 100vw, 130px" / loading=lazy></a></figure> <div class="article-content"> <div class="above-entry-meta"><span class="cat-links"><a href="/category/tehnika/" rel="category tag">Техника</a> </span></div> <h3 class="entry-title"> <a href="/remonta-makbuka-kak-vernut-zhizn-vashemu-lyubimomu-gadzhetu/" title="Ремонта Макбука: Как Вернуть Жизнь Вашему Любимому Гаджету">Ремонта Макбука: Как Вернуть Жизнь Вашему Любимому Гаджету</a> </h3> <div class="below-entry-meta"> <span class="posted-on"><a href="/remonta-makbuka-kak-vernut-zhizn-vashemu-lyubimomu-gadzhetu/" title="Ремонта Макбука: Как Вернуть Жизнь Вашему Любимому Гаджету" rel="bookmark"><i class="fa fa-calendar-o"></i> <time class="entry-date published" >2024-04-22 12:13:00</time></a></span> <span class="byline"> </span> <span class="comments"><i class="fa fa-comment"></i><a href="/remonta-makbuka-kak-vernut-zhizn-vashemu-lyubimomu-gadzhetu/"></a></span> </div> </div> </div> <div class="single-article clearfix"> <figure><a href="/kak-sdelat-effekt-v-liber-ofis-osnovnye-priemy-raboty-v/" title="Основные приемы работы в LibreOffice Writer"><img width="130" height="90" src="/uploads/b8c977f1eb0da73484f8abba343068fc.jpg" class="attachment-colormag-featured-post-small size-colormag-featured-post-small wp-post-image" alt="Основные приемы работы в LibreOffice Writer" title="Основные приемы работы в LibreOffice Writer" sizes="(max-width: 130px) 100vw, 130px" / loading=lazy></a></figure> <div class="article-content"> <div class="above-entry-meta"><span class="cat-links"><a href="/category/novosti/" rel="category tag">Новости</a> </span></div> <h3 class="entry-title"> <a href="/kak-sdelat-effekt-v-liber-ofis-osnovnye-priemy-raboty-v/" title="Основные приемы работы в LibreOffice Writer">Основные приемы работы в LibreOffice Writer</a> </h3> <div class="below-entry-meta"> <span class="posted-on"><a href="/kak-sdelat-effekt-v-liber-ofis-osnovnye-priemy-raboty-v/" title="Основные приемы работы в LibreOffice Writer" rel="bookmark"><i class="fa fa-calendar-o"></i> <time class="entry-date published" >2024-02-01 05:45:08</time></a></span> <span class="byline"> </span> <span class="comments"><i class="fa fa-comment"></i><a href="/kak-sdelat-effekt-v-liber-ofis-osnovnye-priemy-raboty-v/"></a></span> </div> </div> </div> <div class="single-article clearfix"> <figure><a href="/napast-otpravit-kopiyu-pisma-sebe-na-pochtu-ponyatie-skrytaya/" title="Понятие "скрытая копия", учимся не делать глупости"><img width="130" height="90" src="/uploads/a931459bde2391316c6076fc51c45728.jpg" class="attachment-colormag-featured-post-small size-colormag-featured-post-small wp-post-image" alt="Понятие "скрытая копия", учимся не делать глупости" title="Понятие "скрытая копия", учимся не делать глупости" sizes="(max-width: 130px) 100vw, 130px" / loading=lazy></a></figure> <div class="article-content"> <div class="above-entry-meta"><span class="cat-links"><a href="/category/novosti/" rel="category tag">Новости</a> </span></div> <h3 class="entry-title"> <a href="/napast-otpravit-kopiyu-pisma-sebe-na-pochtu-ponyatie-skrytaya/" title="Понятие "скрытая копия", учимся не делать глупости">Понятие "скрытая копия", учимся не делать глупости</a> </h3> <div class="below-entry-meta"> <span class="posted-on"><a href="/napast-otpravit-kopiyu-pisma-sebe-na-pochtu-ponyatie-skrytaya/" title="Понятие "скрытая копия", учимся не делать глупости" rel="bookmark"><i class="fa fa-calendar-o"></i> <time class="entry-date published" >2024-01-31 08:59:15</time></a></span> <span class="byline"> </span> <span class="comments"><i class="fa fa-comment"></i><a href="/napast-otpravit-kopiyu-pisma-sebe-na-pochtu-ponyatie-skrytaya/"></a></span> </div> </div> </div> </div> </aside> <aside id="colormag_featured_posts_vertical_widget-4" class="widget widget_featured_posts widget_featured_posts_vertical widget_featured_meta clearfix"> <div class="first-post"> <div class="single-article clearfix"> <figure><a href="/hromaet-board-powered-by-smf-avtomaticheskoe-opredelenie-dvizhka/" title="Автоматическое определение движка форума"><img width="390" height="205" src="/uploads/d78664c82ef99aae58155d1da3781e31.jpg" class="attachment-colormag-featured-post-medium size-colormag-featured-post-medium wp-post-image" alt="Автоматическое определение движка форума" title="Автоматическое определение движка форума" / loading=lazy></a></figure> <div class="article-content"> <div class="above-entry-meta"><span class="cat-links"><a href="/category/hard-reset/" rel="category tag">Hard reset</a> </span></div> <h3 class="entry-title"> <a href="/hromaet-board-powered-by-smf-avtomaticheskoe-opredelenie-dvizhka/" title="Автоматическое определение движка форума">Автоматическое определение движка форума</a> </h3> <div class="below-entry-meta"> <span class="posted-on"><a href="/hromaet-board-powered-by-smf-avtomaticheskoe-opredelenie-dvizhka/" title="Автоматическое определение движка форума" rel="bookmark"><i class="fa fa-calendar-o"></i> <time class="entry-date published">2024-01-31 08:59:15</time></a></span> <span class="byline"> </span> <span class="comments"><i class="fa fa-comment"></i><a href="/hromaet-board-powered-by-smf-avtomaticheskoe-opredelenie-dvizhka/"></a></span> </div> <div class="entry-content"> <p>Размер веб-страницы и скорость ее загрузки стали вновь актуальны. Скорость загрузки контента становится одним из критериев...</p> </div> </div> </div> </div> <div class="following-post"> <div class="single-article clearfix"> <figure><a href="/sboi-usb-nakopitelya-i-vosstanovlenie-dannyh-s-povrezhdennoi-ili/" title="Восстанавливаем флешки Как восстановить данные с usb флешки"><img width="130" height="90" src="/uploads/ce794398423ee3a4726d0d2872c009b3.jpg" class="attachment-colormag-featured-post-small size-colormag-featured-post-small wp-post-image" alt="Восстанавливаем флешки Как восстановить данные с usb флешки" title="Восстанавливаем флешки Как восстановить данные с usb флешки" sizes="(max-width: 130px) 100vw, 130px" / loading=lazy></a></figure> <div class="article-content"> <div class="above-entry-meta"><span class="cat-links"><a href="/category/programmy/" rel="category tag">Программы</a> </span></div> <h3 class="entry-title"> <a href="/sboi-usb-nakopitelya-i-vosstanovlenie-dannyh-s-povrezhdennoi-ili/" title="Восстанавливаем флешки Как восстановить данные с usb флешки">Восстанавливаем флешки Как восстановить данные с usb флешки</a> </h3> <div class="below-entry-meta"> <span class="posted-on"><a href="/sboi-usb-nakopitelya-i-vosstanovlenie-dannyh-s-povrezhdennoi-ili/" title="Восстанавливаем флешки Как восстановить данные с usb флешки" rel="bookmark"><i class="fa fa-calendar-o"></i> <time class="entry-date published" >2024-01-31 08:59:15</time></a></span> <span class="byline"> </span> <span class="comments"><i class="fa fa-comment"></i><a href="/sboi-usb-nakopitelya-i-vosstanovlenie-dannyh-s-povrezhdennoi-ili/"></a></span> </div> </div> </div> <div class="single-article clearfix"> <figure><a href="/dvb-t2-chastotnyi-kanal-kak-nastroit-cifrovoe-televidenie-dvb-t2-spisok-efirnyh/" title="Как настроить цифровое телевидение DVB-T2"><img width="130" height="90" src="/uploads/c31a2881bc5f4b94dc3a97c636138e68.jpg" class="attachment-colormag-featured-post-small size-colormag-featured-post-small wp-post-image" alt="Как настроить цифровое телевидение DVB-T2" title="Как настроить цифровое телевидение DVB-T2" sizes="(max-width: 130px) 100vw, 130px" / loading=lazy></a></figure> <div class="article-content"> <div class="above-entry-meta"><span class="cat-links"><a href="/category/tehnika/" rel="category tag">Техника</a> </span></div> <h3 class="entry-title"> <a href="/dvb-t2-chastotnyi-kanal-kak-nastroit-cifrovoe-televidenie-dvb-t2-spisok-efirnyh/" title="Как настроить цифровое телевидение DVB-T2">Как настроить цифровое телевидение DVB-T2</a> </h3> <div class="below-entry-meta"> <span class="posted-on"><a href="/dvb-t2-chastotnyi-kanal-kak-nastroit-cifrovoe-televidenie-dvb-t2-spisok-efirnyh/" title="Как настроить цифровое телевидение DVB-T2" rel="bookmark"><i class="fa fa-calendar-o"></i> <time class="entry-date published" >2024-01-30 07:30:37</time></a></span> <span class="byline"> </span> <span class="comments"><i class="fa fa-comment"></i><a href="/dvb-t2-chastotnyi-kanal-kak-nastroit-cifrovoe-televidenie-dvb-t2-spisok-efirnyh/"></a></span> </div> </div> </div> <div class="single-article clearfix"> <figure><a href="/podklyuchenie-interneta-na-kompyuter-po-wifi-cherez-adapter-po-usb-kakimi/" title="Какими способами можно сделать и подключить USB-вход к штатной магнитоле Как это работает"><img width="130" height="90" src="/uploads/c52345c5b8e8a66919e02087f5e83ee3.jpg" class="attachment-colormag-featured-post-small size-colormag-featured-post-small wp-post-image" alt="Какими способами можно сделать и подключить USB-вход к штатной магнитоле Как это работает" title="Какими способами можно сделать и подключить USB-вход к штатной магнитоле Как это работает" sizes="(max-width: 130px) 100vw, 130px" / loading=lazy></a></figure> <div class="article-content"> <div class="above-entry-meta"><span class="cat-links"><a href="/category/novosti/" rel="category tag">Новости</a> </span></div> <h3 class="entry-title"> <a href="/podklyuchenie-interneta-na-kompyuter-po-wifi-cherez-adapter-po-usb-kakimi/" title="Какими способами можно сделать и подключить USB-вход к штатной магнитоле Как это работает">Какими способами можно сделать и подключить USB-вход к штатной магнитоле Как это работает</a> </h3> <div class="below-entry-meta"> <span class="posted-on"><a href="/podklyuchenie-interneta-na-kompyuter-po-wifi-cherez-adapter-po-usb-kakimi/" title="Какими способами можно сделать и подключить USB-вход к штатной магнитоле Как это работает" rel="bookmark"><i class="fa fa-calendar-o"></i> <time class="entry-date published" >2024-01-29 06:40:52</time></a></span> <span class="byline"> </span> <span class="comments"><i class="fa fa-comment"></i><a href="/podklyuchenie-interneta-na-kompyuter-po-wifi-cherez-adapter-po-usb-kakimi/"></a></span> </div> </div> </div> </div> </aside> </div> </div> </div> <footer id="colophon" class="clearfix"> <div class="footer-socket-wrapper clearfix"> <div class="inner-wrap"> <div class="footer-socket-area"> <div class="footer-socket-right-section"> </div> <div class="footer-socket-left-sectoin"> <div id="site-info">© 2024<a href="/" title="Мобильный хакер — Игры и программы для Android" rel="home"> Мобильный хакер — Игры и программы для Android</a> Все права защищены. Копирование материалов сайта без согласования с администрацией запрещено.</div> </div> </div> </div> </div> </footer> </footer> <a href="#masthead" id="scroll-up"><i class="fa fa-chevron-up"></i></a> </div> <script type='text/javascript' src='/assets/comment-reply.min.js'></script> <script type='text/javascript' src='/assets/jquery.bxslider.min.js'></script> <script type='text/javascript' src='/assets/colormag-slider-setting.js'></script> <script type='text/javascript' src='/assets/navigation.js'></script> <script type='text/javascript' src='/assets/jquery.newsTicker.min.js'></script> <script type='text/javascript' src='/assets/ticker-setting.js'></script> <script type='text/javascript' src='/assets/jquery.fitvids.js'></script> <script type='text/javascript' src='/assets/fitvids-setting.js'></script> <script type='text/javascript' src='/assets/wp-embed.min.js'></script> <script type='text/javascript' src='/assets/jquery.smooth-scroll.min.js'></script> <script type='text/javascript' src='/assets/js.cookie.min.js'></script> <script type='text/javascript' src='/assets/jquery.sticky-kit.min.js'></script> <script type='text/javascript' src='/assets/jquery.waypoints.min.js'></script> <script type='text/javascript'> /* <![CDATA[ */ var ezTOC = { "smooth_scroll":"1","visibility_hide_by_default":"","width":"auto","scroll_offset":"30"} ; /* ]]> */ </script> <script type='text/javascript' src='/assets/front.min.js'></script> </body> </html>