Powershell GCI в функции. Передайте переменные имени файла с подстановочными знаками в функцию - PullRequest
0 голосов
/ 10 апреля 2019

Я пытался передать параметры в функцию get-childitem. Кажется, это невозможно сделать. Кроме того, я не могу удалить свой пост, поэтому я просто очищаю его с базовым объяснением того, что я пытался выяснить. Кажется, я не могу передать переменные имени файла с подстановочными знаками в них. Каждый ответ здесь до сих пор не помогает мне, поскольку все, что я пробовал, генерирует файл с нулевым байтом.

Function getFilenames($facPath,$facility,[string[]]$fileIncludes) {

    gci $facPath\* -Include $fileIncludes -Recurse | 
      Select-Object @{ expression={$_.name}; label='FILENAME' },
      @{Name='FACILITY';Expression={$facility}} | 
      Export-Csv -NoTypeInformation -Path $scriptPath"\filenames.txt" -Append

  }

getFilenames $vPath "Building 1" $vFiles

Ответы [ 2 ]

0 голосов
/ 10 апреля 2019

Вы можете обновить свою функцию следующим образом. Я удалил несколько Select-Object команд, потому что вам нужна только одна.

Function getFilenames($facPath,$facility,[string[]]$fileIncludes) {

    gci $facPath -Include $fileIncludes | 
      Select-Object @{ expression={$_.name}; label='FILENAME' },
      @{Name='FACILITY';Expression={$facility}} | 
      Export-Csv -NoTypeInformation -Path "$scriptPath\filenames.txt" -Append

  }

Вы можете запустить это следующим образом:

getFilenames "c:\folder\facilities\*" "manufacturing" "ab*","cd*","ef*"

PowerShell определяет массив строк с помощью различных обозначений:

  • "string1","string2","stringx": список через запятую
  • [string[]]$stringArray: набор текста или кастинг
  • @("string1","string2","string3"): подвыражение массива

См. Об массивах для получения дополнительной информации об использовании массивов.

0 голосов
/ 10 апреля 2019

Попробуйте!

$Include=@("ab*","cd*","ef*")
Get-Childitem -Recurse -Include $Include
...