Как узнать какая версия powershell установлена

В этой статье мы рассмотрим какие версии PowerShell существуют, в чем отличие Windows PowerShell от PowerShell Core и как узнать, какая версия PowerShell

Examples

Example 1: Compute the hash value for a file

This example uses the cmdlet to compute the hash value for the
file. The hash algorithm used is the default, SHA256. The output is
piped to the cmdlet to format the output as a list.

Example 2: Compute the hash value for an ISO file

This example uses the cmdlet and the SHA384 algorithm to compute the hash value
for an ISO file that an administrator has downloaded from the internet. The output is piped to the
cmdlet to format the output as a list.

Example 3: Compute the hash value of a stream

For this example, we get are using System.Net.WebClient to download a package from the
Powershell release page. The release
page also documents the SHA256 hash of each package file. We can compare the published hash value
with the one we calculate with .

Example 4: Compute the hash of a string

PowerShell does not provide a cmdlet to compute the hash of a string. However, you can write a
string to a stream and use the InputStream parameter of to get the hash value.

Копирование файлов и папокCopying Files and Folders

Копирование выполняется с помощью командлета .Copying is done with . Следующая команда создает резервную копию C:\boot.ini в C:\boot.bak:The following command backs up C:\boot.ini to C:\boot.bak:

Если целевой файл уже существует, то попытка копирования завершается неудачей.If the destination file already exists, the copy attempt fails. Чтобы перезаписать имеющийся целевой файл, используйте параметр Force.To overwrite a pre-existing destination, use the Force parameter:

Эта команда работает, даже если целевой объект доступен только для чтения.This command works even when the destination is read-only.

Так же выполняется и копирование папок.Folder copying works the same way. Эта команда копирует папку в новую папку рекурсивно.This command copies the folder to the new folder recursively:

Можно также скопировать избранные элементы.You can also copy a selection of items. Следующая команда копирует все файлы TXT, содержащиеся в папке , в папку :The following command copies all .txt files contained anywhere in to :

Для копирования элементов файловой системы можно использовать и другие средства.You can still use other tools to perform file system copies. В Windows PowerShell по-прежнему работают команды XCOPY, ROBOCOPY и такие COM-объекты, как Scripting.FileSystemObject.XCOPY, ROBOCOPY, and COM objects, such as the Scripting.FileSystemObject, all work in Windows PowerShell. Например, можно воспользоваться COM-классом Scripting.FileSystem сервера сценариев Windows для создания резервной копии файла в файле :For example, you can use the Windows Script Host Scripting.FileSystem COM class to back up to :

Как установить PowerShell в Linux

PowerShell работает также и в Linux, но некоторые команды PowerShell отсутствуют в Linux. При запуске скриптов PowerShell в Linux возникнут проблемы в следующих случаях:

  • в скрипте используются команды, которые отсутствуют в Linux версии PowerShell (например, из-за того, что связаны с настройками Windows или неприменимы для Linux по другим причинам)
  • скрипт обращается к переменным окружения Windows
  • в скрипте используются утилиты Windows, отсутствующие в Linux

Могут быть и другие причины проблем, но много всё равно работает.

Многие дистрибутивы Linux поддерживаются официально и простые инструкции по установке PowerShell в свой дистрибутив, а также установочные файлы вы найдёте здесь:

  • https://github.com/PowerShell/PowerShell

Установка PowerShell в Kali Linux

PowerShell добавлен в стандартные репозитории Kali Linux, поэтому установка очень простая:

sudo apt install powershell

Установка PowerShell в Arch Linux, BlackArch

git clone https://aur.archlinux.org/powershell.git
cd powershell
makepkg -si

Чтобы узнать версию PowerShell выполните команду:

Get-Host | Select-Object Version

Description

The cmdlet computes the hash value for a file by using a specified hash algorithm.
A hash value is a unique value that corresponds to the content of the file. Rather than identifying
the contents of a file by its file name, extension, or other designation, a hash assigns a unique
value to the contents of a file. File names and extensions can be changed without altering the
content of the file, and without changing the hash value. Similarly, the file’s content can be
changed without changing the name or extension. However, changing even a single character in the
contents of a file changes the hash value of the file.

The purpose of hash values is to provide a cryptographically-secure way to verify that the contents
of a file have not been changed. While some hash algorithms, including MD5 and SHA1, are no longer
considered secure against attack, the goal of a secure hash algorithm is to render it impossible to
change the contents of a file — either by accident, or by malicious or unauthorized attempt — and
maintain the same hash value. You can also use hash values to determine if two different files have
exactly the same content. If the hash values of two files are identical, the contents of the files
are also identical.

