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

PowerShell *

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

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

Как же все-таки пользоваться 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

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

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


Читать дальше →

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

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

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

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


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

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



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

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

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

Читать дальше →

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

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

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

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

Давайте посмотрим, что предлагает нам PowerShell для этих целей.
Читать дальше →

Подкуем хаос

Время на прочтение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 прямо из коробки

Отправка запросов 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
}


Ниже пояснения и пример использования
Читать дальше →

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

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

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

Читать дальше →

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

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

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

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

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

image

И так, по порядку

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

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

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

Читать дальше →

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 возможет такой сценарий. Зайти на удаленную машину, выполнить там длительную операцию, вернуться и сообщить пользователю, что всё сделано.

Читать дальше →

Visual Studio 2008 PowerShell Command Prompt

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

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

Читать дальше →

Windows PowerShell 2.0 RTM

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

Отдельноскачиваемый дистрибутив для других систем (Windows XP SP3, Windows Vista-SP1 и Windows Server 2008) появится в течение нескольких месяцев

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

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

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

Читать дальше →

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

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

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

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

Функция done выводит сообщение с надписью «done» причем его видно даже есои компьютер залочен.
Это достигается вот таким простеньким кусочком кода в профиле:
Читать дальше →

Знакомство с 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

Далее мои впечатления от первых часов изучения
12 ...
16