Горячее
Лучшее
Свежее
Подписки
Сообщества
Блоги
Эксперты
Войти
Забыли пароль?
или продолжите с
Создать аккаунт
Я хочу получать рассылки с лучшими постами за неделю
или
Восстановление пароля
Восстановление пароля
Получить код в Telegram
Войти с Яндекс ID Войти через VK ID
Создавая аккаунт, я соглашаюсь с правилами Пикабу и даю согласие на обработку персональных данных.
ПромокодыРаботаКурсыРекламаИгрыПополнение Steam
Пикабу Игры +1000 бесплатных онлайн игр
Грибные блоки - красочная головоломка, в которой вам предстоит передвигать блоки и заполнять ряды, чтобы собирать грибочки в корзину! Попробуйте продержаться как можно дольше!

Грибные блоки

Головоломки, Расслабляющая, Пазлы

Играть

Топ прошлой недели

  • AlexKud AlexKud 38 постов
  • SergeyKorsun SergeyKorsun 12 постов
  • SupportHuaport SupportHuaport 5 постов
Посмотреть весь топ

Лучшие посты недели

Рассылка Пикабу: отправляем самые рейтинговые материалы за 7 дней 🔥

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

Спасибо, что подписались!
Пожалуйста, проверьте почту 😊

Помощь Кодекс Пикабу Команда Пикабу Моб. приложение
Правила соцсети О рекомендациях О компании
Промокоды Биг Гик Промокоды Lamoda Промокоды МВидео Промокоды Яндекс Директ Промокоды Отелло Промокоды Aroma Butik Промокоды Яндекс Путешествия Постила Футбол сегодня

Powershell

С этим тегом используют

Windows Все
43 поста сначала свежее
75
pwnmine
pwnmine
1 год назад
Лига Сисадминов

Cat's & Lamp. Появление Powershell или как жизнь стала чуть проще⁠⁠

Cat's & Lamp. Появление Powershell или как жизнь стала чуть проще Powershell, Системное администрирование, Скрипт, Автоматизация, Длиннопост

На дворе Апрель месяц 2003 год. Птички поют, кукушки кукуют. Microsoft выпускает в свет свою прекрасную Windows Server 2003. Системные администраторы в слезах счастья рассказывают любителям консоли как много изменений в AD, в безопасности, в *any_windows_feature_name* произошло и как теперь здорово пользоваться окнами.

Cat's & Lamp. Появление Powershell или как жизнь стала чуть проще Powershell, Системное администрирование, Скрипт, Автоматизация, Длиннопост

Одуревший от счастья нажиматель кнопок на клавиатуре.

И всё бы хорошо, но любители пингвинов стали активнее намекать жалким любителям GUI о том, что консоль это божественно, а кнопки мышью нажимать - удел ламеров. Bash, мол, позволяет скрипты писать и вообще делать всё что душе угодно в плане автоматизации.

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

Для начала посмотрим, что же енто за cmd \ bash такие и зачем они собственно нужны.

command line interpreter (CMD)

Cat's & Lamp. Появление Powershell или как жизнь стала чуть проще Powershell, Системное администрирование, Скрипт, Автоматизация, Длиннопост

Типичный вид cmd.exe

CMD — это командная строка для операционной системы Microsoft Windows с функциями, основанными на командах. Конвейера нет, вывод результатов в строке. Долго отсутствовали инструменты для работы с текстом.

Bourne again shell (Bash)

Cat's & Lamp. Появление Powershell или как жизнь стала чуть проще Powershell, Системное администрирование, Скрипт, Автоматизация, Длиннопост

Типичный вид bash

Bash — это язык командной строки и сценариев для большинства операционных систем на базе Unix/Linux. Есть конвейер, вывод результатов в строке. Имеются инструменты для работы с выводом в виде текста (grep \ awk \ cat \ tail и т.д.). Они позволяют отделить нужные буквы из строки от ненужных при выводе результатов действия команд.

Шли годы, nix-админы наращивали скилл в умении прерарировать текст, оконные админы жмакали кнопки в gui и плакали при написании bat-скриптов, попутно совместно меряясь писюнами, кому же из них работать сложнее. И так бы оно и было, пока ребята из Microsoft не решили выкатить его. Его величество Powershell.

- В чем же величие? - спросите вы.

