Существует ли сокращенная форма для получения значений переменных с пронумерованными областями? - PullRequest
0 голосов
/ 28 марта 2010

Есть ли более короткий способ сделать это в Powershell v2.0 ?

& { $a = 1 ; & { $a = 2 ; & { get-variable -name a -scope 2 } } }

... как, например, это?:

& { $a = 1 ; & { $a = 2 ; & { $2:a } } }

Ответы [ 2 ]

2 голосов
/ 28 марта 2010

Существует несколько псевдонимов по умолчанию, один из которых gv для Get-Variable:

gv -Name a -Scope 2

Кроме того, вам не нужно явно указывать параметр -Name, так как это первый аргумент:

gv a -Scope 2

И вам не нужно выписывать полное имя параметра, и вы можете сократить его (пока оно остается однозначным):

gv a -s 2

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

2 голосов
/ 28 марта 2010

Я не верю, что есть ярлык для определения области видимости - он доступен только при использовании аргумента -scope. Однако функция может инкапсулировать работу:

function Get-ScopedVariable([string]$name, [int]$scope) {
    Get-Variable -name $name -scope ($scope + 1) # add one for the extra-scope of this function
}

Ваш пример будет сокращен до:

& { $a = 1 ; & { $a = 2 ; & { Get-ScopedVariable a 2 } } }

Затем можно назначить псевдоним функции для дальнейшего ее сокращения.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...