首页 > 解决方案 > Powershell gci 在一个函数中。将带有通配符的文件名变量传递给函数

问题描述

我试图将参数传递给一个函数来做 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

标签: powershellpowershell-3.0powershell-4.0

解决方案


您可以将您的功能更新为以下内容。我删除了几个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"): 数组子表达式

有关使用数组的更多信息,请参阅关于数组。


推荐阅读