Powershell это такая же среда выполнения скриптов и взаимодействия с OS, как и cmd \ bash. Есть одно но - powershell умеет в объекты. Он по умолчанию работает с объектами и их свойствами. Почему это так важно? Потому что вывод в строки большинства утилит и приложений, с которыми умеет работать cmd \ bash не имеют единого стандарта вывода. ipconfig может выдать вам совершенно разное полотно информации на разных OS, при разных количествах сетевых интерфейсов и просто если луна не в меркурии будет.

Cat's & Lamp. Появление Powershell или как жизнь стала чуть проще Powershell, Системное администрирование, Скрипт, Автоматизация, Длиннопост

Вывод текста утилитой ipconfig

Допустим вы захотели вытащить через cmd IP-адрес.

На Bash сделать это достаточно легко. Для этого достаточно использовать простую команду ниже:

ifconfig eth0 | sed -n '2 {s/^.*inet addr:\([0-9.]*\) .*/\1/;p}'

Сильно, правда? Всего regexp (регулярные выражения) надо знать, как свои 9 пальцев.

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

С приходом powershell консоль научилась работать с объектами и при вводе командлета (название стрёмное, да, так уж они там называются): Get-NetIPAddress объекты, у которых есть одинаковые свойства, к которым можно обращаться.

Cat's & Lamp. Появление Powershell или как жизнь стала чуть проще Powershell, Системное администрирование, Скрипт, Автоматизация, Длиннопост

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

Cat's & Lamp. Появление Powershell или как жизнь стала чуть проще Powershell, Системное администрирование, Скрипт, Автоматизация, Длиннопост

Помимо этого powershell поддерживает конвейер для передачи результатов деятельности из одной команды в другую, if - else \ switch ветвления, циклы do while \ until, создание функций и своих объектов.

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

Вторая версия добавила возможность удаленного выполнения кода, поддержку Windows Server 2008 и Windows 7. Помимо этого большинство программных продуктов Microsoft не только нативно поддерживало работу через powershell, но и предоставляло больше возможностей, нежели GUI.

Powershell 3.0 появился рядом с Windows 2012 и Windows 8, получил еще большее развитие командлетов и возможностей отладки. В общем так и продолжалось его развитие вплоть до 5ой версии, на которой Microsoft решили, что нужно сделать cross-платформенную оболочку и объявили о создании PowerShell Core c поддержкой различных систем в названии которых отсутствует слово Windows: MacOS \ Ubuntu \ RHEL \ CentOS и так далее.

Какие еще возможности предоставляет эта оболочка я расскажу в следующей статье Cat's & Lamp.

Показать полностью 7
[моё] Powershell Системное администрирование Скрипт Автоматизация Длиннопост
17
5
RatL0ver
1 год назад
Лига тыжпрограммистов

Windows PowerShell(администратор) не выполняет команды⁠⁠

У меня возникла ошибка файловой системы - фотографии не открывались, без ошибки, только через 15-20 минут всплывало серое окно вместо фото. В безопасном режиме виндовс мне удалось выявить ошибку "2147416359".

Сначала решил просто почистить пк - CCleaner, Malwarebytes. Последний нашёл в файловой системе зараженные файлы, кои я переместил в карантин. Так как проблема не исчезла, а эти файлы не относились к важным приложениям, я их удалил.

Проблему ничего из этого не решило, однако в какой-то момент, запущенная нескольконадцать минут назад фото выдало ошибку уже: "не удалось зарегистрировать пакет". Данную ошибку рекомендуют решать командой Get-AppXPackage -AllUsers | Для каждого {Add-AppxPackage -DisableDevelopmentMode -Register “$ ($ _. InstallLocation) \ AppXManifest.xml”} в Windows PowerShell. Однако при нажатии "Enter" ничего не происходит, сколько не жди.

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

Подскажите, как это решить в конце концов?...

Windows PowerShell(администратор) не выполняет команды Компьютерная помощь, Ноутбук, Powershell
Показать полностью 1
[моё] Компьютерная помощь Ноутбук Powershell
11
9
DELETED
1 год назад
Лига программистов

Введение в pwsh для продвинутых. Часть I⁠⁠

