Как стать автором
Обновить
7.67

PowerShell *

Расширяемое средство автоматизации от Microsoft

Сначала показывать
Порог рейтинга
Уровень сложности

Особенности национальной автоматизации MS Excel

Время на прочтение6 мин
Количество просмотров15K
Ни для кого не секрет, что существуют программы, которые прекрасно работают с английской «культурой» и начинают «глючить», когда дело касается национальных «культур». При ближайшем рассмотрении выяснилось, что офисная программа MS Excel как раз из этого числа. Как обойти некоторые «особенности» MS Excel и пойдёт речь в этой статье.
Читать дальше →
Всего голосов 48: ↑37 и ↓11+26
Комментарии7

PowerShell и аудит безопасности

Время на прочтение8 мин
Количество просмотров65K

PowerShell и аудит безопасности



Приветствую хабранарод! Хочу поделится с вами способом, который может облегчить рутинные будни системного администрирования Win системы, с помощью PowerShell.
В один прекрасный день передо мной встала задача повседневного отслеживания активности пользователей, которые используют сервер терминалов в качестве рабочих станций. Думаю я выражу не только свое мнение, сказав что «Просмотр событий» входящий в состав средств администрирования Windows, является не самым удобным средством отслеживания ситуации на сервере. Да там есть фильтр, по которому можно отсеивать только интересующие нас события, но нет удобного способа который меняет формат отображения данной информации. В результате чего и появилась идея с помощью PowerShell осуществлять парсинг событий журнала безопасности.
Читать дальше →
Всего голосов 19: ↑19 и ↓0+19
Комментарии13

Настройка виндового веб-сервера без RDP

Время на прочтение4 мин
Количество просмотров5.1K
Совсем недавно понадобилось настроить очередной веб-сервер. Как раз в это время у меня было весеннее обострение PowerShell. В общем, в качестве небольшой разминки, я решил настроить веб-сервер без RDP.
Читать дальше →
Всего голосов 81: ↑61 и ↓20+41
Комментарии56

Как же все-таки пользоваться PowerShell?

Время на прочтение3 мин
Количество просмотров42K
Навеяно q&a: Как воспроизвести mp3 из командной строки в Windows 7?

Немного шокирован предлагаемыми ответами, которые сводятся к 'скачать и установить дополнительное ПО'… и так в системе уже под 20Гб какого то говна чего то полезного, которое зовется операционной системой… извиняюсь, вырвалось.

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

Примеры однострочных скриптов на vbs для windows scripting host можно нарыть в интернете, вот простейший пример:
Set oVoice = CreateObject("SAPI.SpVoice")
set oSpFileStream = CreateObject("SAPI.SpFileStream")
oSpFileStream.Open "c:\Windows\Media\tada.wav"
oVoice.SpeakStream oSpFileStream
oSpFileStream.Close

Кстати, это чудо, что код заработал на windows 7, так как по сравнению с windows xp ряд activex объектов исчезло (типа WMPlayerClass) и никто не знает, когда исчезнет или как изменится класс SAPI, да и не дело это, микроскопом гвозди забивать. Поэтому это решение считаю неправильным и не логичным, да и отмирает ActiveX потихоньку, вполне логично убиваемый .NET окружением.
Попробуем решить задачу с помощью PowerShell
Всего голосов 44: ↑24 и ↓20+4
Комментарии32

Истории

Run as administrator из командной строки

Время на прочтение2 мин
Количество просмотров193K
Вчера я некоторое время потратил на то, чтобы запустить скрипт из командной строки от имени администратора. Мне нужен был эквивалент right-click > «Run as administrator»:


Читать дальше →
Всего голосов 56: ↑42 и ↓14+28
Комментарии78

Первые шаги для пауэршельшиков

Уровень сложностиПростой
Время на прочтение12 мин
Количество просмотров447K
Привет всем из 2023 года!
Я написал эту статью 12 лет назад. И внезапно — это — моя самая популярная статья. Я так же удивился что люди до сих пор заходят сюда и читают эту статью. Поэтому я решил её обновить. И после прочтения понял, что обновлять ничего не буду.

