Поднимите свои переменные PowerShell на новый уровень

Опубликовано: 13 Марта, 2023
Поднимите свои переменные PowerShell на новый уровень

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

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

Переменные как элементы

Прежде чем я начну, мне нужно объяснить концепцию переменных как элемента. Обычно, когда вы слышите о предметах, обсуждаемых в отношении PowerShell, эти элементы являются файлами. Командлет Get-ChildItem, например, выводит список содержимого текущей папки в файловой системе, аналогично старой команде DIR.

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

3 применения переменных PowerShell следующего уровня

1. Переименование переменных

Если вы пишете сложный сценарий PowerShell и используете внешние компоненты, вы можете иногда обнаружить, что вам нужно переименовать одну или несколько переменных. Это легко сделать с помощью командлета Rename-Item.

Чтобы показать вам, как это работает, предположим, что у вас есть переменная с именем $A, и вам нужно изменить ее имя на $B. Для этого вы должны использовать эту команду:

Как упоминалось ранее, вы должны указать путь к переменной. Когда вы сделаете это, обратите внимание на двоеточие и A, добавленные к слову переменной. «A» относится к переменной, которую вы переименовываете. Microsoft странным образом решила не использовать знак доллара при обращении к переменным. Вы используете параметр NewName, чтобы указать новое имя переменной — в данном случае B.

Изображение 1432

2. Отображение всех переменных

Ранее в этой статье я объяснял, что командлеты, связанные с элементами, можно направить на переменные. Я также упомянул, что вы обычно используете командлет Get-ChildItem для отображения файлов в папке.

Однако если вы можете использовать командлеты, связанные с элементами, с переменными, то само собой разумеется, что командлет Get-ChildItem должен иметь возможность возвращать список переменных так же, как он может возвращать список файлов.

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

Изображение 3863

3. Работа с константами

Глядя на рисунок выше, вы можете обнаружить, что результат отличается от ожидаемого. В конце концов, я объявил только одну переменную $A, которую позже переименовал в $B, а появился целый список значений.

Я хочу отметить несколько вещей. На предыдущем снимке экрана вы видите переменную с именем B. Это переменная, которую я объявил ранее. Помните, что командлеты Item не используют знак доллара при работе с переменными, поэтому $B выражается как B.

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

Изображение 3864

Тот факт, что PowerShell перечисляет некоторые переменные как константы в выводе, показанном выше, означает, что вы можете создавать константы в PowerShell. Хитрость заключается в том, чтобы создать новую переменную и установить для параметра Option значение Constant.

Предположим, мы хотим создать константу с именем $C и установить для нее значение 1. В такой ситуации нам придется использовать командлет New-Variable вместо того, чтобы просто набирать $C=1. Вот как выглядит команда:

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

Изображение 3865

Последние мысли

Хотя обращение с переменной как с элементом может показаться странным, PowerShell без проблем справляется с этим. Вообще говоря, вы можете направить любой командлет, связанный с элементами, который вы используете с файловой системой, на переменные, и вам нужно указать путь командлета к переменной. В этой статье я рассказал, как переименовывать переменные, отображать все переменные и работать с константами в PowerShell. Используйте эти изящные приемы в следующий раз, когда захотите вывести использование переменных PowerShell на новый уровень!

Узнайте больше о PowerShell и подобных темах в разделах часто задаваемых вопросов и ресурсов ниже!

Часто задаваемые вопросы

Можно ли переименовать переменную, не рассматривая ее как элемент?

Да, обходным путем можно переименовать переменную другими способами. Установите новую переменную равной старой переменной (например, $B = $A), а затем удалите исходную переменную. Вы можете удалить исходную переменную с помощью командлета Remove-Variable или установить для нее значение $Null.

Не лучше ли использовать командлет New-Variable для создания переменной, а не просто устанавливать имя переменной равным значению?

Ни в одном правиле не говорится, что вы должны использовать командлет New-Variable. Однако командлет New-Variable может упростить чтение вашего кода PowerShell. Некоторые задачи, например определение константы, можно выполнить только с помощью командлета New-Variable.

Можно ли использовать командлет, связанный с элементом, для присвоения нового значения переменной?

Да, ты можешь. Командлет, который вы будете использовать, называется Set-Item. Опять же, вам нужно будет установить путь, равный переменной. Вам также нужно будет указать параметр Value и новое значение переменной. Если вы хотите присвоить $A новое значение, вы можете ввести: .

Поскольку я могу использовать командлет Remove-Item для удаления файлов, могу ли я использовать его для удаления переменных?

Если вы не настроили переменную как константу, вы можете удалить ее с помощью командлета Remove-Item. Кроме того, любая созданная вами константа сохраняется во время сеанса PowerShell.

В чем разница между переменной только для чтения и константой?

Вы не можете изменить переменную только для чтения, но вы можете удалить ее с помощью командлета Remove-Item, если вы используете параметр -Force. Однако параметр -Force не удалит константу, и константа останется на время сеанса.