Наибольшая мощь платформы .NET раскрывается посредством IL (intermediate language, эдакий символический аналог языка ассемблера) — во что, собственно, и преобразовывается код на C# или любом ином языке платформы. Однако IL сторонятся как огня даже бывалые .NET'овцы (звучит как-то неполиткорректно), что говорить о разработчиках сценариев PowerShell?! Между тем, для последних это не просто полезный навык, скорее — возможность взять планку на порядок выше покуда другие рвут и мечут в отсутствии какой-либо фичи. Именно так в бытность второй версии PowerShell и поступал автор, реализуя, к примеру, побитовы(й|е) сдвиг(и) в(лево|право) посредством функции, в основе которой был динамический метод.

Введение в pwsh для продвинутых. Часть I Powershell, Программирование, IT, Длиннопост

Здесь, правда, используется синтаксис pwsh, измождённым же ностальгией при переводе примера на вторую версию PowerShell следует быть аккуратными при использовании переменной $$ и принять на вид возможность имитации тернарной операции посредством массивов; для прочих пример может показаться притянутым за уши, так как pwsh уже располагает операторами -shl и -shr, а значит

(New-Shift).Invoke(7, 3)

или:

(New-Shift shr).Invoke(7, 1)

будут подобны разве что ложке дёгтя в бочке мёда. Однако, истинная причина, по которой мы сознательно избегаем синтаксиса версий ниже шестой, кроется в различного рода рестрикциях присущих .NET Framework (и, как следствие, "наследуемых" PowerShell -le v5), но отсутствующих в .NET Core, как, например, использование указателей в динамических методах. Чтобы продемонстрировать это, а заодно чуть подробнее разобрать сам принцип создания последних, рассмотрим побайтовый вывод числа через указатель.

Введение в pwsh для продвинутых. Часть I Powershell, Программирование, IT, Длиннопост

Результатом, как и ожидается будет 00 40 00 00. А теперь немой вопрос: для чего это может понадобиться, если всё можно написать на C# и скормить Add-Type? Прежде — скорость: динамические методы создаются в динамической (кто бы мог подумать!) сборке pwsh, в то время как Add-Type создаёт физическую сборку, подгружаемую в текущий домен приложений, а это, во-первых, требует валидации кода, во-вторых, ведёт к захламлению сборками домена в текущем сеансе. Вторая немаловажная причина кроется в обработке больших данных где исключается параллелизм, например, расчёт энтропии некоторого файла, с которой, как было замечено ранее здесь, лучше и начинать исследования бинарного кода.

Показать полностью 2
Powershell Программирование IT Длиннопост
4
24
DELETED
1 год назад
Информационная безопасность IT

Файл.URL не нужен!⁠⁠

То, что в список ассоциаций не заглядывают даже матёрые админы (большая часть из них) — это факт. Более того, разворачивая в Windows системах какой-либо из интерпретаторов, админы соглашаются с установщиком добавить ассоциации с соответствующими расширениями файлов, а после недоумённо пожимают плечами "как же нас таки поломали?", — в самом то деле?! Windows, чай, не UNIX где для исполнения какого-либо сценария нужно уметь чмодить (хотя в UNIX своих проблем безопасности с ворох газет), так что просто нужно взять на карандаш избегать ассоциаций, предпочитая им колхозные, но более безопасные средства запуска. Для наглядности (командная строка):

assoc .url | sed "s/.*=\(.*\)/ftype \1/" | cmd | sed "/=/!d"

Возвращает:
InternetShortcut="C:\WINDOWS\system32\rundll32.exe" "C:\WINDOWS\system32\ieframe.dll",OpenURL %l

С виду вроде обычная ассоциативная команда, если бы не одно но. Помимо стандартных протоколов в URL файле в качестве точки назначения может быть указан и локальный файл, причём это может быть как специально сформированный HTML, так и HTA или даже PE:
[InternetShortcut] URL=file:///C:\Windows\notepad.exe

Учитывая же, что некоторых разработчиков программ хлебом не корми, но дай понапихать упаковочной плёнки в виде тех же URL файлов в конечный дистрибутив, поднапрячь свои булки всё же стоит, если не взять под пристальный контроль ассоциации. Так что:
ftype InternetShortcut=

И\или:
assoc .url=

Это снизит риски, но не устранит проблемы полностью. Если вы подумали, что всё же можно будет вызвать URL файл из командной строки так:
rundll32 ieframe.dll,OpenURL <путь до URL файла>

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