By default, the cmdlet uses the SHA256 algorithm, although any hash algorithm that
is supported by the target operating system can be used.

Отличия PowerShell и CMD в Windows

В Windows PowerShell уже давно устанавливается по умолчанию.

Чтобы открыть PowerShell, нажмите Win+x и выберите Windows PowerShell (администратор):

В приглашении командной строки вы увидите PS и текущую рабочую директорию:

Чтобы открыть CMD нужно нажать Win+r, напечатать cmd и нажать ENTER:

Приглашение командной строки CMD выглядит так:

В CMD можно запустить:

  • утилиты командной строки Windows
  • встроенные функции CMD
  • файлы .bat

В PowerShell можно запустить всё то же самое, что и в CMD, а также дополнительно:

  • команды языка PowerShell
  • скрипты PowerShell

В PowerShell сработает такая простая команда как dir:

dir

Но если выполнить эту команду в PowerShell и в CMD, то можно увидеть, что вывод этих команд различается.

А если попытаться выполнить эту команду с опцией, например:

dir /A

То в CMD она сработает, а в PowerShell завершится ошибкой.

Дело в том, что вместо реализации таких же утилит как в CMD, в PowerShell используются собственные командлеты, работа которых различается, например, выводом или поддержкой опций. В PowerShell сработают команды cd, ls, dir, cat, man, kill, mount, move, sort, pwd, wget, curl и другие, знакомые по Linux, но это НЕ ОЗНАЧАЕТ что эти команды поддерживают те же самые опции, что и опции в Linux. Это просто аналоги, причём довольно грубые. Точнее говоря, это псевдонимы команд PowerShell. Полный список псевдонимов вы можете просмотреть командой:

Get-Alias

Получение списка файлов и папок, содержащихся в папкеListing All the Files and Folders Within a Folder

Извлечь все элементы непосредственно из папки можно с помощью командлета .You can get all items directly within a folder by using . Для отображения скрытых и системных элементов добавьте необязательный параметр Force.Add the optional Force parameter to display hidden or system items. Например, эта команда отображает непосредственное содержимое диска C Windows PowerShell (которое совпадает с содержимым физического диска C Windows):For example, this command displays the direct contents of Windows PowerShell Drive C (which is the same as the Windows physical drive C):

Эта команда выводит только элементы, содержащиеся на диске непосредственно, так же как и команда оболочки или команда оболочки UNIX.The command lists only the directly contained items, much like using ‘s command or in a UNIX shell. Для показа вложенных элементов необходимо также указать параметр .In order to show contained items, you need to specify the parameter as well. (Время выполнения этой операции будет очень велико.) Для вывода всего содержимого диска C введите:(This can take an extremely long time to complete.) To list everything on the C drive:

Командлет позволяет отфильтровать элементы с помощью параметров Path, Filter, Include и Exclude, но обычно осуществляется лишь фильтрация по имени. can filter items with its Path, Filter, Include, and Exclude parameters, but those are typically based only on name. Сложную фильтрацию на основе других свойств элементов можно выполнить с помощью .You can perform complex filtering based on other properties of items by using .

Следующая команда находит все исполняемые файлы в папке Program Files, которые были в последний раз изменены после 1 октября 2005 г. и размер которых не менее одного мегабайта и не более десяти мегабайт:The following command finds all executables within the Program Files folder that were last modified after October 1, 2005 and which are neither smaller than 1 megabyte nor larger than 10 megabytes:

История версии PowerShell, PowerShell Core

По умолчанию PowerShell устанвлен во всех версиях Windows, начиная с Windows 7 SP1 и Windows Server 2008 R2 SP1. В следующей таблице представлен список актуальных версий PowerShell:

Версия PS Примечание
PowerShell 1.0 Можно было установить вручную в Windows Server 2003 SP1 и Windows XP
PowerShell 2.0 Предустановлен в Windows Server 2008 R2 и Windows 7
PowerShell 3.0 Установлен в Windows 8 и Windows Server 2012
PowerShell 4.0 Предустановлен в Windows 8.1 и Windows Server 2012 R2
PowerShell 5.0 Предустановлен в Windows 10 RTM, и автоматически обновляется до 5.1 через Windows Update
PowerShell 5.1 Встроен в Windows 10 (начиная с билда 1709) и Windows Server 2016
PowerShell Core 6.0 и 6.1 Следующая кроссплатформенная версия PowerShell (основана на .NET Core), которую можно установить не только во всех поддерживаемых версиях Windows, но и в MacOS, CentOS, RHEL, Debian, Ubuntu, openSUSE
PowerShell Core 7.0 Самая последняя версия PowerShell, вышедшая в марте 2020 (в новом релизе выполнен переход с .NET Core 2.x на 3.1)

