Переменные 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:

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

По выгодной цене продажа металлопроката в Санкт Петербурге в ООО "ТоргМетНева" .

Комментарии закрыты.