Windows Management Framework released!

Около часа назад наконец произошло то чего все долго ждали 🙂 Вышел в релиз Windows Management Framework! Это комплект в который входят следующие компоненты:

  • WinRM 2.0
  • Windows PowerShell 2.0
  • BITS 4.0

Он выпущен для следующих операционных систем:

  • Windows XP
  • Windows Server 2003
  • Windows Vista
  • Windows Server 2008

Да, да, релиз PowerShell v2 наконец то наступил для всех (ранее он был доступен лишь в составе Windows 7 и Windows Server 2008 R2)

Скачать можно тут — http://support.microsoft.com/kb/968929.

Реклама
Опубликовано в 2.0, News, PowerShell, Scripting, Vista, Windows 2008. Метки: , , , , . 2 комментария »

Windows 7 Resource Kit PowerShell Pack

James Brundage, один из разработчиков PowerShell, выложил коллекцию модулей PowerShell написанных для Windows 7 Resource Kit. Один из них, IsePack, я уже давно активно использовал, и ждал когда же он наконец появится в публичном доступе 🙂 Этот модуль расширяет возможности PowerShell ISE, добавляя своё меню с различными интересными плюшками 🙂
isepack
Большая часть кода с подсветкой в моих последних постах вставлена именно с его помощью 🙂
Впрочем это только один модуль из тех что выложил Джеймс. Весь PowerPack можно скачать здесь. Ниже полный список модулей:

WPK — Легко и быстро создаёт пользовательские интерфейсы из PowerShell. Типа HTA, но просто 🙂 Более 600 скриптов для быстрого создания интерфейсов. Для начала рекомендуется прочитать Writing User Interfaces with WPK

IsePack — Расширяет ISE, добавляя более 35 действий.

TaskScheduler — Выводит назначенные задания, создаёт и удаляет их.

FileSystem — Отслеживание файлов и папок, проверка на дубликаты и свободного места на диске.

DotNet — Explore loaded types, find commands that can work with a type, and explore how you can use PowerShell, DotNet and COM together Исследуйте загруженные типы, находите команды для работы с ними, и изучайте как вы можете использовать PowerShell, DotNet и COM вместе.

PSImageTools
Инструменты для конвертирования, поворота, изменения размера, обрезки изображений и получения их метаданных.

PSRSS — Работа с FeedStore из PowerShell .

PSSystemTools — Получение информации об операционной системе и оборудовании.

PSUserTools — Получение списка пользователей, проверка привилегий и т.п.

PSCodeGen — Генерирует PowerShell скрипты, код C# и P/Invoke.

Я пока еще не пробовал все эти модули, так что неточности в переводе обязательны 🙂 Качаем и смотрим 🙂

Опубликовано в 2.0, PowerShell, Scripting, Utility, Windows 7. Метки: , , , , , , . Комментарии к записи Windows 7 Resource Kit PowerShell Pack отключены

BitsTransfer

Я уже писал про командлеты для передачи файлов с использованием BitsTransfer (раз, два), но думаю стоит вспомнить о них еще разок. Дело в том что те посты писались по CTP3, а в релизе модуль и сами командлеты были переименованы из FileTransfer в BitsTransfer 🙂 Не ахти какое ужасное изменение, но лучше упомяну, а то те посты уже многих ввели в заблуждение 🙂 Итак, в релизе делаем так:
Import-Module BitsTransfer
Get-Command -module BitsTransfer

Ну и до кучи, небольшой ролик демонстрирующий основные возможности командлетов 🙂

bits

На момент написания этого поста релиз PowerShell 2.0 и этого модуля, доступен только на Windows 7 и Windows 2008 R2. Но уже скоро должен выйти пакет с PS 2.0 и обновленным BITS для всех остальных систем, начиная с XP.

Опубликовано в Uncategorized. Метки: , . Комментарии к записи BitsTransfer отключены

#Requires –Version 2.0

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

Вообще написать проверку версии несложно. У PowerShell 2.0 есть специальная переменная, $PSVersionTable в которой содержится вся необходимая информация о версии:

[PS <1> C:\root] $psversiontable

Name                           Value
----                           -----
CLRVersion                     2.0.50727.4918
BuildVersion                   6.1.7100.0
PSVersion                      2.0
WSManStackVersion              2.0
PSCompatibleVersions           {1.0, 2.0}
SerializationVersion           1.1.0.1
PSRemotingProtocolVersion      2.0

