Самоделкин: О PowerShell и аудио-книгах

Итерации

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

В примере ниже мы проверим доступность хостов передав каждый объект массива через конвейер:

Самоделкин: О PowerShell и аудио-книгах

Цикл ForEach

В циклах массивы используются похоже:

Самоделкин: О PowerShell и аудио-книгах

Так же доступен метод foreach, который немного отличается синтаксисом, но работает так же:

Switch это аналог условий, который объединен в единую конструкцию. Мы можем объявить switch и передать в наш список:

Самоделкин: О PowerShell и аудио-книгах

Обновление значений через циклы

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

Первый способ — это обратиться к каждому значению по индексу, а саму ‘длину’ индексов измерить методами, которые описаны выше:

Самоделкин: О PowerShell и аудио-книгахВ Powershell мы можем генерировать список из чисел указав только первое и последнее число и именно это я делал в следующей строке:

В другой строке я указал заменить число под этим индексом на новое прибавив 1:

Еще один способ через ‘for’, который практически не применяется PS:

Самоделкин: О PowerShell и аудио-книгах

Вам так же будет интересно:

Типы массивов

По умолчанию массив в Powershell создается типа ]. Это позволяет хранить любые типы данных. Если вы хотите хранить строгие типы данных, например только числа или определенный набор, то вы можете использовать следующие методы:

Массив из определенных типов данных

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

Обратите внимание, что 4 объявлена строковой, но она сама преобразуется в число без ошибок. В случае добавления букв будет ошибка:

  • Не удается преобразовать значение «s» в тип «System.Int32». Ошибка: «Входная строка имела неверный формат.»
  • Cannot convert value «s» to type «System.Int32». Error: «Input string was not in a correct format.»

Так же можно сделать и со строками, но в таком случае все добавленные данные преобразуются в строки:

Самоделкин: О PowerShell и аудио-книгах

Универсальные списки

Универсальные списки относятся к C#, в котором нужно определять типы данных. Так мы создадим список из строк:

А так будет создан список из целых чисел:

Начиная с версии Powershell 5 можно сократить синтаксис используя using namespace. Using указывается в самом начале скрипта. 

Самоделкин: О PowerShell и аудио-книгах

Следующий синтаксис добавит число в список:

Значения так же можно получать по индексам:

Самоделкин: О PowerShell и аудио-книгах

Для удаления используется следующий синтаксис:

Можно так же удалять по индексам:

Самоделкин: О PowerShell и аудио-книгах

Список из любого типа данных можно создать и так:

Самоделкин: О PowerShell и аудио-книгах

ArrayList

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

Для удаления:

Обновление существующей версии Windows PowerShellUpgrading existing Windows PowerShell

В пакет установки для PowerShell входит установщик WMF.The installation package for PowerShell comes inside a WMF installer.
Версия установщика WMF совпадает с версией PowerShell. Для Windows PowerShell нет отдельного установщика.The version of the WMF installer matches the version of PowerShell; there’s no stand alone installer for Windows PowerShell.

Если вам нужно обновить существующую версию PowerShell, в Windows используйте следующую таблицу, чтобы найти установщик для нужной версии PowerShell.If you need to update your existing version of PowerShell, in Windows, use the following table to locate the installer for the version of PowerShell you want to update to.

WindowsWindows PS 3.0PS 3.0 PS 4.0PS 4.0 PS 5.0PS 5.0 PS 5.1PS 5.1
Windows 10 (см. примечание 1)Windows 10 (see Note1)Windows Server 2016Windows Server 2016 установленоinstalled
Windows 8.1Windows 8.1Windows Server 2012 R2Windows Server 2012 R2 установленоinstalled WMF 5.0WMF 5.0 WMF 5.1WMF 5.1
Windows 8Windows 8Windows Server 2012Windows Server 2012 установленоinstalled WMF 4.0WMF 4.0 WMF 5.0WMF 5.0 WMF 5.1WMF 5.1
Windows 7 с пакетом обновления 1 (SP1)Windows 7 SP1Windows Server 2008 R2 с пакетом обновления 1 (SP1)Windows Server 2008 R2 SP1 WMF 3.0WMF 3.0 WMF 4.0WMF 4.0 WMF 5.0WMF 5.0 WMF 5.1WMF 5.1

Примечание

Если в начальном выпуске Windows 10 включены автоматические обновления, PowerShell обновляется с версии 5.0 до 5.1.On the initial release of Windows 10, with automatic updates enabled, PowerShell gets updated from version 5.0 to 5.1.

Если оригинальная версия Windows 10 не обновлена в Центре обновления Windows, версия PowerShell будет 5.0.If the original version of Windows 10 is not updated through Windows Updates, the version of PowerShell is 5.0.