Да, powershell обновился за последние годы. Теперь он стал Powershell Core, и его можно запускать как на Windows, так и на Linux и MacOS. В скриптах появилось много плюшек, но основная идея осталась той же.

Если вы только начинаете писать на Powershell эта статья для вас. Вам будут даны основные понятия, которые относятся к Powershell в 2023 году, и которые позволят вам погрузиться в эту оболочку с головой.


Приди ко мне брате в Консоль!
— Админ Долгорукий.

Много ярлыков улетело в корзину со времён выхода в свет 2008 Windows. Люди попроще дивились новому синему окошку, которое ребята из Майкрософт зачем-то вставили в свои новые продукты. Люди, которые сидят на блогах и знают программирование начали изучать это окошко.



В итоге к народу начало приходить осознание того, что Майкрософт действительно разработали что-то новое и интересное.
И так, зачем вам это нужно? В основном, программа под названием PowerShell (в дальнейшем PS) предназначена для администраторов и программистов. Она позволяет автоматизировать примерно 99% всех действий в системе. С помощью неё вы можете настраивать удалённые компьютеры, запускать и перезапускать сервисы и производить обслуживание большиства серверных приложений. Как выяснилось, возможности у программы потрясающие.

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

Задача этой статьи проста — показать вам малую долю возможностей PS и дать вам концептуальное понимание предмета. В действительности документации по предмету написано несметное количество, так что я не стремлюсь охватить всё. Я так же ознакомлю вас с набором утилит, которые позволят не вылезать из PS в принципе.

Читать дальше →
Всего голосов 257: ↑220 и ↓37+183
Комментарии171

Замена для FIND и GREP

Время на прочтение4 мин
Количество просмотров38K
Мне кажется, давно зреет тема сравнения возможностей PowerShell и оболочек мира UNIX. Сравнения не в холиварном смысле этого слова, а в позитивно-конструктивном. Линуксовым скриптописателям (не фанатикам), думаю, будет интересно узнать, как делаются те или иные штуки, которые они привыкли делать на bash или zsh, на PowerShell. Пожалуй, я и начну такую тему — и очень надеюсь, что кто-то из моих коллег-повершелловцев (Guderian, ApeCoder) также поддержит эту тему.

В UNIX для поиска текста в дереве файлов существует довольно популярная связка утилит find и grep. Например, с помощью этих утилит мы можем найти все упоминания ключевого слова class в нашем дереве исходников:

$ find -name \*.cpp -o -name \*.hpp -exec grep -Hb class {} \;

Давайте посмотрим, что предлагает нам PowerShell для этих целей.
Читать дальше →
Всего голосов 75: ↑44 и ↓31+13
Комментарии259

Подкуем хаос

Время на прочтение1 мин
Количество просмотров1.4K
Небольшое изменение скрипта XaosCPS для получения кармы.

$user = ([xml](new-object system.net.WebClient -prop @{encoding=[System.Text.Encoding]::UTF8}).DownloadString("http://habrahabr.ru/api/profile/XaocCPS")).habrauser
Write-Host "$($user.login) - карма: $($user.karma), рейтинг: $($user.rating)"


Просто чтобы проиллюстрировать как можно еще:
  • Инциализируем свойство encoding прямо в параметрах вызова New-Object. Обратите внимание, что название параметра -properties писать полностью необязательно, главное, чтобы не было другого параметра, начинающегося с тех же букв
  • Приведение к типу XML осуществляется при помощи строки [xml] перед выражением, а не перед переменной — просто чтобы сразу добраться до нужных данных, а не повторять потом путь каждый раз
  • Форматирование при помощи вставки подвыражений в строку — таким образом у нас есть примитивный шаблонный дивижок в PowerShell прямо из коробки
Всего голосов 7: ↑2 и ↓5-3
Комментарии0

Отправка запросов HTTP POST из PowerShell

