1.
Типы команд PowerShell
В оболочке PowerShell поддерживаются команды четырех типов: командлеты, функции, сценарии и внешние исполняемые файлы.
Первый тип – так называемые командлеты (cmdlet). Этот термин используется пока только внутри PowerShell. Командлет представляет собой класс .NET, порожденный от базового класса Cmdlet ; разрабатываются командлеты с помощью пакета PowerShell Software Developers Kit (SDK). Единый базовый класс Cmdlet гарантирует совместимый синтаксис всех командлетов, а также автоматизирует анализ параметров командной строки и описание синтаксиса командлетов для встроенной справки.
Данный тип команд компилируется в динамическую библиотеку (DLL) и подгружается к процессу PowerShell во время запуска оболочки (то есть сами по себе командлеты не могут быть запущены как приложения, но в них содержатся исполняемые объекты). Так как компилированный код подгружается к процессу оболочки, данный тип команд выполняется наиболее эффективно. Командлеты – это аналог внутренних команд традиционных оболочек.
Следующий тип команд – функции. Функция – это блок кода на языке PowerShell, имеющий название и находящийся в памяти до завершения текущего сеанса командной оболочки. Функции, как и командлеты, поддерживают именованные параметры. Анализ синтаксиса функции производится один раз при ее объявлении.
Сценарий – это блок кода на языке PowerShell, хранящийся во внешнем файле с расширением ps1. Анализ синтаксиса сценария производится при каждом его запуске.
Последний тип команд – внешние исполняемые файлы, которые выполняются обычным образом операционной системой.
Имена и структура командлетов
Как уже было отмечено выше, в PowerShell аналогом внутренних команд являются командлеты. Командлеты могут быть очень простыми или очень сложными, но каждый из них разрабатывается для решения одной, узкой задачи. Работа с командлетами становится по-настоящему эффективной при использовании их композиции (конвейеризации объектов между командлетами). Подробнее об этом мы поговорим на следующей лекции.
Имена командлетов всегда соответствуют шаблону "глагол-существительное", где глагол задает определенное действие, а существительное определяет объект, над которым это действие будет совершено.
Например, Get-Process (получить информацию о процессе), Stop-Service (остановить службу), Clear-Host (очистить экран консоли) и т.д. Чтобы просмотреть список командлетов, доступных в ходе текущего сеанса, нужно выполнить командлет Get-Command:
PS C:\> Get-Command CommandType Name Definition ----------- ---- ---------- Cmdlet Add-Content Add-Content [-Path] <String[]> [-Value] <Object[... Cmdlet Add-History Add-History [[-InputObject] <PSObject[]>] [-Pass... Cmdlet Add-Member Add-Member [-MemberType] <PSMemberTypes> [-Name]... Cmdlet Add-PSSnapin Add-PSSnapin [-Name] <String[]> [-PassThru] [-Ve... Cmdlet Clear-Content Clear-Content [-Path] <String[]> [-Filter <Strin... Cmdlet Clear-Item Clear-Item [-Path] <String[]> [-Force] [-Filter ... ...16.1.
По умолчанию командлет Get-Command выводит сведения в трех столбцах: CommandType, Name и Definition. При этом в столбце Definition отображается синтаксис командлетов (многоточие ( … ) в столбце синтаксиса указывает на то, что данные обрезаны).
Командлеты могут иметь параметры, к которым можно обратиться по имени, перед которым ставится дефис ( - ), или по позиции (в последнем случае интерпретация параметра будет выполняться в зависимости от его местоположения в командной строке).
Замечание
Косые черты ( / и \ ) вместе с параметрами в оболочке Windows PowerShell не используются.
В общем случае синтаксис командлетов имеет следующую структуру:
имя_командлета –параметр1 -параметр2 аргумент1 аргумент2
Здесь параметр1 – параметр (переключатель), не имеющий значения; параметр2 – имя параметра, имеющего значениеаргумент1 ; аргумент2 – параметр, не имеющий имени. Например, командлет Get-Process имеет параметр Name, который определяет имя процесса, информацию о котором нужно вывести. Имя этого параметра указывать необязательно. Таким образом, для получения сведений о процессе Far можно ввести либо команду Get-Process -Name Far, либо команду Get-Process Far.
2.
Операторы сравнения в условных операциях
Как ни странно, но операторы сравнения в условных операциях в SharePointвыглядят совсем не так, как мы привыкли видеть на примере других языков программирования (таких, как php, C, Delphi, и пр.).
Дабы этот вопиющий факт сильно вас не смущал, опубликую здесь операторы сравнения, которые используются в условных операциях в PowerShell ‘е.
Итак:
Операторы сравнения:
- -lt — Меньше, чем
- -le — Меньше или равно
- -gt — Больше, чем
- -ge — Больше или равно
- -eq — Равно
- -ne — Не равно
- -like — оператор подобия
- -notlike — оператор не-подобия
В операциях подобия (таких, как -like и -notlike) фильтр устанавливается при помощи символа «*» (звездочки):
Например, все объекты, в имени которых не встречаестя число «11» :($ItemSubSubSub.Name -notlike "*11*")
Ссылка на пример, в котором используются операторы сравнения: Скрипт переноса папок в SharePoint’e
Логическаие операторы:
- -and — логическое «и»
- -or — логическое «или»