Топовые статьи :  6 и даже больше оригинальных способов завязать шнурки

Создание

Массивы являются базовой возможностью Powershell, и их создание делается просто. Для создания нужно использовать символы @() :

Самоделкин: О PowerShell и аудио-книгах

Count (в переводе счетчик) — показывает сколько у нас элементов в массиве. Так как мы создали пустое множество он равен нулю.

Можно создать сразу со значениями. Что бы это выполнить нужно добавить значения, разделенные запятой, внутри @() :

Самоделкин: О PowerShell и аудио-книгах

Написав $array мы вывели значения переменной. Каждое из четырех значений выводится с новой строчки. 

Другой способ создания — это писать значения с новой строчки. В этом случае запятые ставить не обязательно:

Самоделкин: О PowerShell и аудио-книгах

 Хоть такая возможность и есть в Powershell, я бы не советовал использовать без запятых. В остальном, с использованием табуляции, такой синтаксис может улучшить читаемость (особенно если у нас сотни значений).

Еще один способ объявления — это не указывать скобки и знак @ :

Самоделкин: О PowerShell и аудио-книгах

Следующий вариант не используется на практике, но вы можете иметь его ввиду:

Самоделкин: О PowerShell и аудио-книгах

Обратите внимание, что число 4 стало строкой только тогда, когда ее поместили в кавычки

Получение элементов

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

Индексы

Когда нужно получить конкретный элемент мы указываем скобки []. Самое первое значение массива имеет идентификатор 0. На следующем примере мы получим первый объект:

Для получения следующих индексов просто измените число:

Самоделкин: О PowerShell и аудио-книгах

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

Самоделкин: О PowerShell и аудио-книгах

Срез (slice) или последовательность — это когда мы получаем данные с одного индекса по другой. Последовательности обозначаются двумя точками ‘..’ . Для примера получим первые три значения:

Самоделкин: О PowerShell и аудио-книгах

Как видно мы можем получить данные не в строгой последовательности относительно массива. Так же указав несуществующий индекс ‘100’ мы не получили ошибку, а вывели все значения с первого до последнего. Если вызвать единственный элемент, который не будет существовать, то значения будут равны Null.

В большинстве языков отрицательное число ‘-1’ обозначает последний объект массива

Обратите внимание, что использование и приведет только к получению первого и последнего элемента:

Самоделкин: О PowerShell и аудио-книгах

Можно указать -2 для получения предпоследнего объекта и т.д. Последний объект можно получить и таким образом:

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

Самоделкин: О PowerShell и аудио-книгах

Возможные ошибки:

  • Не удается индексировать в массив NULL.
  • Cannot index into a null array.

Использование счетчика Count

Счетчик удобно использовать, когда мы хотим проверить количество элементов в массиве:

Самоделкин: О PowerShell и аудио-книгах

Используя счетчик можно получить и элемент массива

Если вы никогда не работали с индексами обращайте внимание, что счетчик возвращает количество элементов в массиве, но индексация начинается с 0 элемента. То есть для получения последнего элемента нам нужно вычесть 1:

Самоделкин: О PowerShell и аудио-книгах 

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

  • Сбой вызова метода из-за отсутствия в ] метода с именем «op_Subtraction».
  • Method invocation failed because ] does not contain a method named ‘op_Subtraction’.

Замена элементов

Для замены элементов так же нужно указать индекс. Если мы хотим заменить первый объект, то соответственно нужно указать индекс 0:

Самоделкин: О PowerShell и аудио-книгах

Указание несуществующего индекса вызовет ошибки:

  • Index was outside the bounds of the array
  • Индекс находился вне границ массива.

Обновление пакетов из коллекции PowerShellUpdating packages from the PowerShell Gallery

Чтобы обновить пакеты, установленные из коллекции PowerShell, выполните командлет Update-Module или Update-Script.To update packages installed from the PowerShell Gallery, run either the Update-Module or Update-Script cmdlet. При запуске без дополнительных параметров Update-Module пытается обновить все модули, установленные командлетом Install-Module.When run without any additional parameters, Update-Module attempts to update all modules installed by running Install-Module. Чтобы выборочно обновить модули, добавьте параметр .To selectively update modules, add the parameter.

Аналогично при запуске без дополнительных параметров Update-Script пытается обновить все сценарии, установленные командлетом Install-Script.Similarly, when run without any additional parameters, Update-Script also attempts to update all scripts installed by running Install-Script. Чтобы выборочно обновить скрипты, добавьте параметр .To selectively update scripts, add the parameter.

Скачивание пакетов из коллекции PowerShellDownloading packages from the PowerShell Gallery

