Я обнаружил, что повторяюсь в сценариях powershell в некоторых случаях, когда имеет значение контекст выполнения. Отложенное раскрытие строки — один из таких случаев:
$MyString = 'The $animal says $sound.'
function MakeNoise{
param($animal, $sound)
$ExecutionContext.InvokeCommand.ExpandString($MyString)
}
PS> MakeNoise pig oink
The pig says oink.
Эта длинная строка ExpandString()
часто повторяется. Я бы предпочел, чтобы эта строка была краткой, например:
xs($MyString)
xs $MyString
$MyString | xs
Любой из них будет предпочтительнее. Мои обычные стратегии инкапсуляции в командлетах, кажется, не работают в этом случае, потому что контекст вызова ExpandString()
имеет решающее значение.
Итак, мои вопросы:
- Есть ли способ создать псевдоним для метода объекта?
- Есть ли другой способ кратко вызвать метод объекта, сохраняя при этом контекст вызова?
xs
реализован в отдельном от$Mystring | xs
модуле. 20.02.2015