Файл.URL не нужен! Информационная безопасность, Powershell, Командная строка, Windows, Длиннопост

С одной стороны, ничто не помешает восстановить ассоциативные связи. С другой, можно вполне обойтись и без ассоциаций. ieframe.dll — это COM (явлющийся к тому же форвардом для shdocvw.dll, поэтому их интерфейсы аналогичны). Глянув содержимое ieframe.dll в OLEView, найдём весьма живописное полотно кисти анонимного танцовщика кода.

Файл.URL не нужен! Информационная безопасность, Powershell, Командная строка, Windows, Длиннопост

В чём прикол? Запускаем pwsh и пишем:

[Activator]::CreateInstance(
[Type]::GetTypeFromCLSID('C08AFD90-F2A1-11D1-8455-00A0C91F3880')
).Navigate('file:///C:\Windows\notepad.exe')

Такие коврижки. А ведь на месте Блокнота может оказаться удалённый зловред. В общем, делаем выводы.

Показать полностью 2
Информационная безопасность Powershell Командная строка Windows Длиннопост
5
2
rick1177
rick1177
2 года назад
Лига программистов

Вопрос по CMD и PowerShell⁠⁠

Ребят, прошу научения и разъяснений.

В общем, нашлёпнул такой скриптик:

@Echo off

powershell.exe -ExecutionPolicy Bypass -Command "Add-Type -AssemblyName Microsoft.VisualBasic;$confirmation = [Microsoft.VisualBasic.Interaction]::MsgBox('Вы уверены, что хотите выключить компьютер?', ([Microsoft.VisualBasic.MsgBoxStyle]::YesNo -bor [Microsoft.VisualBasic.MsgBoxStyle]::DefaultButton2), 'Выключение компьютера');if ($confirmation -eq 'Yes') {shutdown /s /t 0}"

pause

Работает, норм.

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

Довёл до такого состояния:

@echo off

powershell.exe -ExecutionPolicy Bypass -Command "

Add-Type -AssemblyName Microsoft.VisualBasic;

$confirmation = [Microsoft.VisualBasic.Interaction]::MsgBox(

'Вы уверены, что хотите выключить компьютер?',

([Microsoft.VisualBasic.MsgBoxStyle]::YesNo -bor [Microsoft.VisualBasic.MsgBoxStyle]::DefaultButton2),

'Выключение компьютера'

);

if ($confirmation -eq 'Yes')

{shutdown /s /t 0

}

"

pause

А он, вдруг, перестал выполняться.

Хотя, как я понял, не имеют значения переносы строк... но вот не выполняется.

В блокнотике это выглядит так:

Вопрос по CMD и PowerShell Вопрос, Powershell, Cmd, Скрипт, Программирование

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

P.S. Скрипт предназначен для выключения винды так, чтобы формировалось "засыпание", поскольку оно мешает корректному монтированию разделов на параллельно стоящем Ubuntu.

Показать полностью 1
[моё] Вопрос Powershell Cmd Скрипт Программирование
14
spanjokus
2 года назад

Как я проучил токсичную тетку на работе⁠⁠

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

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

[моё] Powershell Месть Текст Windows
7
107
vlad196
vlad196
2 года назад
Компьютер это просто

Диспетчер пакетов на Windows⁠⁠

Открыть PowerShell от имени Администратора > прописать winget upgrade --all

Это всё что нужно было мне сделать ради моего удовлетворения!


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

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

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

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

Благодаря Winget всего этого можно миновать, просто обновляя всё в одном месте


Единственное, поддержка для Windows 10 1709 (сборка 16299) или более поздней версии. И для Windows 10 его нужно качать отдельно.

Всё написано в документации: https://learn.microsoft.com/ru-ru/windows/package-manager/

Там же и описаны другие команды, присущие пакетным диспетчерам:

https://learn.microsoft.com/ru-ru/windows/package-manager/wi...


Единственное, приведу вариант установки новых пакетов для новичков.

1) Заходим на сайт https://winget.run/

2) Ищем там интересующий пакет

Диспетчер пакетов на Windows Linux, Windows, Компьютерная помощь, Компьютер, Powershell, Длиннопост

3) Копируем команду

4) Вставляем её в Powershell и выполняем

