Где находится powershell. Основы Windows PowerShell

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

Что такое PowerShell?

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

Windows PowerShell является оболочкой, разработанной Microsoft для целей автоматизации задач и управления конфигурацией. Эта мощная оболочка основана на фреймворке.NET и включает в себя оболочку командной строки и язык сценариев.

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

Первая версия PowerShell была выпущена в ноябре 2006 года для Windows XP, Windows Server 2003 и Windows Vista. Последней является версия 4.0, которая была выпущена в октябре 2013 г. Она идет по умолчанию с Windows 8.1 и Windows Server 2012 R2.

Что можно сделать с помощью PowerShell?

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

Возможности PowerShell позволяют упростить и автоматизировать трудоемкие и повторяющиеся задачи путем создания сценариев и объединения нескольких команд вместе.

Если вы являетесь администратором сети, вы обнаружите, что PowerShell очень полезен при работе с Active Directory. Учитывая, что инструмент содержит сотни настраиваемых команд, которые называются командлеты, вероятность того, что PowerShell может помочь вам стать более продуктивным, очень высока.

Как запустить PowerShell в Windows 8.1?

Если у вас нет плитки PowerShell на начальном экране или ярлыка на рабочем столе, тогда вы можете открыть его с помощью поиска – это один из самых простых способов. Нажмите + Q, введите «powershell», а затем нажмите Enter.

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

Чтобы открыть PowerShell с помощью диалога «Выполнить», нажмите клавиши + R, введите «powershell» и нажмите Enter.

Как запустить PowerShell в Windows 7?

В Windows 7 вы можете найти инструмент по ключевому слову «powershell» в меню «Пуск».

Кроме того, открыть PowerShell через меню «Пуск» можно в разделе «Стандартные».

Очевидно, что упомянутая выше команда в окне «Выполнить» работает и в Windows 7.

Кто обычно использует PowerShell?

Без всякого сомнения, PowerShell является выбором многих ИТ-администраторов. И не зря, ведь инструмент колоссально упрощает операции управления и снижает объем работы в крупных корпоративных сетях.

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

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

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

Отличного Вам дня!

PowerShell - это объектно-ориентированный программный движок и скриптовый язык с интерфейсом командной строки, предоставляющий IT-профессионалам более широкие возможности для конфигурирования операционных систем семейства MS Windows. Проще говоря, это своего рода универсальный инструмент администрирования. В данной статье будут рассмотрены базовые приёмы написания скриптов на PowerShell, позволяющие простым путём автоматизировать управление Windows-окружением.

PowerShell предлагает как чисто консольный интерфейс, так и полноценную среду разработки PowerShell ISE (Integrated Scripting Environment, встроенное скриптовое окружение) для скриптов. Для запуска интерфейса командной строки введите powershell в меню «Выполнить» (WinKey + R). PowerShell ISE запускается с помощью команды «PowerShell ISE» в том же меню.

ISE более предпочтительно, так как предоставляет более широкие возможности разработчику благодаря подсветке синтаксиса, функции автозаполнения кода и другим особенностям, присущим многим «большим» IDE.

Написание и запуск скриптов

Скрипты сохраняются в виде файлов с расширением.ps1 . Несмотря на то, что PowerShell уже давно является нативной частью ОС Windows, вы не сможете запустить его скрипты простым двойным щелчком. Для этого надо кликнуть правой кнопкой по скрипту и выбрать «Запустить в PowerShell».

Также существуют системные политики, ограничивающие выполнение скриптов. Можно проверить текущие параметры политики, введя команду Get-ExecutionPolicy . Результатом будет одно из следующих значений:

  • Restricted - выполнение скриптов запрещено. Стандартная конфигурация;
  • AllSigned - можно запускать скрипты, подписанные доверенным разработчиком; перед запуском скрипта PowerShell запросит у вас подтверждение;
  • RemoteSigned - можно запускать собственные скрипты или те, что подписаны доверенным разработчиком;
  • Unrestricted - можно запускать любые скрипты.

Для начала работы необходимо изменить настройку политики запуска на RemoteSigned, используя команду Set-ExecutionPolicy:

Командлеты

Командлеты - это команды с предопределённой функцией, подобные условным операторам в языках программирования. У них есть несколько ключевых особенностей:

  • существуют системные, пользовательские и опциональные командлеты;
  • результатом выполнения командлета будет объект или массив объектов;
  • командлеты могут обрабатывать данные и передавать их другим командлетам с помощью конвейеров;
  • командлеты нечувствительны к регистру, так что нет никакой разницы между Get-ADUser , get-aduser и gEt-AdUsEr ;
  • в качестве разделителя используется символ; .

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

  • Get-Process - отобразить текущие процессы, запущенные на компьютере;
  • Get-Service - отобразить список служб и их статус;
  • Get-Content - отобразить содержимое указанного файла, например Get-Content C:\Windows\System32\drivers\etc\hosts .

