Функция Powershell не будет работать - PullRequest
4 голосов
/ 22 сентября 2009

Я нашел эту функцию в моей старой папке powershell:

Function listAllPaths([string]$fromFolder,[string]$filter) {
  Get-ChildItem -Path $fromFolder -Recurse $filter | Select-Object -Property FullName
}

И хотел проверить это. Я поместил его в свой профиль, запустил Powershell и набрал следующее:

PS C:\> listAllPaths("C:\Downloads\Nemi","*.jpg")

Эта папка сделана на заказ, просто она имеет то же имя, что и папка загрузок Vista. В рассматриваемой подпапке нет файлов , но jpg, но на экране ничего не печатается. Может кто-нибудь сказать мне, что я делаю неправильно? (Потому что, вероятно, я буду делать что-то не так, я в этом уверен).

1 Ответ

8 голосов
/ 22 сентября 2009

Классическая проблема - вызывайте функции PowerShell точно так же, как вы вызываете командлеты PowerShell - с разделителями пробелов и без скобок, например ::100100

PS> listAllPaths C:\Downloads\Nemi *.jpg

Обратите внимание, что при таком вызове вам не нужны двойные кавычки вокруг аргументов. В PowerShell 2.0 обязательно используйте Set-StrictMode -version 2.0, и он поймает эту ошибку:

PS> Set-StrictMode -Version 2.0
PS> function foo($a,$b) {"$a $b"}
PS> foo(1,2)
The function or command was called as if it were a method. 
Parameters should be separated by spaces. For information about 
parameters, see the about_Parameters Help topic.
At line:1 char:4
+ foo <<<< (1,2)
    + CategoryInfo          : InvalidOperation: (:) [], RuntimeException
    + FullyQualifiedErrorId : StrictModeFunctionCallWithParens

Это правильный способ вызова этой функции PowerShell:

PS> foo 1 2
1 2

К вашему сведению, при вызове listAllPaths массив ("C: \ Downloads \ Nemi", "* .jpg") передается в ваш параметр $ fromFolder. Параметр $ filter не получает значения.

Я должен также упомянуть, что вы хотите использовать запятые и парены только при вызове методов .NET / COM / WMI.

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