Я пытаюсь включить свой скрипт профиля powershell с помощью функции, которая позволит мне выполнять буквальный и групповой поиск присутствия функции в моем текущем сеансе терминала powershell.
В моем скрипте профиля powershell [$ env: userprofile \ Documents \ WindowsPowerShell \ Microsoft.PowerShell_profile.ps1] я создал следующую функцию.
function Get-Fnc {
#Get-ChildItem function:\ | Where-Object { $_.Name -like "$args" }
Get-ChildItem function:\$args
}
Использование закомментированной строки Get-ChildItem function:\ | Where-Object { $_.Name -like "$args" }
не работает, хотя я могу использовать ее в командной строке, например, Get-ChildItem function:\ | Where-Object { $_.Name -like "get-*" }
, она работает как положено. Использование строки без комментария Get-ChildItem function:\$args
работает как в функции сценария профиля, так и в командной строке, например, Get-ChildItem function:\get-*
.
Поиск по net и в stackoverflow, я не смог найти никаких подробностей о полученных ошибках использование выходного конвейера |
в другом командлете и / или использование командлета Where-Object внутри функций для определения того, как заставить его работать. Есть какие-нибудь идеи о том, как сделать так, чтобы выходные данные передавались по каналу, где-объект работал в функции сценария, когда известно, что то же самое работает в командной строке?
Обновление В дополнение к ответу при условии, что solutin также был возможность использовать следующие
function Get-Fnc {
$argsFncScope = $args # works because we make function scoped copy of args that flows down into Where-Object script block / stack frame
Write-Host "function scoped args assigned variable argsFncScope = $argsFncScope and count = $($argsFncScope.Count) and type = $($argsFncScope.GetType().BaseType)"
Get-ChildItem function:\ | Where-Object { $_.Name -like "$argsFncScope" }
}
Отладочный вывод
get-fnc *-env
[DBG]: PS C:\Users\myusrn\Documents\WindowsPowerShell>
function scoped args assigned variable argsFncScope = *-env and count = 1 and type = array
[DBG]: PS C:\Users\myusrn\Documents\WindowsPowerShell>
CommandType Name Version Source
----------- ---- ------- ------
Function Get-Env