Время на прочтение2 мин
Количество просмотров22K
Прочитав топик Цитаты из forismatic.com в консоли (или fortune своими руками) из любопытства захотелось повторить тоже самое на PowerShell. Вот что получилось
function get-random-quote()
{
    $apiUrl = 'http://www.forismatic.com/api/1.0/'
    $client = new-object System.Net.WebClient
    $client.Headers.Add("Content-Type", "application/x-www-form-urlencoded")
    $client.Encoding = [System.Text.Encoding]::UTF8
    [xml]$quote = $client.UploadString($apiUrl, 'method=getQuote&format=xml' )
    $quote.forismatic.quote
}


Ниже пояснения и пример использования
Читать дальше →
Всего голосов 14: ↑9 и ↓5+4
Комментарии0

Сортировка изображений по разрешению… на сцене PowerShell

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

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

Читать дальше →
Всего голосов 60: ↑46 и ↓14+32
Комментарии74

PowerShell и Habrahabr API

Время на прочтение1 мин
Количество просмотров1.4K
Немного улучшил свой скрипт для PowerShell, который работает с HabraAPI. Решил поделиться с подписчиками блога, может кому-нибудь будет интересно:

[xml]$str = [System.Text.Encoding]::UTF8.GetString((new-object system.net.WebClient).DownloadData("http://habrahabr.ru/api/profile/XaocCPS"))
Write-Host $str.habrauser.login '- карма:' $str.habrauser.karma ', рейтинг:' $str.habrauser.rating

Всего голосов 8: ↑6 и ↓2+4
Комментарии0

Горячие клавиши в консоли cmd.exe

Время на прочтение1 мин
Количество просмотров14K
Недавно я узнал одну вещь, которая меня просто потрясла. После многих лет постоянного использования консоли я и подумать не мог, что она ещё способна кого-то удивить.

Казалось бы, всё уже давно известно:
  • Вводишь команду — получаешь результат.
  • Историю команд можно листать клавишами вверх\вниз.
  • Клавиша Tab циклично вставляет имена файлов из текущий директории, или дополняет их по введённым буквам.
Что ещё может это примитивное чёрное окошко?

А оказывается, кроме стрелок у него есть ещё несколько полезных горячих клавиш. И что самое интересное, некоторые из них выводят диалоговые окна. Вот это и стало настоящим сюрпризом.

image

И так, по порядку
Всего голосов 76: ↑73 и ↓3+70
Комментарии39

PowerShell 2.0 RTM доступен для всех версий Windows

Время на прочтение3 мин
Количество просмотров21K
imageWindows PowerShell — это скриптовый язык для командной строки, который спроектирован для системных администраторов и автоматизации. Построенный на платформе Microsoft .NET Framework, язык Windows PowerShell позволяет IT-профессионалам и разработчикам контролировать и автоматизировать администрирование Windows и приложений.

Под катом представлены новые функции, которые были добавлены в Windows PowerShell 2.0.

Читать дальше →
Всего голосов 63: ↑42 и ↓21+21
Комментарии112

Ближайшие события

27 августа – 7 октября
Премия digital-кейсов «Проксима»
МоскваОнлайн
28 – 29 сентября
Конференция E-CODE
МоскваОнлайн
28 сентября – 5 октября
О! Хакатон
Онлайн
30 сентября – 1 октября
Конференция фронтенд-разработчиков FrontendConf 2024
МоскваОнлайн
3 – 18 октября
Kokoc Hackathon 2024
Онлайн
7 – 8 ноября
Конференция byteoilgas_conf 2024
МоскваОнлайн

WinRM — удалённая работа с PowerShell

Время на прочтение2 мин
Количество просмотров67K
Итак вышел Windows Management Framework для всех ОС, даже для XP.

Для меня там, кроме собственно, PowerShell 2.0, основное это WinRM. В приложении к PowerShell это просто способ выполнять команды на удалённом компе.

Вот как это сделать:
0. Поставить Windows Management Framework Core

1. Для конфигурирования winrm, на той машине, которая будет сервером:
1.1 зайти в cmd.exe (я пытался сделать это из-под ISE, но оно не работает с интерактивными консольными программами)
1.2 запустить winrm qc
1.3 ответить Y на вопрос об изменениях

2. Теперь можно в PowerShell ISE на клиентской машине нажать иконку с изображением терминала, набрать имя сервера и учетную запись, потом ввести пароль и работать с привычным ISE на удалённой машине.