При необходимости список всех доступных командлетов можно вывести с помощью Get-Help-Category:

Также можно создавать и свои собственные командлеты.

Параметры

У каждого командлета есть несколько параметров, определяющих его работу. PowerShell ISE автоматически предлагает все доступные параметры с отображением их типа. Например, Get-Service-NameW* выводит список служб, у которых имя начинается с W . Если вы забыли, какие параметры у введённого командлета, воспользуйтесь Get-Member . Например, Get-Process | Get-Member:

Если вы не нашли того, что нужно, или не уверены в том, как правильно задаются параметры, можно даже запросить примеры с помощью параметра -Examples:

Некоторые командлеты также могут вызываться с помощью алиасов, например вместо Get-Help можно просто написать Help .

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

Конвейер

PowerShell позволяет осуществлять обмен данными между командлетами с помощью конвейера. Например:

  • GetService | SortObject -property Status - сортировка запущенных служб по статусу;
  • “Hello World!” | Out-File C:\ps\test.txt - запись текста в файл.

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

Get-Service | WHERE {$_.status -eq “Running”} | SELECT displayname

Заключение

Итак, благодаря этому руководству у новичков появилось представление о том, что из себя представляет PowerShell. Также мы рассмотрели варианты изменения политики выполнения скриптов, что такое командлет, как они обмениваются данными с помощью конвейера и как получить свойства нужного объекта. Помните, что в случае затруднений можно воспользоваться командлетом Get-Help.

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

Зачем вам нужен PowerShell

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

В основе скриптового языка лежит мощная программная платформа.NET, поэтому возможности PowerShell простираются намного дальше администрирования.

Как-то раз мне понадобилось удалить один столбец из множества книг Excel 2013. Ручная работа претила, а гугление не давало готового решения. Я создал тему на форуме (да, я тоже иногда задаю вопросы на OSZone:). Мне подходил любой язык, но решение неожиданно для меня оказалось на PowerShell. Как выяснилось, можно загрузить Excel в качестве COM-объекта и манипулировать им дальше.

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

Думаю, идея понятна, и можно уже переходить к новинкам PowerShell 5.0.

8 полезных возможностей

Подсветка синтаксиса

В новой консоли намного легче ориентироваться!

Красный цвет и нумерация строк, однако, из другой оперы .

Поиск по истории в двух направлениях

Сочетания клавиш: Ctrl + R и Ctrl + S
Командлеты: Get-PSReadlineKeyHandler и Set-PSReadlineKeyHandler

Как и в CMD, в PowerShell есть история сессии с навигацией стрелками, a Get-History выводит журнал по аналогии с F7 . Полный список сочетаний клавиш, связанных с журналом, можно вывести так:

Get-PSReadlineKeyHandler | ? {$_.function -like "*hist*"}

В результатах появились две новые функции поиска по истории, которые показаны на картинке ниже. Работает это очень просто.


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

Спасибо за наводку Антону Дровосекову и Константину Сидякину из нашей группы ВК .

Создание соединений, символических и жестких ссылок

Командлеты: New-Item , Remove-Item , Get-ChildItem

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

#Символическая ссылка на файл New-Item -ItemType SymbolicLink -Path C:\test\MySymLinkFile.txt -Target C:\test\1.txt #Символическая ссылка на папку New-Item -ItemType SymbolicLink -Path C:\test\MySymLinkFolder -Target C:\Windows\ #Жесткая ссылка на файл New-Item -ItemType HardLink -Path C:\Test\MyHardLinkFile.txt -Target C:\test\1.txt #Соединение New-Item -ItemType Junction -Path C:\Temp\MyJunctionDir -Target C:\Windows

Честно говоря, синтаксис команды mklink запомнить проще, поэтому быстрее может получиться так:

Iex "mklink /d C:\test\MySymLinkFolder C:\Windows"

Создание временного файла

Командлет: New-TemporaryFile

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

#Создание временного файла New-TemporaryFile #Создание временного файла и получение его полного пути $tmpfile = (New-TemporaryFile).FullName $tmpfile

Я редко делаю чистую установку основной системы, но на ВМ это происходит регулярно. И OneGet очень удобен для быстрой автоустановки ключевого набора программ.

Примечание. Можно использовать этот модуль, не устанавливая WMF 5.0. Предварительная версия модуля для PS 4.0 и 3.0 доступна отдельно — март 2016 , а более свежие ищите поиском в центре загрузки по запросу PackageManagement PowerShell Modules Preview .

Установка программ

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