Диспетчер пакетов на Windows Linux, Windows, Компьютерная помощь, Компьютер, Powershell, Длиннопост

И вот! через winget Мы только что установили Steam


P.S. Инструмент, как я погляжу довольно давно существует, но я увидел только сейчас и меня поразило, что такая штука теперь есть и на Windows.

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

Показать полностью 2
Linux Windows Компьютерная помощь Компьютер Powershell Длиннопост
79
Партнёрский материал Реклама
specials
specials

Только каждый третий пикабушник доходит до конца⁠⁠

А сможете ли вы уложить теплый пол, как супермонтажник?

Проверить

Ремонт Теплый пол Текст
23
risare
risare
2 года назад
Программы и Браузеры

Возвращаем уведомления приложению на Windows 10/11, которого нет в списке «Уведомления»⁠⁠

Всем привет!

Недавно столкнулся с данной ситуацией, надеюсь, кому-то её решение поможет.


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


Windows 10:

Возвращаем уведомления приложению на Windows 10/11, которого нет в списке «Уведомления» Powershell, Windows 10, Windows 11, Уведомление, Push-уведомления, Длиннопост

Windows 11:

Возвращаем уведомления приложению на Windows 10/11, которого нет в списке «Уведомления» Powershell, Windows 10, Windows 11, Уведомление, Push-уведомления, Длиннопост

А потом обнаруживаешь, что обратно включить их уже не можешь, потому что приложение отсутствует в списке Параметры > Система > Уведомления и действия на Windows 10 (Параметры > Система > Уведомления на Windows 11)! В списке (классических) приложений нашего приложения почему-то нет.


Пример списка приложений на Windows 11:

Возвращаем уведомления приложению на Windows 10/11, которого нет в списке «Уведомления» Powershell, Windows 10, Windows 11, Уведомление, Push-уведомления, Длиннопост

И дело не в г-сборке и не в вирусах/антивирусах. Проблема повторяется и на полностью оригинальных ОС, только что установленных. Помогает создание нового пользователя — для него уведомления приложения работают. Но если запретить уведомления и у нового пользователя, история повторится. Это не выход.

Решение

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


1) через раздел реестра для текущего пользователя:

HKEY_CURRENT_USER\SOFTWARE\Microsoft\Windows\CurrentVersion\Notifications\Settings\имя_или_псевдоним_приложения

Имя приложения в реестре (выше) пригодится позднее для правки исправляющего сценария.


2) в SQLite-базе данных у текущего пользователя:

%LOCALAPPDATA%\Microsoft\Windows\Notifications\wpndatabase.db

Добрые люди написали Powershell-сценарий для возвращения уведомлений в реестр и в базу. Приведу здесь свою адаптированную версию сценария. Вам нужно будет лишь запустить батник рядом со сценарием, остальное сценарий сделает сам.


Учтите, что для сценария потребуется подключение к Интернету (автоматом скачивается модуль для работы с SQLite-базой).


Вот сценарий powershell. Копируем текст сценария, вставляем в текстовый редактор, сохраняем в кодировке UTF-8 с расширением .ps1 (назвать можно как угодно, главное, такое же имя пропишите в батнике) или качаем готовый — не забываем отредактировать! Помещаем рядом с батником.


Батник для запуска сценария (возможно, понадобится запускать от имени администратора, поскольку меняется системное разрешение работы со сценариями). Готовый батник тут, тоже нужно будет отредактировать (вписать имя файла сценария).

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


Удачи! :)

Показать полностью 2
[моё] Powershell Windows 10 Windows 11 Уведомление Push-уведомления Длиннопост
12
Посты не найдены
О нас
О Пикабу Контакты Реклама Сообщить об ошибке Сообщить о нарушении законодательства Отзывы и предложения Новости Пикабу Мобильное приложение RSS
Информация
Помощь Кодекс Пикабу Команда Пикабу Конфиденциальность Правила соцсети О рекомендациях О компании
Наши проекты
Блоги Работа Промокоды Игры Курсы
Партнёры
Промокоды Биг Гик Промокоды Lamoda Промокоды Мвидео Промокоды Яндекс Директ Промокоды Отелло Промокоды Aroma Butik Промокоды Яндекс Путешествия Постила Футбол сегодня
На информационном ресурсе Pikabu.ru применяются рекомендательные технологии