Вы можете вручную установить более новую версию PowerShell в предыдущих версиях Windows. Для этого нужно скачать и установить соответствующую версию Windows Management Framework (PowerShell входит в его состав).

Стоит обратить внимание, что последние 2 года Microsoft приостановила развитие классического Windows PowerShell (выпускаются только исправления ошибок и безопасности) и сфокусировалась на открытом кроссплатформенном PowerShell Core. В чем отличия Windows PowerShell от PowerShell Core?

  • Windows PowerShell основан на NET Framework (например, для PowerShell 5 требуется .NET Framework v4.5, нужно убедиться что он установлен). PowerShell Core основан на .Net Core;
  • Windows PowerShell работает только на ОС семейства Windows, а PowerShell Core является кроссплатформенным и будет работать в Linux;
  • В PowerShell Core нет полной совместимости с Windows PowerShell, однако Microsoft работает на улучшением обратной совместимости со старыми командлетами и скриптами (перед переходом на PowerShell Core рекомендуется протестировать работу старых PS скриптов). В PowerShell 7 обеспечивается максимальная совместимсть с Windows PowerShell.
  • Редактор PowerShell ISE нельзя использовать для отладки скриптов PowerShell Core (но можно использовать Visual Studio Code)
  • Т.к. Windows PowerShell более не развивается, рекомендуется постепенно мигрировать на PowerShell Core.

Чтение текстового файла в массивReading a Text File into an Array

Одним из наиболее общих форматов хранения текстовых данных является файл, отдельные строки которого рассматриваются как отдельные элементы.One of the more common storage formats for text data is in a file with separate lines treated as distinct data elements. Командлет используется для чтения всего файла за один шаг, как показано далее:The cmdlet can be used to read an entire file in one step, as shown here:

Командлет сразу рассматривает данные, считанные из файла, как массив с одним элементом на строку содержимого файла. already treats the data read from the file as an array, with one element per line of file content. Убедиться в этом можно, проверив свойство Length полученного содержимого:You can confirm this by checking the Length of the returned content:

Эта команда наиболее полезна для непосредственного ввода в Windows PowerShell информационных списков.This command is most useful for getting lists of information into Windows PowerShell directly. Например, можно хранить в файле список имен компьютеров или IP-адресов по одному имени на каждую строку файла.For example, you might store a list of computer names or IP addresses in a file , with one name on each line of the file. Вы можете использовать командлет , чтобы извлечь содержимое файла и поместить его в переменную :You can use to retrieve the file contents and put them in the variable :

Теперь переменная представляет собой массив, содержащий в каждом элементе имя компьютера. is now an array containing a computer name in each element.

История версий PowerShell

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

  • PowerShell версии 1 — вышел в 2006 году, и был включен в состав Windows Server 2003 SP1 и как для меня стало удивительным в будущем аж в сам XP.
  • PowerShell версии 2.0 — появился в легендарной операционной системе Windows 7 и Windows Server 2008 R2. Большая часть людей стала с ним знакомится именно с данных времен.
  • PowerShell версии 3.0 — Стал доступен с выходом Windows 8 и Windows Server 2012.
  • PowerShell версии 4.0 — Вошел в состав Windows 8.1 и Windows Server 2012 R2.
  • PowerShell версии 5.0 — Вышел в 2016 году. Данный релиз не привязывался к конкретной ОС.
  • PowerShell версии 5.1 — Стал частью Windows Server 2016 и Windows 10, в январе 2017 года.
  • PowerShell версии 6.0 — Идет в составе Windows 10 1703 и Windows Server 2019