#Разрешить установку подписанных пакетов из Интернета Set-ExecutionPolicy RemoteSigned #Установить поставщик Chocolatey Get-PackageProvider –Name Chocolatey -ForceBootstrap #Сделать Chocolatey доверенным Set-PackageSource -Name Chocolatey -Trusted #Установить программы Install-Package NotepadPlusPlus, vlc, firefox, filezilla, sysinternals -Verbose -Force -ProviderName chocolatey #Добавить путь к исполняемым файлам (sysinternals) в PATH setx PATH "$env:path;C:\Chocolatey\bin" -m

Поставщик скачивает в C:\Chocolatey\lib пакет, в основе которого лежит скрипт chocolateyInstall.ps1. Он загружает установщик программы с официального сайта в папку %temp%\Chocolatey и запускает его в режиме тихой установки. Простейший пример – Notepad++.

Install-ChocolateyPackage "notepadplusplus" "exe" "/S" "https://notepad-plus-plus.org/repository/6.x/6.9/npp.6.9.Installer.exe"

Поиск программ

В репозиториях много программ, все самые популярные точно есть.

Find-Package "*zip*","*commander*" -ProviderName Chocolatey

Удаление программ

С удалением приложений не все так гладко, впрочем.

Uninstall-Package -name filezilla

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

Ссылки по теме OneGet и тихой установки:

  • Пошаговое руководство по установке программ из PowerShell (Дмитрий Буланов)
  • Типы инсталляторов и ключи тихой установки (моя статья 2005 года вполне актуальна:)
  • Сайт автоустановки Windows и форум автоустановки программ

Дискуссия и опрос

Для опытных «скриптовиков» и системных администраторов в PowerShell 5.0 есть и другие интересные возможности (например, классы по аналогии с языками объектно-ориентированного программирования). Полный список вы найдете на этой странице TechNet (ссылка ведет на английскую версию специально, поскольку русская пока не содержит сведений о 5.0).

Вы можете отметить интересные вам фрагменты текста, которые будут доступны по уникальной ссылке в адресной строке браузера.

Об авторе

Подсветка синтаксиса в PowerShell 5.0, это установленный по умолчанию модуль PSReadLine. В предыдущих версиях его можно доустановить и прописать его в загрузку в профильном скрипте (переменная $profile) или подгрузить самому, когда нужно

Import-module psreadline

Можно поподробнее про тихую установку из скриптов? Не так давно стал пользоваться chocolatey, очень нравится, особенно обновление всех программ одной командой. Пока не разобрался с тихой установкой, все ставлю в ручном режиме, команда-подтверждение-установка.

6yHTapb

единственное, для чего пока мне понадобился PowerShell в win 10, это обход бага с неработающей кнопкой «свойства» в настройках VPN соединения. Set-VpnConnection -Name «Name» -SplitTunneling $true.
Кстати, Вадим. Есть какая-либо информация по этому поводу? Речь идет о кнопке в свойствах VPN соединения — сеть — IP версии 4 — «свойства». там обычно можно убрать галку «использовать шлюз в удаленной сети». сама кнопка активна, но при нажатии ничего не происходит. тут и помог PowerShell.

Сергей Рощин

Огромное спасибо за Chocolatey
на windows 7 я так понял на работает?

Lecron

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

Про PowerShell… Считаю, что Микрософт промахнулся с названием. С первого взгляда, непонятно что получилось. Командная оболочка/процессор или скриптовый язык программирования. Слово Shell наталкивает на первое, но тогда уже давно пора, раз она такая крутая, сделать ее по умолчанию или хотя бы продвигать ее в качестве основной. Но реальные юзкейсы больше наталкивают на второе, замену WSH.

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

    В Win+X можно заменить CMD на PS (свойства панели задач — навигация). И продвигают они в качестве основной давно — на TechNet уже давно ничего нового нет про CMD, только PS.

    Конечно, целевая аудитория — ИТ-специалисты, но то же самое можно сказать про CMD и WSH. Но я не вижу вреда для ЦА своего блога. Я нахожу применение PS дома и на работе, и это не связано с администрированием..

    • Lecron

      Я не про вред. А про непонимание и соответствующие ошибки.
      Что это такое? Чем его видит Микрософт? Командный процессор, работающий, как правило, в интерактивном режиме, который также может

      Работать интерактивно в одном синтаксисе и семантике, а писать последовательности действий в других — нелепо. В этом и есть основная проблема. Такая глубинная, что даже вы ее не замечаете, хотя косвенно упомянули в статье. Синтаксис mklink не проще, а привычнее. Так как New-Item, с единым синтаксисом, позволяет создавать очень очень многое. И вот уже, фактически, его синтаксис проще, чем знание многих отдельных утилит, включая их наименование.

      Обещание сдержали - вот вам модуль для управления менеджерами пакетов, вперед.

      Не понял. Что такое «модуль управления менеджерами»?

        • Lecron

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

          Фича, как обычно, ориентирована на организации, а MSI и MSU поддерживаются в полный рост.

          Lecron

          Возможно я не понял всей глубины этой фичи, поэтому такие глупые претензии.
          Понадобятся ли пользователю дополнительные телодвижения, если владелец репозитория/пакета сменит провайдера? Или создатель пакета изменит его настройки? Или все это берет на себя менеджер пакетов?

          Гм… вот фича — возьмите, попробуйте, разберитесь — это поможет снять некоторые вопросы. Есть поставщик, у него есть пакеты в репозитории. Убрали конкретный пакет? Тогда вы не сможете его скачать у этого поставщика. Но уже скачанный пакет остается локально, им дальше можно управлять.

          Lecron

          Кстати, вот еще вопрос. А есть ли команда Update-Package, а еще лучше Update-AllPackage?

          Привет. Скажи можно ли восстановить boot или bios и как это сделать? Слетел загрузчик виндовс 7 про. В boot изменил уже настройки но винда не хочет загружатся. Ранее была представлена винда 8.1 в сервисе воткнули винду 7 про без моего согласия. Помоги решить проблему!