При скачивании пакетов из коллекции PowerShell рекомендуется сделать следующее:We encourage the following process when downloading packages from the PowerShell Gallery:

ИзучениеInspect

Чтобы скачать пакет из коллекции для изучения, выполните командлет Save-Module или Save-Script (в зависимости от типа пакета).To download a package from the Gallery for inspection, run either the Save-Module or Save-Script cmdlet, depending on the package type. Так вы сможете сохранить пакет локально без установки и проверить его содержимое.This lets you save the package locally without installing it, and inspect the package contents. Не забудьте удалить пакет, сохраненный вручную.Remember to delete the saved package manually.

Топовые статьи :  Есть ли в вашей фирме дресс-код?

Некоторые из этих пакетов созданы корпорацией Майкрософт, а другие — сообществом PowerShell.Some of these packages are authored by Microsoft, and others are authored by the PowerShell community. Корпорация Майкрософт рекомендует ознакомиться с содержимым и кодом пакетов в этой коллекции перед их установкой.Microsoft recommends that you review the contents and code of packages on this gallery prior to installation.

Если вы нашли пакет, который, по вашему мнению, опубликован с нарушениями, щелкните Сообщить о нарушении на странице этого пакета.If you discover a package that you feel is not published in good faith, click Report Abuse on that package’s page.

УстановкаInstall

Чтобы установить пакет из коллекции для использования, выполните командлет Install-Module или Install-Script (в зависимости от типа пакета).To install a package from the Gallery for use, run either the Install-Module or Install-Script cmdlet, depending on the package type.

Командлет Install-Module устанавливает модуль в по умолчанию.Install-Module installs the module to by default.
Для выполнения этой операции необходима учетная запись администратора.This requires an administrator account. При добавлении параметра модуль будет установлен в каталог .If you add the parameter, the module is installed to .

Командлет Install-Script по умолчанию устанавливает скрипт в каталог .Install-Script installs the script to by default.
Для выполнения этой операции необходима учетная запись администратора.This requires an administrator account. При добавлении параметра скрипт будет установлен в каталог .If you add the parameter, the script is installed to .

По умолчанию командлеты Install-Module и Install-Script устанавливают последнюю версию пакета.By default, Install-Module and Install-Script installs the most current version of a package. Чтобы установить более раннюю версию пакета, добавьте параметр .To install an older version of the package, add the parameter.

РазвертываниеDeploy

Чтобы развернуть пакет из коллекции PowerShell в службе автоматизации Azure, щелкните Служба автоматизации Azure, а затем Deploy to Azure Automation (Развернуть в службе автоматизации Azure) на странице сведений о пакете.To deploy a package from the PowerShell Gallery to Azure Automation, click Azure Automation, then click Deploy to Azure Automation on the package details page. После этого вы будете перенаправлены на портал управления Azure, на который нужно войти с использованием учетных данных учетной записи Azure.You are redirected to the Azure Management Portal where you sign in by using your Azure account credentials

Обратите внимание, что развертывание пакетов с зависимостями приводит к развертыванию всех зависимостей в службе автоматизации Azure.Note that deploying packages with dependencies deploys all the dependencies to Azure Automation. Кнопку «Развернуть в службе автоматизации Azure» можно отключить, добавив тег AzureAutomationNotSupported в метаданные пакета.The ‘Deploy to Azure Automation’ button can be disabled by adding the AzureAutomationNotSupported tag to your package metadata

Дополнительные сведения о службе автоматизации Azure см. в соответствующей документации.To learn more about Azure Automation, see the Azure Automation documentation.

Поиск PowerShell в Windows 10, 8.1, 8.0 и 7Finding PowerShell in Windows 10, 8.1, 8.0, and 7

Иногда найти консоль или ISE (интегрированную среду сценариев) PowerShell в Windows бывает непросто, так как их расположение в разных версиях Windows отличается.Sometimes locating PowerShell console or ISE (Integrated Scripting Environment) in Windows can be difficult, as its location moves from one version of Windows to the next.

Следующие таблицы помогут найти PowerShell в вашей версии Windows.The following tables should help you find PowerShell in your Windows version.
Все указанные версии являются оригинальными, сразу после выпуска и без обновлений.All versions listed here are the original version, as released, with no updates.

КонсольFor Console

ВерсияVersion LocationLocation
Windows 10Windows 10 Щелкните значок Windows в левом нижнем углу и начните вводить PowerShell.Click left lower corner Windows icon, start typing PowerShell
Windows 8.1, 8.0Windows 8.1, 8.0 На начальном экране начните вводить PowerShell.On the start screen, start typing PowerShell.Если вы находитесь на рабочем столе, щелкните значок Windows в левом нижнем углу и начните вводить PowerShell.If on desktop, click left lower corner Windows icon, start typing PowerShell
Windows 7 с пакетом обновления 1 (SP1)Windows 7 SP1 Щелкните значок Windows в левом нижнем углу и в поле поиска начните вводить PowerShell.Click left lower corner Windows icon, on the search box start typing PowerShell