А еще с помощью набора команд *-PSSession возможет такой сценарий. Зайти на удаленную машину, выполнить там длительную операцию, вернуться и сообщить пользователю, что всё сделано.

Читать дальше →
Всего голосов 12: ↑9 и ↓3+6
Комментарии5

Visual Studio 2008 PowerShell Command Prompt

Время на прочтение2 мин
Количество просмотров2.5K
Мне нравится PowerShell, он не в пример функциональнее и более читаем чем cmd. Но вот незадача — иногда приходится открывать командную строку Visual Studio, а она не PowerShell. Выполнять же из одной консоли ls и nmake хочется.

Как вариант можно было бы взять vsvars32.bat и переписать его, но это откровенное надругательство над свободным временем и есть путь проще —
blogs.msdn.com/domgreen/archive/2009/05/03/visual-studio-command-prompt-via-powershell.aspx. Я немного изменил скрипт, подчистив из него мусор.

Читать дальше →
Всего голосов 13: ↑7 и ↓6+1
Комментарии0

Windows PowerShell 2.0 RTM

Время на прочтение1 мин
Количество просмотров1.1K
Комада разработки Windows PowerShell сообщила, что оный отправлен в производство вместе с Windows 7 и Server 2008 R2

Отдельноскачиваемый дистрибутив для других систем (Windows XP SP3, Windows Vista-SP1 и Windows Server 2008) появится в течение нескольких месяцев
Всего голосов 8: ↑5 и ↓3+2
Комментарии2

PowerShell для автоматического переключения сетевых настроек

Время на прочтение1 мин
Количество просмотров4.4K
Некоторое время назад у моего провайдера случилась полоса глюков, связанных с перекладкой кабеля. Сейчас все нормально, но тогда пару раз в неделю отрубался инет и работник поддержки каждый раз требовал от меня подключать комп напрямую а не через рутер. Вот для быстрого изменения сетевых настроек я как раз и сделал две маленькие функции to_direct и to_router, которые я и предлагаю вашему вниманию. Они написаны не лучшим образом — так что это просто кусочки кода которые работают и которыe могут вам пригодиться, а не образец того, как писать скрипты.

Читать дальше →
Всего голосов 10: ↑8 и ↓2+6
Комментарии5

PowerShell: выстрелил и забыл

Время на прочтение1 мин
Количество просмотров10K
Иногда мне хочется попросить PowerShell сделать что-нибудь длительное, а потом известить меня о том что работа готова. А я пока что-нибудь другое поделаю.

Например вот так
cp c:\windows\system32 -rec d:; done

(В качестве длительной операции «скопировать все из c:\windows\system32 на d:»)

Функция done выводит сообщение с надписью «done» причем его видно даже есои компьютер залочен.
Это достигается вот таким простеньким кусочком кода в профиле:
Читать дальше →
Всего голосов 38: ↑27 и ↓11+16
Комментарии30

Знакомство с PowerShell

Время на прочтение2 мин
Количество просмотров21K
О том, что Microsoft в недавнем прошлом разродилась свежей оболочкой под названием PowerShell, я узнал еще с год назад. А вот попробовать, что это за зверь такой, никак руки не доходили. Но вот на днях на свежеустановленном Window Server 2008 я обнаружил эту штуку в составе предустановленных компонент, и любопытство все же взяло верх. Открыл, попробовал набить пару команд типа «help», "?" и т.п. — в результате был получен список всех команд (в жаргоне PowerShella, командлетов — cmdlets), оказавшийся достаточно объемным. Причем в списке фигурировали названия вроде ForEach, Where, которые не могли не вызвать интереса к тому, как эти конструкции можно потрогать. Полез за документацией и был приятно удивлен найденным переводам книг-учебников по сабжу (читал Windows PowerShell RU) — ссылки можно найти на блоге одного из активных участников комьюнити:

blogs.technet.com/abeshkov/archive/2008/12/24/3172943.aspx

Далее мои впечатления от первых часов изучения
Всего голосов 53: ↑40 и ↓13+27
Комментарии70
12 ...
15