Всем привет.
Чтение умной книжки «Keith Hill, Эффективное программирование в Windows PowerShell. 2009» завершено. Советую всем! Неординарный материал по PowerShell. А я, как и обещал, покажу вам самое интересное из этой книги.
Три кита получения информации о командах PowerShell.
Get-Command показывает команды с совпадающими именами в том порядке, в котором PowerShell их будет выполнять. Если Get-Help не сможет обнаружить название раздела справочной системы с заданным именем, он выведет список разделов, в которых обнаружит заданное слово. Get-Member больше не выводит по умолчанию методы, генерируемые компилятором (наподобие get_Name/set_Name). Если вам необходимо вывести эти методы, используйте параметр –Force.
Консоль PowerShell создаёт иллюзию, что вы работаете с текстом — на самом деле вы имеете дело с .NET-объектами, даже если они представлены текстом. Вы часто имеете дело с объектами, содержащими больше информации, чем System.String и часто эти объекты содержат необходимую вам информацию в виде свойств. Можно извлекать эту информацию, не прибегая к помощи синтаксического разбора текста.
Журналирование вывода PowerShell через Start-Transcript.
Имейте ввиду что не весь вывод PowerShell может быть захвачен через Start-Transcript.
Вот список типов вывода, которые не могут быть захвачены, кроме как используя Start-Transcript:
1.Прямой вывод на экран с использованием Write-Host & Out-Host.
2.Вывод отладочной информации в консоль с помощью Write-Debug или параметра -Debug командлета.
3.Вывод предупреждающих сообщений с помощью Write-Warning.
4.Вывод дополнительных подробных сведений, которые могут осуществлять многие командлеты при указании параметра -Verbose.
5.Потоки stdout или stderr непосредственно исполняемого файла.
Просто всегда помните о том, что операторы и выражения участвуют в выводе функций в PowerShell. Вы должны всегда проверять, что вывод происходит именно так, как вы планировали.
Удобный онлайн фильтр для определения типа объекта.
Выглядит он вот так.
PS> filter Get-TypeName {if ($_ -eq $null) {‘<null>’} else {$_.GetType().Fullname }}
А так используется.
PS> Get-Date | Get-TypeName
System.DateTime
Он требует подключения PowerShell Community Extensions (version 3.2.0.0) в вашем профиле.
>Import-Module Pscx -arg ~\Pscx.UserPreferences.ps1
Т.е. при отладке передачи объектов по конвейеру, используйте Get-Member, чтобы узнать свойства и методы, доступные для этих объектов. Используйте Format-List *, чтобы узнать значения свойств объектов. И используйте наш небольшой, но полезный фильтр, показывающий тип каждого объекта, проходящего через элемент конвейера в том порядке, в каком увидит их следующий командлет.
Лучший метод форматирования для исследования вывода PowerShell.
Вы наверняка заметили, что содержание некоторых колонок при стандартном выводе обрезается. Если необходимо вывести их полное содержание, используйте командлет Format-List. Этот командлет выводит различные значения свойств в отдельных строках, так что данные редко сокращаются. Например:
PS> Get-Date | Get-Member -Name DateTime | Format-List
TypeName : System.DateTime
Name : DateTime
MemberType : ScriptProperty
Definition : System.Object DateTime {get=if ($this.DisplayHint -ieq «Date»)
{
«{0}» -f $this.ToLongDateString()
}
elseif ($this.DisplayHint -ieq «Time»)
{
«{0}» -f $this.ToLongTimeString()
}
else
{
«{0} {1}» -f $this.ToLongDateString(), $this.ToLongTimeString()
};}
Теперь мы видим полное определение свойств DateTime. Замечание: часто PowerShell выводит сокращённый набор значений свойств с помощью командлета Format-List. Это делается для того, чтобы отсекать обычно ненужную информацию. Однако, если вам необходим самый подробный вывод всех деталей, используйте этот командлет так: «format-list *».
Запуск других приложений из PowerShell.
PS> & ‘C:\Program Files\Windows NT\Accessories\wordpad.exe’
Внимание: пример выше показывает, что PowerShell анализирует первый не пустой символ в строке для определения, в каком режиме строка будет обработана. Любой из нижеприведённых символов переводит PowerShell в режим команд:
[_aA-zZ]
&
.
\
У этого правила есть одно исключение — если строка начинается с ключевого слова (if, do, while, foreach и т. д.), PowerShell переходит в режим выражений и будет ожидать оставшуюся часть выражения, связанную с этим ключевым словом.
Преимущества командного режима:
•Строка не нуждается в обрамлении кавычками, если она не содержит пробелы
•Числа обрабатываются как числа, все другие аргументы — как строки, за исключением тех, которые начинаются с @, $, (, ‘ или «. Числа интерпретируются как Int32, Int64, Double или Decimal в зависимости от их написания и величины, необходимой для хранения числа, например, 12, 30GB, 1E-3, 100.01d.
Ну, как я уже говорил, необходимо иметь возможность оценки выражений, таких, как это:
PS> 64-2
62
Не удивительно, что некоторые оболочки могут интерпретировать это выражение, например, попытавшись выполнить команду с именем ’64-2′. Как же PowerShell определяет, что строку необходимо анализировать в режиме выражений? Если строка начинается с цифры, или одного из этих знаков — @, $, (, ‘ или » — строка разбирается в режиме выражений. Преимущества этого режима:
•Устранение возможности неверного толкования команд как строк, например, del -recurse * — это команда, а «del -recurse *» — это строка.
•Прямое указание арифметических операций и сопоставления выражений, например 64-2 (62) и $array.count -gt 100. В режиме команд -gt интерпретировалось бы как параметр, если предыдущая лексема соответствует верной команде.
Чем различаются выражения группировки (), подвыражения $() и подвыражения массива @()? Выражение группировки может содержать лишь простое выражение или простой конвейер. Подвыражение может содержать несколько операторов, разделённых точкой с запятой. Вывод каждого оператора передаётся на вывод подвыражения, который может быть скаляром, коллекцией или пустым множеством. Массив подвыражений ведет себя точно так же, как подвыражение, за исключением того, что он гарантирует, что выводом будет массив. Два случая, имеющих различия:
1.Когда массив не имеет вывода, подвыражение вернёт пустой массив.
2.Если результатом является скалярное значение, будет выведен массив с одним элементом, содержащим скалярную величину.
И будет не лишним использование Trace-Command для жесткого контроля корректности набора команд в PowerShell.
Разумеется в книге еще много интересного!
Успехов вам.
Для знакомства с технологией Windows Powershell, я использовал нижеприведенный список книг. Среди них есть платные и такие, которые распространяются бесплатно.
Нижеследующие ссылки взяты из поста http://xaegr.wordpress.com/poshlinks/ многоуважаемого Xaegr’a:
- Эффективное программирование в Windows PowerShell. Книга по сути является сборкой постов из блога Keith Hill. На русский язык её перевёл Сергей Вальковский. Очень рекомендую, но не для новичков. Оригинальная версия доступна тут.
- Введение в Windows PowerShell – Первая, пока единственная бумажная, и весьма неплохая книга о PowerShell на русском. Подробнее тут.
- PowerShell course book – книга которую можно прямо сейчас, абсолютно бесплатно, скачать из интернета. Книга доступна на английском, немецком языках, а теперь и на русском.
- PowerShell in Action – Это книга от одного из разработчиков PowerShell, Bruce Payette. Превосходная книга не только для начинающих, но и для профи. В ней постепенно раскрываются основы языка, но при этом разъясняется не только «Как оно работает?» но и «Почему оно работает так?»
- PowerShell Cookbook от O’Reilly. Судя по рецензиям она прекрасно дополняет PowerShell in Action играя роль справочника.
- Administrative tasks using Windows PowerShell – продолжение PowerShell course book, тоже бесплатна и доступна для скачивания.
Книги обязательны для прочтения (хотя бы “по диагонали” 🙂 ) .
Для специалистов, знакомящихся с этой технологией или ищущих дополнительные источники информации, настоятельно рекомендую посетить пост Ресурсы для изучения Windows Server 2008 и PowerShell технического блога Андрея Гончарука. В этом блоге вы найдете массу интересных и полезных ссылок, как на книги, так и на видео и обучающие курсы.
- Название: Эффективное программирование в Windows PowerShell
- Категория: Книги / Программирование
- Страниц: 58
- Просмотров: 601
Читать журнал Эффективное программирование в Windows PowerShell, 2009, Keith Hill онлайн или скачать бесплатно с Яндекс Диска. Этот журнал и похожие на него журналы находятся в разделе сайта: Программирование, журналы. Свежий номер журнала Эффективное программирование в Windows PowerShell, 2009, Keith Hill, доступный для бесплатного чтения и скачивания, опубликован специально для вас. Вы долго искали почитать что-то интересное, и наконец, нашли. Обязательно прочитайте и скачайте онлайн журнал: Эффективное программирование в Windows PowerShell, 2009, Keith Hill из раздела: Программирование, , и не забудьте посмотреть другие журналы, ничуть не хуже этого. Все журналы публикуются на сайте только по вашим желаниям, специально для вас!
Читать журнал Эффективное программирование в Windows PowerShell, 2009, Keith Hill бесплатно — полная версия
Эффективное программирование в Windows PowerShell, 2009, Keith Hill — описание и краткое содержание, читайте бесплатно онлайн на сайте all-journals.com
Эффективное программирование в Windows PowerShell
Hill K.
Насколько вам понравилась эта книга?
Какого качества скаченный файл?
Скачайте книгу, чтобы оценить ее качество
Какого качества скаченные файлы?
Издательство: нет, 2009. 44 c.
Описание: Содержание книги:Четыре командлета — ключи, открывающие PowerShell
Понимание вывода объектов
Как объекты передаются по конвейеру
Разнообразие вывода — скаляры, коллекции и пустые наборы — о, боже!
Используй объекты, Люк. Используй объекты!
Как форматируется вывод
Режимы синтаксического разбора PowerShell
Параметры привязки элементов конвейера ByPropertyName (по имени)
Параметры привязки элементов конвейера ByValue (по значению)
Регулярные выражения – один из мощнейших инструментов PowerShell
Сравнение массивов
Старайтесь использовать Set-PSDebug -Strict в своих сценариях
Комментирование строк в файле сценария
Добавить в Мою Библиотеку
Выполняется конвертация в
Ключевые слова
Как обычно я опаздываю с новостями 🙂 А новости у нас между тем хорошие – Сергей Вальковский недавно закончил перевод на русский язык книги Keith Hill – Effective PowerShell. Книга по сути является подборкой нескольких постов в блоге Keith, но тем не менее очень полезная. В ней рассказывается о некоторых проблемах и возможностях PowerShell, знание о которых будет очень полезно всем серьезно занимающимся PowerShell. Книга ориентирована на подготовленного читателя, так что не прочитав прилагающейся документации не стоит за неё даже браться. А всем остальным – настоятельно рекомендую к прочтению.
Отдельно хочу похвалить качество перевода – он действительно хорош. Ну кроме второй половины 9ой главы 🙂 (её переводил я 😉 ).
Книгу можно скачать например здесь.
ЗЫ: Ну и для тех кто всё же предпочтет читать в оригинале – вот.