ISEFor ISE

ВерсияVersion LocationLocation
Windows 10Windows 10 Щелкните значок Windows в левом нижнем углу и начните вводить ISE.Click left lower corner Windows icon, start typing ISE
Windows 8.1, 8.0Windows 8.1, 8.0 На начальном экране введите PowerShell ISE.On the start screen, type PowerShell ISE.Если вы находитесь на рабочем столе, щелкните значок Windows в левом нижнем углу и введите PowerShell ISE.If on desktop, click left lower corner Windows icon, type PowerShell ISE
Windows 7 с пакетом обновления 1 (SP1)Windows 7 SP1 Щелкните значок Windows в левом нижнем углу и в поле поиска начните вводить PowerShell.Click left lower corner Windows icon, on the search box start typing PowerShell
Топовые статьи :  Touchoff — утилита быстрого доступа к функциям управления Windows Mobile

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

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

Олимпиада «Заврики» по математике

28 апреля – 25 мая, онлайн, беcплатно

События и курсы на tproger.ru

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

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

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

Самоделкин: О PowerShell и аудио-книгах

Командлеты

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

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

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

  • Get-Process — отобразить текущие процессы, запущенные на компьютере;
  • Get-Service — отобразить список служб и их статус;
  • Get-Content — отобразить содержимое указанного файла, например .

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

Самоделкин: О PowerShell и аудио-книгах

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

Параметры

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

Самоделкин: О PowerShell и аудио-книгах

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

Самоделкин: О PowerShell и аудио-книгах

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

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

Конвейер

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

  • — сортировка запущенных служб по статусу;
  • — запись текста в файл.

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

Powershell установка модулей offline

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

Для того, чтобы установить модуль на компьютере, не имеющем выхода во внешнюю сеть, нужно скачать модуль на машине с выходом в Интернет. Удобнее всего это сделать при помощи Powershell, введя команды:

PowerShell

Find-Module -Name VMware.PowerCLI

1 Find-Module-NameVMware.PowerCLI

и

PowerShell

Save-Module -Name VMware.PowerCLI -Path C:\path-to-folder

1 Save-Module-NameVMware.PowerCLI-PathC\path-to-folder

Самоделкин: О PowerShell и аудио-книгах

После того, как загрузка завершится, вы увидите в папке файлы модулей:

Самоделкин: О PowerShell и аудио-книгах

Теперь на компьютере, на котором нужно установить этот модуль, поместите скачанные файлы в место, где Powershell ищет установленные модули. Посмотреть места размещения модулей Powershell можно, введя в консоли 

PowerShell

$env:PSModulePath

1 $envPSModulePath

Самоделкин: О PowerShell и аудио-книгах

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

После того, как файлы модулей скопированы, запустите Powershell и выполните еще раз команду:

PowerShell

Get-Module -ListAvailable

1 Get-Module-ListAvailable

Теперь вы должны увидеть в списке доступных ваши модули

Самоделкин: О PowerShell и аудио-книгах

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

Самоделкин: О PowerShell и аудио-книгах

Нужно импортировать модуль в текущую сессию командой 

PowerShell

Import-Module

1 Import-Module

При этом нужно разрешить выполнение сценариев на компьютере(если вы этого не сделали ранее), иначе получим ошибку:

Самоделкин: О PowerShell и аудио-книгах

Посмотреть текущую политику можно так: 

PowerShell

Get-ExecutionPolicy

1 Get-ExecutionPolicy

Самоделкин: О PowerShell и аудио-книгах

В нашем примере выполнение сценариев запрещено.

Разрешить выполнение скриптов можно командой: 

PowerShell

Set-ExecutionPolicy -ExecutionPolicy RemoteSigned

1 Set-ExecutionPolicy-ExecutionPolicyRemoteSigned

Выполнять ее нужно в консоли, запущенной от имени Администратора. После ее выполнения команды модуля станут доступны.

Самоделкин: О PowerShell и аудио-книгах

Аналогично можно установить и другие необходимые модули Powershell.

О том, как использовать PowerCLI в работе с виртуальными машинами, можно прочитать в рубрике, посвященной виртуализации от VMware.

В статье использованы материалы https://blogs.vmware.com/PowerCLI/2017/04/powercli-install-process-powershell-gallery.html

Оцените статью
Добавить комментарий