Хочу отметить, что вы можете установить самую свежую версию языка управления даже в самой старой Windows 7. Подробнее про функционал в каждой версии вы можете посмотреть в Википедии (https://en.wikipedia.org/wiki/PowerShell#PowerShell_1.0)

Другие возможности

Кроме хранения значений используя возможности Powershell можно использовать методы .Net и выражения. Все это мы рассмотрим ниже на примерах.

Сортировка

По умолчанию hashtable не отсортированы

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

Выражения

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

Как вы можете видеть выражение, которые переводит KB в GB, имеет вид хэш таблиц. Мы их можем использовать и другим способом:

Label — это имя колонки, а знак $_ элемент, который передается через конвейер.

Выражения можно использовать в командах, которые позволяют это делать. Это команды типа Select-Object и Format-Table

Дополнительные возможности с сортировкой

С командлетом сортировки тоже можно использовать выражения. Связи с этим по этим значениям можно и сортировать результат:

Пример выше сортирует пользователей AD по результату из функции.

Сортировка коллекций в массиве

В статье по работе с массивами в Powershell мы рассказывали, что в них могут храниться объекты. Если там хранятся коллекции, то их тоже можно сортировать:

Передача как параметров

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

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

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

В командах и программах, где значения используются в виде /parametr:value тоже можно использовать такой подход. Для примера Robocopy:

Вложенные коллекции

Hashtable и массивы можно вкладывать:

Вызывать элементы можно так:

Добавление ключей и значений делается выше описанным способом:

Как видно по скриншоту ключи во вложенных хеш таблицах отображаются как Value. Если вы не знаете какой тип хранит таблица, то сможете узнать это через GetType():

С этим же примером, если мы не будем использовать GetType(), у нас выведутся все элементы:

Либо вызывать ключи обращаясь к конкретной коллекции:

Предположим, что нам нужно добавить значение в Support. На данный момент это строка, но мы сделаем массив:

Преобразование в JSON

Как вы уже заметили хэш таблицы в Powershell сильно похожи на JSON. Если вам удобнее для хранения или использования этот формат, то вы сможете выполнить преобразование:

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

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

Получение списка USB устройств в Powershell

Вывод hashtable как таблицы

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

Так же сработает и после создания коллекции:

 Можно использовать Out-GridView для представления в графическом интерфейсе:

Если будет интересно могу описать способ добавления hashtable в базу SQL с помощью Powershell и их вывод.

Подробно о том как работать с CSV в Powershell мы уже говорили. Это одна из самых простых в использовании команд:

Сохранение в файл и загрузка

Мы можем сохранить коллекции в файл для дальнейшего использования. Я не нашел способов с помощью которых можно сохранить коллекции без преобразования. Один из способов использовать импорт и экспорт в формат xml:

Для загрузки выполним импорт:

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

Можно использовать JSON, но так получится другой тип данных:

Для загрузки:

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

Если в файле находится коллекция исходного формата, то вы можете ее загрузить используя такие команды:

Hash Generator

SecurityExploded’s Hash Generator — это простой в использовании генератор хэшей, который поддерживает широкий спектр алгоритмов хэширования. Бесплатный инструмент для создания хэшей может генерировать хэши для MD5, SHAxxxx, Base64, LM, NTLM, CRC32, ROT13, RIPEMD, ALDER32, HAVAL и других.

Отличной особенностью Hash Generator является то, что его можно использовать в самых разных ситуациях. Хотите хэш для определенного фрагмента текста? Просто скопируйте текст в Hash Generator. Хотите быстро создать хэш-файла в проводнике файлов? Используйте опцию Hash Generator в контекстном меню правой кнопкой мыши.

Поиск файлов по содержимому

Get-Content не позволяет искать и открывать фалы  находящиеся внутри других каталогов. Такой поиск называется рекурсивным и он доступен в Get-ChildItem.

В следующем примере мы вернем файлы из всех каталогов и подкаталогов:

File — возвращает только файлы. Каталоги нам не нужны.

С Get-ChildItem вы так же можете использовать Include,Exclude и Filter, которые были рассмотрены раннее. Использовать эти ключи лучше всего в первой команде т.к. это будет работать быстрее.

Через конвейер мы сможем открыть каждый файл, а с Select-Sting проверить есть ли в нем нужный текст. Так мы найдем файл с Powershell, который содержит строку ‘127.0.0.1’ в папке Windows:

Если убрать параметр Raw, то у нас выведется только та строка, которую мы искали:

Hashtable как свойства

Чаще всего в Powershell бы работаем со свойствами и с коллекциями мы можем работать так же.

Создание и получение свойств

Посмотрим как вызываются свойства обычных объектов в PS:

Аналогично этому примеру мы можем получать из коллекций:

Для создания новых свойств можно использовать такой же подход:

Проверка на существование

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

Я предпочитаю вызывать все ключи и проверять, что в них есть нужный:

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

Такой же ключ есть для проверки значений:

Удаление ключей и значений

Для удаления ключей нужно использовать функцию .Remove():

Значение удалить нельзя, так как коллекции существуют только в паре. Можно обнулить подставив $null:

Удалить все элементы коллекции можно переназначив ее:

Или использовать функцию clear():

Сохранение и отзыв последних расположений (Push-Location и Pop-Location)Saving and Recalling Recent Locations (Push-Location and Pop-Location)

При изменении расположения полезно отслеживать свое предыдущее расположение и иметь возможность вернуться к нему.When changing locations, it is helpful to keep track of where you have been and to be able to return to your previous location. Командлет Push-Location в Windows PowerShell создает упорядоченный журнал («стек») путей к каталогам, которые вы открывали, чтобы можно было вернуться по нему на шаг назад, используя дополнительный командлет Pop-Location.The Push-Location cmdlet in Windows PowerShell creates a ordered history (a «stack») of directory paths where you have been, and you can step back through the history of directory paths by using the complementary Pop-Location cmdlet.

Например, Windows PowerShell обычно запускается в корневом каталоге пользователя.For example, Windows PowerShell typically starts in the user’s home directory.

Примечание

Слово стек имеет специальное значение во многих параметрах программирования, включая .NET Framework.The word stack has a special meaning in many programming settings, including .NET Framework. Например, в физическом стеке элементов последний элемент, помещенный в стек, является первым элементом, который можно извлечь из него.Like a physical stack of items, the last item you put onto the stack is the first item that you can pull off the stack. Добавление элемента в стек в разговорной речи называется «проталкиванием» элемента в стек.Adding an item to a stack is colloquially known as «pushing» the item onto the stack. Извлечение элемента из стека в разговорной речи называется «выводом» элемента из стека.Pulling an item off the stack is colloquially known as «popping» the item off the stack.

Чтобы передать текущее расположение в стек, а затем переместить его в папку локальных параметров, введите:To push the current location onto the stack, and then move to the Local Settings folder, type:

После этого можно передать расположение локальных параметров в стек и переместить его в папку Temp, введя следующее:You can then push the Local Settings location onto the stack and move to the Temp folder by typing:

Чтобы убедиться, что каталоги изменены, введите команду Get-Location.You can verify that you changed directories by entering the Get-Location command:

После этого можно перейти в последний открытый каталог, введя команду Pop-Location, и проверить изменение, введя команду Get-Location.You can then pop back into the most recently visited directory by entering the Pop-Location command, and verify the change by entering the Get-Location command:

Как и в случае с командлетом Set-Location, можно включить параметр -PassThru при вводе командлета Pop-Location, чтобы открыть указанный каталог.Just as with the Set-Location cmdlet, you can include the -PassThru parameter when you enter the Pop-Location cmdlet to display the directory that you entered:

Кроме того, можно использовать командлеты расположения с сетевыми путями.You can also use the Location cmdlets with network paths. Если у вас есть сервер FS01 с общей папкой Public, можно изменить расположение, введяIf you have a server named FS01 with an share named Public, you can change your location by typing

или диспетчер конфигурации службor

Чтобы изменить расположение на любой доступный диск, можно использовать команды Push-Location и Set-Location.You can use the Push-Location and Set-Location commands to change the location to any available drive. Например, если у вас есть локальный дисковод компакт-дисков с буквой диска D, содержащий компакт-диск с данными, вы можете изменить расположение на него, введя команду Set-Location D: .For example, if you have a local CD-ROM drive with drive letter D that contains a data CD, you can change the location to the CD drive by entering the Set-Location D: command.

Если дисковод пуст, вы получите следующее сообщение об ошибке:If the drive is empty, you will get the following error message:

В интерфейсе командной строки проводник неудобно использовать для просмотра свободных физических дисков.When you are using a command-line interface, it is not convenient to use File Explorer to examine the available physical drives. Также в проводнике будут показаны не все диски PowerShell.Also, File Explorer would not show you the all of the Windows PowerShell drives. Windows PowerShell предоставляет набор команд для управления дисками Windows PowerShell, о которых речь пойдет далее.Windows PowerShell provides a set of commands for manipulating Windows PowerShell drives, and we will talk about these next.

Удаление всех файлов и папок, содержащихся в папкеRemoving All Files and Folders Within a Folder

Удалить вложенные элементы можно с помощью командлета , однако он потребует подтверждения удаления, если элемент сам что-нибудь содержит.You can remove contained items using , but you will be prompted to confirm the removal if the item contains anything else. Например, при попытке удаления папки , которая содержит другие элементы, Windows PowerShell предварительно предложит подтвердить удаление этой папки:For example, if you attempt to delete the folder that contains other items, Windows PowerShell prompts you for confirmation before deleting the folder:

Если подтверждение для каждого вложенного элемента нежелательно, задайте параметр Recurse:If you do not want to be prompted for each contained item, specify the Recurse parameter:

Parameters

-Algorithm

Specifies the cryptographic hash function to use for computing the hash value of the contents of the
specified file or stream. A cryptographic hash function has the property that it is infeasible to
find two different files with the same hash value. Hash functions are commonly used with digital
signatures and for data integrity. The acceptable values for this parameter are:

  • SHA1
  • SHA256
  • SHA384
  • SHA512
  • MD5

If no value is specified, or if the parameter is omitted, the default value is SHA256.

For security reasons, MD5 and SHA1, which are no longer considered secure, should only be used for
simple change validation, and should not be used to generate hash values for files that require
protection from attack or tampering.

Type: String
Accepted values: SHA1, SHA256, SHA384, SHA512, MD5
Position: 1
Default value: None
Accept pipeline input: False
Accept wildcard characters: False

-InputStream

Specifies the input stream.

Type: Stream
Position:
Default value: None
Accept pipeline input: False
Accept wildcard characters: False

-LiteralPath

Specifies the path to a file. Unlike the Path parameter, the value of the LiteralPath
parameter is used exactly as it is typed. No characters are interpreted as wildcard characters. If
the path includes escape characters, enclose the path in single quotation marks. Single quotation
marks instruct PowerShell not to interpret characters as escape sequences.

Type: String[]
Aliases: PSPath, LP
Position:
Default value: None
Accept pipeline input: True (ByPropertyName)
Accept wildcard characters: False

-Path

Specifies the path to one or more files as an array. Wildcard characters are permitted.

Type: String[]
Position:
Default value: None
Accept pipeline input: True (ByPropertyName, ByValue)
Accept wildcard characters: True

Получаем версию PowerShell на удаленных компьютерах

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

Вы можете получить версию PowerShell с удаленного компьютера с помощью команды Invoke-Command:

Major Minor Build Revision PSComputerName
----- ----- ----- -------- --------------
5 1 14393 3383 dc01

Можно получить установленные версии PowerShell с нескольких компьютеров таким скриптом (их список сохранен в текстовом файле):

Либо можно получить список компьютеров домена через Get-ADComputer и получить версию PowerShell на них:

Если ваш скрипт PoweShell использует специальный функционал определенной версии PS, вы можно принудительно переключиться в режим другой версии PowerShell. Например, для запуска консоли в режиме PowerShell v3, выполните (должен быть установлен .Net Framework 3.5):

Определение версии PowerShell может быть важно при выполнении скриптов и запуске команд, которые используют командлеты или специальные возможности определенной версии PS. Если вы хотите в скрипте PS определить какая версия PowerShell установлена, и в зависимости от этого использовать разные командлеты, вы можете использовать такой скрипт:. В следующей статье мы рассмотрим, как обновить версию PowerShell в Windows

В следующей статье мы рассмотрим, как обновить версию PowerShell в Windows.

Как проверить версию PowerShell из оболочки

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

$PSVersionTable.PSVersion

В итоге моя Windows 10 1803 вывела мне версию 5.1 билд 17134.

Та же команда, но уже в Windows 8.1.

Можно применить вот такой метод проверить версию PowerShell:

Get-Host | Select-Object Version

В результате я получил строку результата вот такого вида 5.1.17134.407.

Есть еще несколько команд:

(Get-Host).Version или $host.version

Благодаря команде $host.version | Out-GridView вы выведете результат с версией установленной PowerShell в вашей системе, в красивом отдельном окне.

Еще чуть не забыл вот такой метод:

Write-Host (get-host).Version.Major (Get-Host).Version.Minor -Separator .

Посмотреть версию PowerShell можно и простенькой командой Get-Host.

Версия PowerShell прекрасно выводится и вот таким кодом:

Get-Variable | where {$_.Name -Like ‘*version*’} | %{$_.Value}

Рейтинг
( Пока оценок нет )
Понравилась статья? Поделитесь с друзьями:
Технарь
Добавить комментарий

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