Алексей

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

поставил массово набор софта уже стоящий на пк. только около 70% нашлось в репозитории.
ключи —y —accept-license —f —x — маны покурил буквально пару минут, может что не понял.
итог:
софт который я не просил: autoIT, autohotkey. зачем?
накатило старую версию Acrobat Reader DC, cheat engine;
не смогло скачать dropbox virtualbox;
тихий режим не сработал viber, wireshark, light alloy — пришлось ставить галочки и жмакать далее;
skype удалило старый, но не поставило новый.
и часть ярлыков не создала, теперь нужно вспоминать какие.

Warnings:
— adobereader
— windjview
— firefox
— notepadplusplus
— teamviewer

тут я не понял что за ошибки.

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

  • Сергей

    PS C:\Users\Gerald> Find-Package "*paint.net*" -ProviderName Chocolatey Name Version Source Summary ---- ------- ------ ------- paint.net 4.0.6 chocolatey Paint.NET is image and photo manipulation software designed to be used on computers tha...

    Буквально сегодня натолкнулся на Хабрахабре в первый раз на упоминание Chocolatey и тут же в Вашей рассылке. Показалось что вот оно! Думал будет потрясающая скриптовая замена автоустановке свободнораспространяемого ПО с ninite.com, но увы. Актуальность софта не поддерживается на паранаидальном уровне, и проблематика есть описанная участниками выше.

    Виталий

    Я считаю, что для консоли лучше подходит философия UNIX:


    Пишите программы, которые бы работали вместе.
    Пишите программы, которые бы поддерживали текстовые потоки, поскольку это универсальный интерфейс.

    • Виталий, а что, в Windows входит консольная утилита для ZIP? А делается это для упрощения скриптов на PowerShell, не надо лезть в CMD, интегрированная справка и т.д.

      • Lecron

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

        Виталий

        Нет, не входит.
        Но я и на своём хостинге при первой попытке использовать zip получил что- то типа «zip не установлен. Установите командой apt-get install zip».

        Лезть в cmd? Выше сказали, что PS должен запускать бинарники.

        Справка? В Linux команда man %имя_утилиты% либо %имя_утилиты% -?, первая даёт подробный мануал, вторая как краткая справка по параметрам. Работает кажется везде.

        В итоге командный интерпретатор на Linux- одновременно простая и мощная вещь, есть множество альтернатив, так как в нём самом нет ничего сложного, он просто запускает программы, управляет потоком вывода и интерпретирует простейший синтаксис.

        strafer

        Vadim Sterkin : Виталий, а что, в Windows входит консольная утилита для ZIP?

        Стесняюсь спросить: а не проще было её добавить, чем запиливать встроенный функционал?

  • Herz Mein

    > зачем shell-у, своими средствами работать с архивами

    Если есть такая возможность, заложенная в.Net-классах, то почему бы ее не использовать? Тут просто другой подход, отличный от bash или cmd, которые интерпретаторы командной строки. CLI. А PowerShell скорее отладчик для скриптов, имхо.

    artem

    Lecron Что это такое? Чем его видит Микрософт? Командный процессор, работающий, как правило, в интерактивном режиме, который также может читать команды из файла, который называется скриптом? Или как язык написания скриптов, у которого есть свой REPL? Согласитесь, разница большая?

    Понятно, что задачи разные. Но я не вижу между ними противоречия. Т.е. вполне возможно одним инструментом закрыть обе потребности. К этому и стремится PowerShell. Что-то получается удачно, что-то не очень. Но виденье понятно.

    artem

    Vadim Sterkin :
    И продвигают они в качестве основной давно - на TechNet уже давно ничего нового нет про CMD, только PS.

    Скоро будет, надо полагать. CMD (саму оболочку) сейчас сравнительно активно начали дорабатывать. Хотя до этого лет десять не трогали вообще.

    artem

    Виталий Пишите программы, которые делают что-то одно и делают это хорошо.

    Не вижу противоречий. В PowerShell каждый коммандлет делает что-то одно (за редчайшими исключениями). Кто скажет, что «Expand-Archive» умеет записывать DVD или варить кофе — пусть первый кинет в меня камень.

    Виталий Пишите программы, которые бы работали вместе.

    Здесь PowerShell уделывает все известные мне оболочки, т.к. оперирует объектами, а не текстом. Т.е. «работать вместе» (передавать данные между коммандлетами) получается гораздо эффективнее. Не надо тратить время на парсинг текста и попытку объяснить следующей команде, что же именно представляет собой этот текст.

    Виталий Пишите программы, которые бы поддерживали текстовые потоки, поскольку это универсальный интерфейс.

    Потоки тоже поддерживаются. И если надо передвать именно тест — с этим нет никаких проблем.

    То есть PowerShell вполне следует приведённой философии.

    Виталий Вот например, зачем запихивать в PS «Создание соединений, символических и жестких ссылок» со своим синтаксисом, если есть mklink? Для чего там «Создание и распаковка архивов», если есть zip и его аналоги?

    Да потому что указанные коммандлеты — это и есть «аналог zip». На самом деле, ответить на эту претензию очень легко. Надо только осознать, что коммандлеты — это не встроенные возможности оболочки, а именно что внешние команды. И всё сразу встаёт на свои места. Ведь это нормально, что у нас есть команды для выполнения каких-то действий, правда? Это справедливо как для PowerShell, так и для любой другой оболочки.

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

    • Lecron

      artem : Ведь это нормально, что у нас есть команды для выполнения каких-то действий, правда? Это справедливо как для PowerShell, так и для любой другой оболочки.

      Шелл - как много в этом слове… начало искажаться под воздействием MS.
      Все время считал, что команды не зависят от среды запуска, а встроенные в среду команды, нужны только для обслуживания возможностей самой среды, а не сторонних объектов. Неужели ошибался?
      С этой точки зрения PS начинает напоминать ACDSee и Nero.

      Виталий

      Здесь PowerShell уделывает все известные мне оболочки, т.к. оперирует объектами, а не текстом. Т.е. «работать вместе» (передавать данные между командлетами) получается гораздо эффективнее.

      Сомневаюсь, что все сторонние утилиты поддерживают эти самые объекты. А вот текст поддерживает любая утилита, работающая в командной строке.

      Надо только осознать, что командлеты - это не встроенные возможности оболочки, а именно что внешние команды. И

      Почему тогда у этих командлетов свой синтаксис? Ну никак не похоже, что это внешние команды.

      • artem

        Виталий : Сомневаюсь, что все сторонние утилиты поддерживают эти самые объекты.

        Сторонние утилиты — нет, конечно. А вот сторонние коммандлеты — запросто. Я бы сказал, что процентов восемдесят сторонних коммандлетов достаточно годно работают с объектами.

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

        Виталий : Почему тогда у этих командлетов свой синтаксис? Ну никак не похоже, что это внешние команды.

        С этим не могу не согласиться. «Не похоже» — правильное слово:)

        Как я сказал выше, к PowerShell надо привыкнуть. Причём я сейчас скажу гадость в сторону наших евангелистов и MVP, но злоупотребление алиасами (dir вместо Get-ChildItem, md вместо New-Item -ItemType «Directory», знак процента вместо Foreach-Object или вопроса вместо Where-Object и так далее, а также пропуск наименований параметров в случае, когда работает умолчание) только запутывает неподготовленных людей. Из-за этого, в том числе, у меня «привыкание» к PowerShell затянулось на годы. Мне кажется, что если бы все примеры команд, опубликованные в блогах и на форумах, содержали полный синтаксис, то новички испытывали бы гораздо меньше анальной боли.

    На самом деле, использую 2 варианта: разворачивание бэкапа, сделанного сразу после настройки системы либо ставлю собственную сборку Windows 7, куда включаю все нужные настройки и программы.
    А с Win10 менеджер пакетов пока просто ещё не освоил, хотя его наличие вызывает сильный энтузиазм.
    Раньше игрался с разными менеджерами пакетов под Windows, но по тем или иным причинам все были неудобными именно в расчёте «время на освоение»/»время на ручное скачивание». Оказалось проще сделать свою сборку, чем лепить скрипты.

    Евгений Казанцев

    Замечательное начинание, я увидел как установить пачку нужных прог одним скриптом, ninite пользовался, особо не впечатлило, сейчас пользуюсь WPI качанными с торрентов, плюс их в том что там есть много больше и реальная автоустановка, минус что необходимо доверять автору репака.
    Я одного не понял, как этим ОБНОВЛЯТЬ установленные программы полностью автоматически, что является ключевой базовой основной фичей любого пакет менеджера? Как сделать чтобы тот же нотепад++ прописался автоматом приложением по умолчанию без залезания в жутко неудобные «новые, они же современные» настройки? Как работает система зависимостей, и есть ли она там вообще?»

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

    Param ( $create, $extract, $path, $zip) add-type -assembly system.io.compression.filesystem function create-zip ($path, $zip) { ::createfromdirectory($path, $zip) } function extract-zip ($zip, $path) { ::extracttodirectory($zip, $path) } if ($create) { create-zip $path $zip } if ($extract) { extract-zip $zip $path }

    Вызывать соответственно:

    .\test -c -p "C:\Some\Folder" -z "D:\Folder\out.zip" # Для создания.\test -e -p "C:\Some\Folder" -z "D:\Folder\out.zip" # Для извлечения

    • При чем тут оформление? Вы используете классы.NET напрямую в своей функции. Командлет избавляет от нбх обращаться к классам. В этом и разница. Примерно такая же, как между программистом и ИТ-специалистом.

      artem

      Троллейбус из буханки хлеба.jpg

      Я так понимаю, что никто не спорит с тем, что функциями можно сделать вообще всё, что угодно:) Польза же, очевидно, в том, что теперь конкретно для этого действия отдельную функцию писать не нужно. А значит — во-первых, людям будет проще этим пользоваться (особенно если они не умеют писать функции или не могут позволить себе каждый раз их импортировать), а во-вторых будет больше стандартизации. Это несомненное благо. Согласитесь, тупо, когда в пяти скриптах от пяти разных авторов требуется распаковывать архивы, и каждый решает эту задачу немного по-своему. (Например, одно время был популярен вариант через недокументированный com-объект Windows Explorer).

    lesha

    Я работаю на Windows и Mac, а если настраиваю сервер — то Linux. OS X начисто переустанавливал пару раз, но там всё просто — выбрал дату в TimeMachine 10-15 мин и система готова.
    На Windows у меня большинство программ портативные, ставлю только хром ибо иначе не обновляется и пакет программ Adobe, потому с версии СС они качаются через Cretive Cloud. Смысла городить огород с автоматизацией не вижу. PowerShell может и хорош, но мне на Windows нечего автоматизировать, а для Linux и OS X есть bash, которым я уже давно пользуюсь.
    Если друг просит «переустанови мне Винду, а то что-то глючит» ставлю систему с внешнего диска своим «фирменным» способом, а остальное пусть сам себе ставит

  • После перехода на операционную систему Windows 10 многие пользователи заметили в интерфейсе Проводника кнопку «Запустить PowerShell». В связи с этим в сети появилось много вопросов, пользователей интересовало, что это за программа Windows PowerShell и для чего она нужна. Если вас также интересует этот вопрос, то данный материал должен вам помочь.

    Windows PowerShell – это скриптовый язык и программа с интерфейсом командной строки для выполнения этих скриптов. Данный язык был выпущен в 2006 году в составе второго сервис-пака для Windows XP и с тех пор PowerShell является частью всех операционных систем от Microsoft. В 2008 году появилась вторая версия данного языка, и начиная с Windows 7 используется именно она. Файлы со скриптами Windows PowerShell имеют расширение PS1 и могут запускаться как привычные всем BAT и CMD файлы.

    Windows PowerShell – это скриптовый язык, который разрабатывался в первую очередь для бизнес-клиентов Microsoft, которым нужно мощные инструменты для автоматизации задач по управлению серверами и компьютерами на базе Windows. В качестве основы для данного языка была использована платформа.NET, разрабатываемая компанией Microsoft с 2002 года.

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

    Командлеты (на английском cmdlets) формируются по правилу Глагол-Существительное, например, Get-Help. Ознакомиться с основами Windows PowerShell можно с помощью справки (командлет «Get-Help»). Для получения общей информации просто введите команду «Get-Help», для получения справки о конкретном командлете введите «Get-Help Имя-командлета». Например, если ввести команду «Get-Help Get-Process», то мы получим справку о командлете Get-Process.

    Как запустить программу Windows PowerShell

    Программу Windows PowerShell можно запустить разными способами. Самый простой вариант, это просто воспользоваться поиском в меню «Пуск». Для этого откройте меню «Пуск», введите поисковый запрос «Windows PowerShell», после чего откройте найденную программу.

    Также можно с помощью комбинации клавиш Windows-R и ввести команду «powershell».

    В Windows 10 программу PowerShell можно запустить из любой папки. Для этого нужно нажать на кнопку «Файл» в верхнем левом углу Проводника и выбрать «Запустить Windows PowerShell».

    Как пользоваться программой Windows PowerShell

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

    Очистка корзины . Для очистки корзины существует специальный командлет, который называется «Clear-RecycleBin ». Данный командлет пригодится при написании скриптов для обслуживания компьютеров. При выполнении командлета нужно указать диск, на котором нужно очистить корзину. Пример:

    Clear-RecycleBin c:

    На скриншоте внизу видно, как выполняется данный командлет. После введения команды «Clear-RecycleBin c: » появляется запрос на подтверждение. Для того чтобы продолжить выполнение командлета нужно ввести букву «Y» и нажать Enter.

    Если к командлету «Clear-RecycleBin c: » добавить «-Force », то очистка корзины выполнится без запроса на подтверждение. Скриншот внизу.

    Архивация файлов . Для архивации и распаковки файлов предусмотрены командлеты «Compress-Archive » и «Expand-Archive «. Например, для того чтобы архивировать папку «C:\test\» в архив «C:\archive\test2.zip» нужно выполнить следующий командлет:

    Compress-Archive -LiteralPath C:\test\ -DestinationPath C:\archive\test2.zip

    В результате выполнения показанной выше команды, в папке «C:\archive\» появится файл «test2.zip», в котором будет заархивировано содержимое папки «C:\test\».

    Список командлетов для Windows PowerShell

    Для Windows PowerShell существует огромное количество разных командлетов и описать их все в одной статье не получится. Поэтому предлагаем ознакомиться с самыми востребованными из них:

    • Get-Help – получение справки;
    • Update-Help – обновление справки;
    • Get-Command – поиск командлетов;
    • Get-Alias – поиск псевдонимов для командлетов;
    • Get-PSDrive – просмотр подключенных дисков;
    • Get-Member – просмотр свойств и методов, которые есть у объекта;
    • Get-WindowsFeature – просмотр сведений о доступных ролях и компонентах сервера;
    • Install-WindowsFeature (аналог Add-WindowsFeature) — устанавливает роли или компоненты на нужный сервер;
    • Uninstall-WindowsFeature (аналог Remove-WindowsFeature) – удаляет роли или компонента сервера;
    • Get-History – просмотр истории команд, которые вводились в этой сессии;
    • Get-Variable – просмотр списка переменных и их значений;
    • New-Variable – создание новой переменной;
    • Set-Variable – установка значения переменной;
    • Clear-Variable – удаление значения переменной;
    • Remove-Variable – удаление переменной и ее значения;
    • Format-List – просмотр результата команды в виде списка свойств, где в каждой строке отдельное свойство;
    • Format-Table — просмотр результата команды в формате таблицы;
    • Format-Wide — просмотр результата команды в виде широкой таблицы, в которой показывается только одно свойство для каждого объекта;
    • Format-Custom – просмотр результата команды с использованием пользовательского представления;
    • Export-Csv – экспорт данных в формат CSV;
    • Import-Csv – импорт данных из CSV файла;
    • Export-Clixml — экспорт данных в формат XML;

    Полный список командлетов для Windows PowerShell вы можете получить, выполнив командлет «Get-Command -CommandType cmdlet».

    С загадочными письменами и настойчиво мигающим курсором? Это командная строка. Утилита присутствует во всех версиях Windows. С ее помощью удобно управлять системой, вызывать программы, находить файлы. Но для профессиональной работы cmd недостаточно функциональна. Поэтому компания Microsoft решила исправить все минусы консоли и выпустила продукт под названием Windows PowerShell. Что это и как использовать разработку, читайте дальше.

    Что такое PowerShell от Windows

    PowerShell - это интерактивная объектно-ориентированная командная среда с функциями языка сценариев. Официальный релиз PowerShell 1.0 от «Майкрософт» состоялся 14 ноября 2006 года. Разработчики объединили интерфейс обычной командной строки CLI с платформой для управления локальными и удаленными сетями.NET Framework.

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

    18 августа 2016 года Microsoft объявила, что Windows PowerShell - это теперь продукт с открытым исходным кодом, доступный каждому разработчику. Также компания добавила поддержку Unix-ориентированных операционных систем, включая дистрибутивы Linux и OS X.

    Как управлять PowerShell

    Для выполнения задач используются cmdlets, или командлеты. Это небольшие команды, записанные в виде исполняемых файлов. В версии 2.0 PowerShell для Windows XP и Server 2008 R2 создатели добавили модули, позволяющие управлять большим количеством ресурсов, включая Active Directory и Exchange Server.

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

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

    Учитывая, что Windows PowerShell - это расширяемая среда, пользователи могут создавать свои команды, писать «авторские» модули с использованием языка.Net.

    Начало работы с PowerShell

    В 2016 году была выпущена последняя бета-версия 6.0 PowerShell. В Windows 7, 8 и 10 утилита является встроенной. Если вы пользуетесь другой операционной системой, приложение придется скачать. Для этого зайдите на официальный сайт microfoft.com и в окне поиска введите Installing Windows PowerShell. Система автоматически переведет на страницу с последними релизами продукта. Выберете из списка свою ОС и нажмите Download.

    Когда файл полностью загрузится, откройте его двойным щелчком мышки. По умолчанию среда установится в ProgramFiles\PowerShell\ и создаст ярлык в меню «Пуск». Если вы являетесь счастливым пользователем Windows, нажмите на значок системы в нижнем левом углу и введите PowerShell в «Найти программы и файлы». Запускайте приложение, вводите свой первый командлет и начинайте работу.

    Список необходимых команд и инструкций для PowerShell

    Имя каждого командлета представлено в форме «глагол-существительное» или «действие-объект». Предлагаем список наиболее важных cmdlets PowerShell для Windows 10 и предыдущих версий, начиная с XP. Они будут полезны даже начинающим пользователям, которые только вчера научились сохранять текстовые документы.

    1. Get-Help. Встроенный в ядро оболочки командлет. Предназначен для вызова справки и предоставляет полезную информацию о синтаксисе, программах, их назначении, других командлетах. Если в обычном командном интерпретаторе вы писали ipconfig /?, то в PowerShell нужно набрать Get-Help Get-Process.
    2. Get-Content. Упрощает процедуру чтения файлов для новичков и системных администраторов. Если раньше необходимо было открывать дескриптор и читать поочередно все строки документа, то теперь достаточно передать файл командлету. Для этого пропишите в консоли C:\> Get-Content C:\...\«имя файла».«расширение».
    3. Get-Service. Доступ к информации об установленных на компьютере службах.
    4. Get-Member. Выдает информацию о возвращаемом командлетом объекте, позволяет увидеть его свойства и методы.
    5. Get-Command. Выполняет поиск командлетов, возвращает о них всю информацию, включая данные о функциях, скриптах, приложениях и других элементах. В версии 5.0 PowerShell для Windows 10 в Get-Command добавлен столбец Version, и теперь команлдет отображает сразу несколько версий одного и того же модуля.
    6. Stop-\Start-Service. Незаменимый помощник для администраторов. Командлет запускает и останавливает службы на удаленных и локальных компьютерах.

    Специальные символы для скриптов

    Помимо командлетов, утилита PowerShell в Windows 7 и выше включает специальные символы, такие как $_ или {}. Наибольшее недоумение значки вызывают у новичков, не имевших дело с Linux-подобными системами или программированием.

    1. Вертикальная черта «|». Этот символ используется для программ с конвейерной передачей данных. При работе с консолью его включают, когда хотят указать команде справа от вертикальной черты принять выходные данные от команды слева. В PowerShell вертикальную черту применяют практически с той же целью, комбинируя сразу несколько команд. Например, создать новое имя пользователя, добавить его в группу и сбросить пароль по умолчанию.
    2. Знак функции «{}». Позволяет эффективно контролировать процесс выполнения сценариев. Как и в C-подобных языках программирования, функция в PowerShell образуется посредством заключения нескольких командлетов в фигурные скобки и готова запускаться необходимое количество раз.
    3. Специальный символ $_. Используется для написания скриптовых блоков, фильтров и процедурных выражений. $_ принимает значение текущего объекта и передает его следующему. С помощью знака доллара без нижнего подчеркивания можно обозначить или ввести переменную: $var = «Hello».

    Что такое PowerShell ISE

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

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

    Чтобы попробовать среду ISE, в меню «Пуск» введите PowerShell ISE. Если вы используете не Windows, а другую ОС, скачайте и установите дистрибутив с официального сайта. После запуска приложения откроется окно из трех частей. Вверху пишутся скрипты, внизу - команды PowerShell, а в середине виден результат.

    Начните знакомство с ISE и в нижнем окне введите Get-Process. Нажмите несколько раз Tab. Рядом с командлетом появятся его параметры, которые будут меняться после каждого нажатия клавиши. Это и будет ваш первый сеанс работы со скриптовой средой от Microsoft.



  • В продолжение темы:
    Android

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