Переменные PowerShell
Переменные PowerShell условно можно разделить на два вида – системные и те, что созданы пользователем, все они должны начинаться со знака доллара ($). Системные переменные также делятся на те, что изменить можно, и те, значения которых менять нельзя или нежелательно, например, переменные $Null, как $True и $False являются в PowerShell статическими, и изменить их значения нельзя. С помощью командлета Test-Path можно проверить, определена ли переменная, например:
PS C:\> Test-Path Variable:MyVariable False
Список всех переменных хранится в виртуальном диске Variable:
PS C:\> dir Variable:
Переменные оболочки PowerShell создаются, объявляются и присутствуют по умолчанию в каждом сеансе работы. Они на протяжении всего текущего сеанса для всех команд, сценариев и приложений. По своему характеру их можно разделить на два типа: автоматические и переменные настроек.
Автоматические переменные – хранят в себе параметры настройки PowerShell, они сохраняются и динамически меняются самой системой, поэтому пользователь не может и не должен менять их значения. К ним, например, принадлежит $PID – идентификатор текущего процесса PowerShelI.exe
PS C:\ > $PID 3396
Переменные настроек – предназначены для хранения настроек активного пользователя. Система автоматически заполняет значения по умолчанию, а пользователь вправе изменить их на собственные, например, $MaximumHistoryCount определяет максимальное число записей в журнале сеанса (64), их можно увеличить:
PS C:\ > $MaximumHistoryCount=100
Как уже упоминалось, список переменных текущего сеанса PowerShell можно получить с помощью виртуально диска Variable:
PS C:\> dir Variable:
Оболочка PowerShell была бы неполноценной, если бы не давала пользователю возможности создавать собственные переменные, все довольно просто:
PS C:\> $а=10 PS C:\> $b=20 PS С:\> $а +$b 30
В данном случае мы создали $а со значением 10 и $b со значением 20, а в конце нашли их суму. Также доступна и такая синтаксическая конструкция:
PS C:\> dir Variable:a
Теперь давайте попробуем определить к какому типу принадлежат переменные, в PowerShell для этих целей применяются командлет Get-Member и метод GetType(). Создадим три переменные:
PS C:\> $а=100 PS C:\> $b="test" PS С:\> $c="100"
Теперь проверим их тип с помощью командлета Get-Member:
PS С:\> $a|Get-Member TypeName: System.Int32 PS С:\> $b|Get-Member TypeName: System.String PS С:\> $c|Get-Member TypeName: System.String
Теперь проверим их тип с помощью метода GetType:
PS С:\> $a.GetType().FullName System.Int32 PS С:\> $b.GetType().FullName System.String PS С:\> $c.GetType().FullName System.String
Теперь пере присвоим значения для переменной a и вновь проверим ее тип:
PS C:\> $а="new" PS С:\> $a.GetType().FullName System.String
Как видим, система автоматически сменила тип с System.Int32 на System.String. Пользователь может и самостоятельно присвоить тип переменным PowerShell, например:
PS С:\> [System.Int32]$a=10
Как уже упоминалось, система использует .NET-типы, для которых есть свои псевдонимы, что сокращает ввод информации. Так, тип System.Int32 имеет псевдоним [int], а System.String – [string].
Кроме пользовательских и переменных самой оболочки PowerShell, есть еще и так называемые переменные среды операционной системы, информация о них хранится в виртуальном диске env:
PS C:\> dir env:
Переменные среды хранят в себе переменные, созданные как системой, так и пользователем.
Советую почитать:
Опубликовано в рубрике PowerShell