Ну а версию 1.0 легко опознать по отсутствию этой переменной 🙂 В результате получаем такую функцию:

function Get-Version {if ($PSVersionTable){$PSversionTable.PSVersion.ToString()} else {"1.0"}}

Но на самом деле всё это – лишние движения. Всё можно сделать гораздо проще.

Если ваш скрипт требует версии 2.0, вам достаточно в его начале поместить следующую строку:

#Requires -Version 2.0

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

PS C:\Temp> . C:\Temp\test.ps1
The script 'test.ps1' cannot be run because it contained a "#requires" statement at 
line 1 for Windows PowerShell version 2.0 which is incompatible with the installed 
Windows PowerShell version of 1.0.
At line:1 char:2
+ .  <<<< C:\Temp\test.ps1

Вполне понятно, и не сложно.

Ниже, полный список критериев которые позволяет указать деректива Requires:

#requires -shellid 
#requires -version 
#requires -pssnapin  [-version ]

Например чтобы разрешить запуск сценария лишь в оболочке с подгруженной оснасткой AD Cmdlets, достаточно сделать так:

#Requires -PSSnapin Quest.ActiveRoles.ADManagement

Можно даже указать конкретную версию оснастки добавив ключ –Version. Причем если вы это сделаете, скрипт будет выполнятся именно с этой версией. Даже если установлена более поздняя – будет выдана ошибка.

Опубликовано в 2.0, PowerShell. Метки: , , . 2 комментария »

PowerShell ISE

Наверняка вы уже наслышаны о том что в следующей версии PowerShell будет доступна графическая консоль/редактор, который называется PowerShell ISE (Integrated Scripting Environment). В этом посте я постараюсь рассказать о том что это такое, и зачем оно нужно 🙂

ise_01

Как видно из этого скриншота, ISE является полноценным редактором с подсветкой кода, закладками (табами), и возможностью выполнения интерактивных команд. Это крайне удобно при написании сценариев: можно легко протестировать команду, и затем добавить её в основной код. Или наоборот выполнить несколько строк выделенных в открытом файле.

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

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

image

Когда я первый раз увидел ранние версии этой утилиты, я сразу захотел иметь возможность открыть несколько закладок, с интерактивными сессиями PowerShell на других компьютерах. К сожалению тогда это было невозможно. Но сейчас, в Windows 7 (или PowerShell CTP3) нет ничего проще! 😉

image

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

Так как ISE создавался с нуля, для PowerShell, он не страдает болезнями доставшимися PowerShell.exe от консольной подсистемы Windows (которая почти не изменилась со времен Windows 2000). Так например он изначально, полностью, стопроцентно поддерживает Unicode, и в нем можно легко менять шрифты, и их размер. Но у всего хорошего есть цена… В PowerShell не получится выполнять команды которые привыкли работать с экраном консоли напрямую. Это относится например к интерактивным режимам cmd.exe, netsh или diskpart. Нет, вы вполне сможете использовать эти утилиты, но вот войти в их интерактивный “subshell” не получится.

image

Еще много всего интересного про PowerShell ISE можно прочитать в блоге разработчиков,

Опубликовано в 2.0, PowerShell, Windows 2008 R2, Windows 7. Метки: , , . 1 Comment »

WSUS 4.0 на PowerShell!

Совсем недавно я писал новость о том что PowerShell стал доступен на WSUS, а сегодня заголовок изменился с точностью до наоборот! 🙂

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

image

Почему этого не сделали раньше? Ну… производительность PowerShell 1.0 оставляла желать лучшего. Но версия 2.0, встроенная в Windows Server 2008R2, гораздо быстрее и производительнее. Да и реализовывать графический интерфейс гораздо проще с помощью WinFX ставшего доступным только в PowerShell 2.0

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

image

Опубликовано в News. Метки: , . 5 комментариев »

PoshCode.org – Работа из PowerShell

В прошлом своём посте я рассказал о нескольких способах поиска на сайте PoshCode.org, но забыл упомянуть о самом главном – из самого PowerShell 🙂

Исправляю оплошность. На сайте доступны два набора команд для работы с сайтом, одна в виде обычного файла .ps1 для PowerShell v1.0, и другая в виде модуля для PowerShell v2.0 CTP3.

Читать далее…

Опубликовано в 2.0, PowerShell, Scripting, Tips. Метки: , . 4 комментария »